替换失败是否会禁用静态继承?

时间:2014-09-05 04:58:15

标签: c++ templates

以下无法在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

0 个答案:

没有答案