#include <stdio.h>
template<typename T, int N>
class A
{
public:
void func();
};
template<typename T, int N>
void A<int, N>::func()
{
printf("%d\n", N);
}
int main()
{
A<int, 3> a;
a.func();
return 0;
}
当我尝试编译这段代码时,g++ 给出了这些错误:
test.cpp:10:22: error: invalid use of incomplete type ‘class A<int, N>’
test.cpp:4:7: error: declaration of ‘class A<int, N>’
只有当 A::func 根本没有专门化并且函数也专门用于 N 时,我才设法编译它。
我如何将 A::func 专门用于 T 并访问 N(它应该可以是任何值)呢?