Я понимаю, что пространства имен не могут быть параметрами шаблона. См. Вопрос, шаблон, специализированный для пространства имен:
Дано:
namespace A { class Foo; class Bar; } namespace B { class Foo; class Bar; }
Я хочу создать шаблон в пространстве имен
A
илиB
, чтобы следующее:template<name> class C { name::Foo* foo; name::Bar* bar; };
Мне было интересно, почему это так. Я понимаю, что шаблоны не являются структурами, но есть ли технические ограничения для дизайна компилятора? Или существует какой-то значительный компромисс для реализации этой функциональности?