以下无法在GCC 4.8.1
下编译:
#include <type_traits>
class A
{
public:
template <typename... Args>
void foo(Args&&...)
{
}
};
class B : public A
{
public:
template <typename T>
auto foo(T&& t) -> typename std::enable_if<std::is_same<T, double>::value, void>::type
{
}
};
main()
{
B b;
b.foo(1.0);
b.foo("string"); -> compiler error
}
编译错误是:
main.cpp: In function ‘int main()’: main.cpp:26:19: error: no matching function for call to ‘B::foo(const char [7])’ b.foo("string");
为什么第二次拨打foo()
的电话不能决定拨打A::foo
?