C++概念:檢查是否從模板模板中派生出未知模板參數(shù)

是否有一種方法使用C++概念來要求類是從模板化的類派生的,模板的模板參數(shù)又是來自另一個模板類的派生類。

Example:

template <class T>
class A{};

template <class T>
class B{};

class X{};
class Y : public A<X> {};

class Z : public B<Y> {};

我怎樣才能簽入BTstd::is_base_of<A<X>,T>形式的std::is_base_of<A<X>,T>而不指定X是什么?我不想將X添加到B的模板參數(shù)列表中,因?yàn)槲也幌敫?code>B派生自的每個實(shí)例的代碼(例如,class Z的最后一行)。

? 最佳回答:

如果你想特別檢查A的專業(yè)性,這并不太難。

template <class C>
concept A_ = requires(C c) {
    // IILE, that only binds to A<...> specialisations
    // Including classes derived from them
    []<typename X>(A<X>&){}(c);
};

lambda基本上只是一個函數(shù)的簡寫,它被重載以接受A專門化。從這些專業(yè)中衍生出來的課程也算在內(nèi)。我們用我們正在檢查的類型的參數(shù)調(diào)用lambda。。。根據(jù)調(diào)用是否有效(參數(shù)是否被接受),該約束為true或false。

然后,插上電源:

template <A_ T>
class B{};

這里是現(xiàn)場直播。

主站蜘蛛池模板: 精品一区二区三区四区在线| 伦理一区二区三区| 免费萌白酱国产一区二区三区| 国产免费一区二区三区不卡| 无码丰满熟妇浪潮一区二区AV| 国产日韩一区二区三区在线观看| 日本一区免费电影| 亚洲一区二区久久| 色老板在线视频一区二区| 免费一区二区三区四区五区| 国产精品一区视频| 亚洲男女一区二区三区| 久久无码人妻一区二区三区 | 福利一区二区视频| 日韩精品一区二区三区毛片| 精品国产一区二区三区不卡| 日韩免费无码视频一区二区三区| 中文字幕一区二区三区永久 | 国产精华液一区二区区别大吗| 福利电影一区二区| 日韩精品无码久久一区二区三| 福利国产微拍广场一区视频在线| 国产精品视频一区麻豆| 亚洲视频一区二区三区四区| 亚洲香蕉久久一区二区| 亚洲国产成人久久一区二区三区| AV无码精品一区二区三区| 亚洲av无码片区一区二区三区| 无码人妻久久一区二区三区免费| 国产在线观看一区精品| 偷拍精品视频一区二区三区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产免费一区二区视频| 国产在线视频一区二区三区98| 久久成人国产精品一区二区| 精品无码成人片一区二区| 国产免费一区二区三区VR| 一区二区三区久久精品| 精品福利一区二区三| 久久精品无码一区二区WWW| 九九无码人妻一区二区三区|