class template full specialization 的成员函数定义在单独的 TU 中
Definitions of member fuction of class template full specialization in separate TUs
给定一个 class 模板,编译时间太长。在开发和调试期间,我想通过将成员函数的定义分离到单独的翻译单元中来减少编译时间。只是为了唯一的全特化(这也是为了减少编译时间)。
在 C++ 中是否可以通过将 class 模板完全特化的成员函数定义放入单独的 TU 中来分离它们?
template<> void A<smth>::f()
或 void A<smth>::f()
在 attempt 中什么也没有给出。我无法战胜link时间错误
将 class 模板的显式实例化声明(即 extern template class...
)显示(或不可见)(加上删除 void A<smth>::f()
)到定义了成员函数的 TU 中,给出也没什么。
您的显式实例化语法错误(您声明了一个未定义的特化),它应该是:
template<typename T>
void A<T>::g()
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
template void A<int>::g();
template void A<short>::g();
给定一个 class 模板,编译时间太长。在开发和调试期间,我想通过将成员函数的定义分离到单独的翻译单元中来减少编译时间。只是为了唯一的全特化(这也是为了减少编译时间)。
在 C++ 中是否可以通过将 class 模板完全特化的成员函数定义放入单独的 TU 中来分离它们?
template<> void A<smth>::f()
或 void A<smth>::f()
在 attempt 中什么也没有给出。我无法战胜link时间错误
将 class 模板的显式实例化声明(即 extern template class...
)显示(或不可见)(加上删除 void A<smth>::f()
)到定义了成员函数的 TU 中,给出也没什么。
您的显式实例化语法错误(您声明了一个未定义的特化),它应该是:
template<typename T>
void A<T>::g()
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
template void A<int>::g();
template void A<short>::g();