用于模板实例化的Clang / g ++选项

时间:2015-07-12 00:28:52

标签: c++ templates compilation explicit-instantiation

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

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

template Foo<int>;

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

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

1 个答案:

答案 0 :(得分:2)

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

template class Foo<int>;

(假设Foo被声明为class;如果声明为struct,则使用struct关键字代替。)