【发布时间】:2020-01-25 23:58:46
【问题描述】:
我认为以下代码可以编译,因为冲突的重载被 SFINAE 消除了。但是编译器(GCC)说:void Foo<X>::bar(Xd) const' cannot be overloaded。有没有一种简单的方法可以修复它,还是我必须专门研究整个Foo?
#include <type_traits>
struct A{};
template<typename X>
struct Foo {
template<typename Xd=X, typename = std::enable_if_t<std::is_arithmetic<Xd>::value>>
void bar() const {
}
template<typename Xd=X, typename = std::enable_if_t<std::is_same<Xd,A>::value>>
void bar() const {
}
};
int main(){}
【问题讨论】:
标签: c++ compiler-errors operator-overloading c++14 sfinae