首页 > 解决方案 > 模板类中嵌套类的成员函数模板

问题描述

我在 MSVC 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:首先,我认为这是由于尚未实例化带有 int 的 A 模板,但是添加带有 int 模板参数的 A 的显式实例化并没有帮助。

Obs2:在类体内定义 f inline 确实可以解决问题,但是我希望能够专门化 f。


英语不是我的主要语言,请原谅我可能犯的任何错误。

标签: c++templates

解决方案


推荐阅读