1. ホーム
  2. c++

テンプレート制約 C++

2023-07-11 04:41:45

質問

C#では、ジェネリックパラメータとして使用できる型に制約を課すジェネリック型を定義することができます。次の例は、ジェネリック制約の使用方法を示しています。

interface IFoo
{
}


class Foo<T> where T : IFoo
{
}

class Bar : IFoo
{
}

class Simpson
{
}

class Program
{
    static void Main(string[] args)
    {
        Foo<Bar> a = new Foo<Bar>();
        Foo<Simpson> b = new Foo<Simpson>(); // error CS0309
    }
}

C++でテンプレートのパラメータに制約を課す方法はありますか?


C++0xにはこのためのネイティブサポートがありますが、私は現在の標準C++について話しているのです。

どのように解決するのですか?

他の人が言っているように、C++0x はこれを言語に組み込んでいます。 それまでは、私がお勧めするのは Bjarne Stroustrup 's テンプレート制約のための提案 .

編集する ブースト もまた の代替となる .

Edit2: 見た目は の概念は C++0x から削除されたようです。 .