Ограничения шаблона C ++

В 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 ++.

Ответы на вопрос(9)

Ваш ответ на вопрос