我有以下代码无法在 VC2010 上编译:
#include <type_traits>
using namespace std;
template <class C>
typename enable_if<true, C>::type
foo()
{ return C(); }
template <>
bool
foo()
{ return true; } // error C2785: 'enable_if<true,_Type>::type foo(void)'
// and 'bool foo(void)' have different return types
int main()
{
auto a = foo<int>();
auto b = foo<bool>();
}
错误消息似乎是错误的,因为第一个版本的foo()
功能似乎与template <class C> C foo();
愉快地编译的相同。
有没有办法混合匹配启用的功能模板和显式模板专业化?