[英]Template Specialization for Private Types
我有一个需要访问其模板类型特征的通用算法。 有一个 trait 类可以专门用于提供这些 trait。
在我的班级中使用此算法时,我想将它与在班级中定义的私有类型一起使用。
但是,专业化只能发生在我的类无法访问的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'
};
是否有可能以某种方式专门化具有私有类型的模板,至少在该类型可访问的范围内?
也许可以将专业化声明为friend
类?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.