1
我如何獲得下面的代碼工作:朋友模板函數
錯誤:無效使用模板id的
#include <array>
#include <iostream>
template<typename T>
class MyClass;
template<typename T, size_t N>
MyClass<T> myFun(const std::array<T, N>& a);
template<typename T>
class MyClass
{
MyClass(size_t n)
{ std::cout << "Ctor with n = " << n << '\n'; }
template<size_t N>
friend MyClass<T> myFun<T, N>(const std::array<T, N>& a);
};
template<typename T, size_t N>
MyClass<T> myFun(const std::array<T, N>& a)
{
return MyClass<T>(N);
}
int main()
{
std::array<int, 3> a;
myFun(a);
return 0;
}
GCC不friend
聲明的前喜歡template<size_t N>
'myFun'在主模板好友MyClass myFun的聲明中(const std :: array & a);
並且還,在友元函數模板參數DECL要有從類的模板參數不同的名稱。即'T1'與'T' – ipmcc