[英]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.