编码
template <typename T>
void foo(const T& t)
{}
template <typename T>
class A
{
template <>
friend void foo<T>(const T& t)
{}
};
给出编译错误
"defining explicit specialization ‘foo<T>’ in friend declaration friend void foo<T>(const T& t)"
当使用 gcc 和
"error C3637: 'A<int>::foo' : a friend function definition cannot be a specialization of a unction template"
在 VS2013 中编译时
我知道标准是这样说的,但是为什么呢?我想了解原因(幕后)有很多文章写着“显式专业化不能是朋友声明。”,但我不明白为什么。有任何想法吗?