Clang/g++ 模板实例化选项

Clang/g++ options for template instantiation

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

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

template Foo<int>;

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

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

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

template class Foo<int>;

(假设 Foo 被声明为 class;如果它被声明为 struct,您将改用 struct 关键字。