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
关键字。
我正在寻找 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
关键字。