【发布时间】:2015-10-08 17:52:18
【问题描述】:
我有这样的课:
template<class T>
class A{
// lots of methods here
Something get();
};
如果 T 是特定类,我希望 Something get() 变为 const Something &get()。
首先我尝试用继承来做,但它太乱了。
我可以这样做吗,无需专门化整个 class A 并且不引入第二个模板。
【问题讨论】:
-
也许 std::enable_if 在这种情况下会帮助你?某种 SFINAE 解决方案。
-
您需要使用模板专业化。但是,您可能不必专门化整个 A。您可以在Something get()位于模板化类B中的地方有一个小技巧。您可以专门化它并让A继承它来获取函数的预期形式。
标签: c++ templates c++11 specialization