VS 2013 说它不能在以下代码中专门化函数模板:
struct W { };
template <class T>
typename T::result_type
f (const W & w, T && t) {
return 0;
}
/* ... */
struct V { typedef int result_type; };
W w {};
V v {};
f (w, v);
如果我用 替换typename T::result_type
或int
替换通用引用T&&
,T&
它不会抱怨。
在我看来,上面的代码是正确的。这是编译器错误,还是我做错了什么?