假设我有这样的代码:
template <class T>
class Something{
public:
int func1();
int func2();
T t;
int n = 0;
};
template <class T>
int Something<T>::func1(){
return t.value() * n;
}
template <class T>
int Something<T>::func2(){
return n;
}
在这种情况下,Something::func2()
它实际上并不依赖于模板参数T,因此可以将其编译到目标文件中,而不必每次都重新编译(这与编译器相关,并且可以为真,也可以不为真)。
其次,您仍然需要输入template <class T> int Something<T>::func2()
。
有没有一种方法可以简化样板代码?
在这种情况下,Something :: func2()实际上并不依赖于模板参数T,因此可以将其编译到目标文件中,而不必每次都重新编译(这与编译器相关,并且可以为真,也可以不为真)。
否。func2是类的方法,并且由于Something<int>
和Something<double>
是两个不同的类,因此应编译其代码。
您可以做的是将类中的方法提取到单独的方法或基类中,但是总的来说,我认为您不应该这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句