Tag: 专门化

规避模板专业化

假设我是某个模板库( CTL )的用户,它定义了一个名为Hector的模板 template <class T> class Hector {…}; 而在它的文档中,它提供了关于Hector模板行为的许多保证。 但是,它也定义了一个特定types的专业化Cool template <> class Hector<Cool> {….}; 专业化的目的是Hector更优化的实施,但不幸的是,由于这种优化, Hector许多保证被违反。 目前我真的不需要优化,我宁愿保留Hector所有保证。 有什么办法可以在不改变库代码的情况下( CTL是一个非常值得尊敬的库,你知道),规避专业化? 任何方式呢? 也许写一些包装? 什么? 我只是希望编译器以正常的,非优化的方式为Hector<Cool>生成代码,并具有所有的保证。

“template <>”vs“模板”没有括号 – 有什么区别?

假设我已经声明: template <typename T> void foo(T& t); 现在,有什么区别 template <> void foo<int>(int& t); 和 template void foo<int>(int& t); 语义? 模板没有括号和模板与空括号有其他语境中的其他语义吗? 相关: 如何强制C ++模板的特定实例实例化?

C ++函数模板部分专业化?

我知道下面的代码是一个类的部分专业化: template <typename T1, typename T2> class MyClass { … }; // partial specialization: both template parameters have same type template <typename T> class MyClass<T,T> { … }; 另外我知道C ++不允许函数模板局部特化(只允许满)。 但是,我的代码意味着我已经部分专门化我的函数模板为一个/相同types的参数? 因为它适用于Microsoft Visual Studio 2010 Express! 如果不是,那么你能否解释一下部分专业化的概念? #include <iostream> using std::cin; using std::cout; using std::endl; template <typename T1, typename T2> inline T1 max (T1 const& […]