【发布时间】:2016-04-13 12:15:31
【问题描述】:
为什么第二个函数不能匹配类定义中的模板??
Class C {
template <typename T, typename T2 = T>
T val() const;
};
template <>
std::string C::val() const {
//OK
}
template <typename T, typename std::enable_if<std::is_arithmetic<T>::value>::type>
T C::val() const {
//Not OK
}
编辑: 这是我想要实现的目标的概述。基本上我正在编写一个函数来解析和返回基于模板类型的对象。我有一些自己定义的类,即我必须解析它们的成员。我还需要解析数字类型和字符串。所以我为我定义的每个类都写了一个专门的版本。解析为数字类型并返回给定类型的版本(当然我必须确保给定类型是数字,因此启用 if)
【问题讨论】:
-
你在写c++?从未见过“Class”,不需要';'在类定义结束时?你能给我们一个sscce.org吗?
-
@Klaus 我为我的问题添加了一些描述。
-
@mkmostafa 看看 sfinae 机制