3
我有一个需要访问其模板类型的特征的通用算法。有一个特质类可以专门用于提供这些特征。私有类型的模板专精
在我的课堂中使用这个算法时,我想使用它在类中定义的私有类型。
但是,专业化只能发生在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
类?
宾果!正是我需要的:-)。谢谢。 –
@AdiShavit不客气。 :) – songyuanyao
@AdiShavit如果它解决了你的问题,你应该接受这个答案。 – Brian