Template Friend Function of a Template Class(Friend with More Parameters)
Template Friend Function of a Template Class (Friend with More Parameters)
我无法让它工作:
template<std::size_t s, typename T>
class A;
template<std::size_t s, typename T, typename U>
A<s, T> operator *(U const lhs, A<s, T> const& rhs);
template<std::size_t s, typename T>
class A
{
// Blabla
template<typename U>
friend A<s, T> operator * <>(U const lhs, A<s, T> const& rhs);
};
编译失败,出现以下错误消息:
invalid use of template-id 'operator * <>' in declaration of primary template.
由于多了一个模板参数(相对于模板class参数),似乎不需要在函数名后面加上<>
。
总之,这对我来说效果很好:
template<std::size_t s, typename T>
class A;
template<std::size_t s, typename T, typename U>
A<s, T> operator *(U const lhs, A<s, T> const& rhs);
template<std::size_t s, typename T>
class A
{
// Blabla
template<typename U>
friend A<s, T> operator *(U const lhs, A<s, T> const& rhs);
};
template<std::size_t s, typename T, typename U>
A<s, T> operator *(U const lhs, A<s, T> const& rhs)
{
//BlaBla
}
我无法让它工作:
template<std::size_t s, typename T>
class A;
template<std::size_t s, typename T, typename U>
A<s, T> operator *(U const lhs, A<s, T> const& rhs);
template<std::size_t s, typename T>
class A
{
// Blabla
template<typename U>
friend A<s, T> operator * <>(U const lhs, A<s, T> const& rhs);
};
编译失败,出现以下错误消息:
invalid use of template-id 'operator * <>' in declaration of primary template.
由于多了一个模板参数(相对于模板class参数),似乎不需要在函数名后面加上<>
。
总之,这对我来说效果很好:
template<std::size_t s, typename T>
class A;
template<std::size_t s, typename T, typename U>
A<s, T> operator *(U const lhs, A<s, T> const& rhs);
template<std::size_t s, typename T>
class A
{
// Blabla
template<typename U>
friend A<s, T> operator *(U const lhs, A<s, T> const& rhs);
};
template<std::size_t s, typename T, typename U>
A<s, T> operator *(U const lhs, A<s, T> const& rhs)
{
//BlaBla
}