【发布时间】:2016-12-08 23:45:58
【问题描述】:
我有以下课程:
template <typename T>
struct Foo {
void bar(double val);
void bar(T val);
T m_val;
};
现在的问题是,如果我实例化一个 Foo<double> 类型的对象,我会得到两个具有相同签名的重载函数。
有什么办法解决吗?
我的问题是我确实需要处理 val 类型为 double 特殊的情况。此外,非双精度类型的bar 参数没有共同的超类。
【问题讨论】:
-
当你实例化一个
Foo<double>时你想要什么行为?您希望它使用bar的定义和T作为参数,还是使用double的定义? -
@Jon McClung,感谢您的评论。我想用双倍的。
-
使用 enable_if 禁用 double 的泛型
-
@严舟好主意!
标签: c++ c++11 templates overloading