1
我有这样一个全局函数:声明一个模板函数作为朋友
namespace X
{
namespace Y
{
template <R, ...T>
R foo(T&&... args)
{
R r(args...);
return r;
}
}
}
然后在另一个类A
,我想声明这个功能foo
为A
朋友。所以我做:
class A
{
template <R, ...T>
friend R X::Y::foo(T&&... args);
A(int x, int y){}
};
现在,当我打电话X::Y::foo<A>(4, 5)
它失败,错误来编译FOO不能访问的A
的私有构造。我无法理解错误,我该如何正确地声明foo
作为A
的朋友?
在此先感谢。
这是真码吗? – 2013-05-03 14:41:55
尝试'朋友R X :: Y :: foo(T &&...);'。 –
2013-05-03 14:44:20
这是Visual Studio 2012 CTP中的一个错误,将它报告给Microsoft,他们已经在内部修复了它。 – Aarkan 2013-05-30 16:53:46