簡體   English   中英

default_delete的部分專業化

[英]Partial Specialization for default_delete

我想為從MyBaseClass派生的所有對象專門化default_delete <_Ty>。 這是我最好的嘗試:

template <typename T>
struct default_delete<typename enable_if<is_base_of<MyBaseClass, T>::value, T>::true_type>
{
    ...
};

編譯器似乎無法識別我的類型參數'T'正在被使用,這是可以理解的,因為它是'typename'關鍵字的'下游'。 我正在努力實現的目標是什么?

正如0x499602D2在注釋中所述,沒有額外的專用模板參數是不可能的。 您可以使用自己的刪除器,如下所示:

template <typename T, typename Enable = void>
struct my_default_delete : public std::default_delete<T> {}; // default to std::default_delete<T>

template <typename T>
struct my_default_delete<T, typename std::enable_if<std::is_base_of<MyBaseClass, T>::value>::type>
{
    void operator() (T* ) { /* Your specific implementation */ }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM