【发布时间】:2014-11-15 09:08:15
【问题描述】:
我希望能够做这样的事情:
template <typename template_type>
class awesome_class{
public:
void some_function(void){
// if (template_type == type_a)
cout << "I am of type_a and doing type_a specific methods";
// endif
cout << "I am not of type_a and doing my normal methods";
}
}
我基本上想扩展一个模板类,以便如果它是包含特定成员变量的类型,那么运行一些可能由于成员变量而优化的代码,但如果它不是那种类型,那么就忽略那段代码。
这在 C++ 中可行吗?还是我完全错了?
编辑:我专业化这些功能基本上需要我对类中的几乎每个功能都这样做。到那时,我还不如只为所讨论的类型创建另一个专门的类。再次感谢您,学到了一些新的有价值的东西,可能会在其他情况下派上用场!
【问题讨论】:
-
您可能需要不同的技术(继承),但总的来说这是可能的。看看
std::enable:if<>。 -
@πάνταῥεῖ 太复杂了。只专注于一个功能。
标签: c++ templates c++11 metaprogramming template-meta-programming