Я возился с шаблонами в MSV C 2019 и обнаружил следующую ситуацию:
template <class T>
class A {
struct B;
}
template <>
struct A<int>::B {
template <class U>
void f(U u);
}
template <class U>
void A<int>::B::f(U u) {
}
int main() {
return 0;
}
, которая вызывает следующую ошибку компилятора:
C2244 не может сопоставить определение функции в существующее объявление
Мой вопрос: могу ли я иметь шаблон класса с вложенной структурой, а затем определить эту структуру только для одной специализации этого включающего класса, чтобы структура имела шаблон функция-член?
Obs1: Во-первых, я думал, что это связано с тем, что шаблон A с int еще не создан, но добавление явного экземпляра A с параметром шаблона int не помогает. Obs2: определение встроенного f внутри тела класса действительно решает проблему, однако я хочу специализироваться на f.
английский sh не является моим основным языком, простите меня за любые ошибки, которые я мог совершить.