我想阻止特定模板类的所有隐式模板实例化,以防止它被实例化到每个翻译单元中。
看来我的选择是:
- Use -fno-隐式模板在 gcc 的命令行上。这
抑制所有隐式模板实例化,这不是我想要的。我只想防止单个模板出现这种情况。
- 使用C++11“外部模板”。但这只能抑制特定的
显式实例化。我不想输入“外部”
每个潜在模板参数的 template" 行列出此
模板可以被实例化。
所以我需要介于两者之间的东西。如果有:
extern template class Foo; // suppress all implicit instantiations of Foo
(注意缺少模板参数。)有什么想法吗?
您可以使用std::enable_if
这正是通过组合来做到这一点的std::is_same
:
template <class T , typename = std::enable_if <!std::is_same<T,Foo>::value,T>::type >
class MyClass{
//...
};
现在 myClass 不会被编译Foo
type.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)