我有一个通用算法需要访问其模板类型的特性。可以专门提供这些特性的特征类。
在我的类中使用此算法时,我想将其与类内定义的私有类型一起使用。
然而,只有在
在我的类中使用此算法时,我想将其与类内定义的私有类型一起使用。
然而,只有在
namespace
或全局范围内进行专门化,而我的类则无法访问。class A
{
struct Secret
{};
};
template <typename T> struct Trait {};
// Inaccessible type ----vvvvvvvvv
template <> struct Trait<A::Secret> // Specialize for PRIVATE type A::Secret
{
A::Secret magic_value() { return{}; } // ERROR: 'A::Secret': cannot access private struct declared in class 'A'
};
在某些可访问此私有类型的作用域中,是否可能以某种方式专门化具有私有类型的模板?
也许可以将专门化声明为友元类?