У меня есть сценарий, в котором есть шаблонный класс
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.
Спасибо за любую помощь в этом.