В С# мы можем определить общий тип, который накладывает ограничения на типы, которые могут использоваться как общий параметр. Следующий пример иллюстрирует использование общих ограничений:
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
}
}
Есть ли способ, которым мы можем наложить ограничения для параметров шаблона в С++.
С++ 0x имеет встроенную поддержку для этого, но я говорю о текущем стандарте С++.