我正在寻找g ++ / clang ++上的编译器选项来控制显式实例化中方法的实例化。
假设我有一个带有一些显式实例化的classtemplate Foo<T>
template Foo<int>;
我想启用所有公共方法的实例化。这似乎不是默认设置,因为我必须为所有成员添加手动实例化以避免链接错误;
template void Foo<int>:DoStuff(int);
template int Foo<int>:GetSomeStuff();
答案 0 :(得分:2)
您可以单独实例化每个方法,也可以为类实例化所有方法。看来你想要做后者,但你尝试的符号是错误的。正确的是:
template class Foo<int>;
(假设Foo
被声明为class
;如果声明为struct
,则使用struct
关键字代替。)