У меня есть сценарий, в котором есть шаблон класса
template<typename X, typename Y>
class Foo
{
typedef Y::NestedType Bar;
int A (Bar thing);
void B();
int C(X that);
// other stuff
};
и затем я бы хотел, чтобы метод A () имел другое поведение, когда X является данным типом (но B и C могут оставаться прежними, а в реальном коде фактически есть около 10 других методов, некоторые из которых довольно длительный и подверженный частым изменениям .. поэтому я бы предпочел не делать специализацию для полного класса, а копировать и вставлять полную реализацию класса)
Я продолжил и написал:
template<typename T>
int Foo<MyType, T>::A(Bar thing);
но мой компилятор (clang 163.7.1) отказался даже рассматривать это как шаблонную специализацию любого рода.
Есть ли какая-то синтаксическая ошибка, скрытая в том, как я написал код, или этот стиль кодирования недопустим в C ++? К сожалению, даже если другие компиляторы поддерживают эту идиому, моя компания застряла с clang.
Спасибо за любую помощь в этом.