1

我正在寻找 g++/clang++ 上的编译器选项来控制显式实例化中方法的实例化。

假设我有一个Foo<T>带有一些显式实例化的类模板

template Foo<int>;

我想启用所有公共方法的实例化。这似乎不是默认设置,因为我必须为所有成员添加手动实例化以避免链接错误;

template void Foo<int>:DoStuff(int);
template int Foo<int>:GetSomeStuff();
4

1 回答 1

2

您可以单独实例化每个方法,也可以为类实例化所有方法。似乎你想做后者,但你尝试的符号是错误的。正确的是这样的:

template class Foo<int>;

(假设Foo被声明为class; 如果它被声明为 astruct你会使用struct关键字代替)。

于 2015-07-12T00:38:23.060 回答