Scott Meyers发表了他的下一本书EC ++ 11的内容和状态 。 他写道,书中的一个项目可能是“避免函数签名中的std :: enable_if”。 std::enable_if可以用作函数参数,作为返回types或作为类模板或函数模板参数来有条件地从重载parsing中移除函数或类。 在这个问题中,所有三个解决scheme都显示 作为函数参数: template<typename T> struct Check1 { template<typename U = T> U read(typename std::enable_if< std::is_same<U, int>::value >::type* = 0) { return 42; } template<typename U = T> U read(typename std::enable_if< std::is_same<U, double>::value >::type* = 0) { return 3.14; } }; 作为模板参数: template<typename T> struct Check2 { […]