#include <type_traits>
struct A{};
struct B{};
template <typename T>
struct Foo
{
    typename std::enable_if<std::is_same<T, A>::value>::type
    bar()
    {}
    typename std::enable_if<std::is_same<T, B>::value>::type
    bar()
    {}
};
错误信息:
14:5: error: 'typename std::enable_if<std::is_same<T, B>::value>::type Foo<T>::bar()' cannot be overloaded 10:5: 
error: with 'typename std::enable_if<std::is_same<T, A>::value>::type Foo<T>::bar()'
来源 cpp.sh。我想都是 typename std::enable_if<std::is_same<T,?>::value>::type 无法同时生效。
编辑
对于后人来说,这是基于@ KerrekSB答案的编辑 - SFINAE仅适用于推导出的模板参数
#include <type_traits>
struct A{};
struct B{};
template<typename T>
struct Foo
{
    template<typename U = T>
    typename std::enable_if<std::is_same<U,A>::value>::type
    bar()
    {
    }
    template<typename U = T>
    typename std::enable_if<std::is_same<U,B>::value>::type
    bar()
    {
    }
};
int main()
{
};