色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++17引入的一個新特性void_t簡析

C語言編程 ? 來源:程序喵大人 ? 2023-03-06 09:37 ? 次閱讀

最近發現了一個有意思的特性:void_t。

void_t是C++17引入的一個新特性,它的定義很簡單(有些編譯器的實現可能不是這樣,但也大體類似):

template< class... >
using void_t = void;

看著它很簡單,但它搭配SFINAE卻可以在模板元編程中發揮巨大作用。

比如在編譯期判斷類是否有某個類型using:

template >
struct has_type : std::false_type {};


template 
struct has_type> : std::true_type {};

比如判斷是否有某個成員:

template >
struct has_a_member : std::false_type {};


template 
struct has_a_member().a)>> : std::true_type {};

比如判斷某個類是否可迭代:

template 
constexpr bool is_iterable{};


template 
constexpr bool is_iterable().begin()), decltype(std::declval().end())>> = true;

比如判斷某個類是否有某個函數:

template 
struct has_hello_func : std::false_type {};


template 
struct has_hello_func().hello())>> : std::true_type {};

測試結果:

struct HasType {
  typedef int type;
};
struct NHasType {
  int hello;
};


struct Hasa {
  int a;
};
struct NHasa {
  int b;
};


struct HasHello {
  void hello();
};
struct NoHasHello {};


int main() {
  std::cout << has_type::value << '
';   // 1
  std::cout << has_type::value << '
';  // 0


  std::cout << has_a_member::value << '
';   // 1
  std::cout << has_a_member::value << '
';  // 0


  std::cout << has_hello_func::value << '
';    // 1
  std::cout << has_hello_func::value << '
';  // 0


  std::cout << is_iterable> << '
';  // 1
  std::cout << is_iterable << '
';               // 0
}

它的原理其實就是利用SFINAE和模板優先找特化去匹配的特性,估計大家應該看示例代碼就能明白。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編譯器
    +關注

    關注

    1

    文章

    1640

    瀏覽量

    49223
  • C++語言
    +關注

    關注

    0

    文章

    147

    瀏覽量

    7016

原文標題:C++17一個很冷門很有意思的新特性

文章出處:【微信號:C語言編程,微信公眾號:C語言編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    新能源電池產業鏈及投資機會-磷酸亞鐵鋰

    新能源電池產業鏈及投資機會-磷酸亞鐵鋰  、前言
    發表于 12-25 09:34 ?995次閱讀

    35GUI的例子,由

    35GUI的例子,由繁35GUI的例子,由繁,文件里有例子說明以及使用幫助
    發表于 06-17 18:30

    【設計技巧】rtos的核心原理

    rtos的核心原理rtos全稱real-time operating system(實時操作系統),我來簡單分析下:我們都知道,c語句中調用
    發表于 07-23 08:00

    OpenHarmony智慧設備開發-芯片模組T507

    降噪,自動調色系統和梯形校正模塊可以提供提供流暢的用戶體驗和專業的視覺效果。 典型應用場景: 工業控制、智能駕艙、智慧家居、智慧電力、在線教育等。 、*附件:OpenHarmony智慧設備開發-芯片模組T507.docx
    發表于 05-11 16:34

    PCB線路板電鍍銅工藝

    PCB線路板電鍍銅工藝   .電鍍工藝的分類:   酸性光亮銅電鍍電鍍鎳/金電鍍錫   二.工藝流程:
    發表于 11-17 14:01 ?4047次閱讀

    EPON技術

    EPON技術 EPON是新技術,用于保證提供高品質與高帶寬利用率的應用。   
    發表于 01-22 10:43 ?884次閱讀

    鼠標HID例程(中)

    鼠標 HID 例程 緊接《鼠標 HID 例程(上)》文,繼續向大家介紹鼠 標 HID 例程的未完的內容。
    發表于 07-26 15:18 ?0次下載

    C++17 STL標準庫學習教材電子書免費下載

    C++11,C++14和C++17標準為C++添加了許多新特性。當前的C++已經和10年前的
    發表于 02-28 08:00 ?8次下載
    <b class='flag-5'>C++17</b> STL標準庫學習教材電子書免費下載

    5G AAU 功放控制和監測模塊

    5G AAU 功放控制和監測模塊
    發表于 10-28 12:00 ?2次下載
    5G AAU 功放控制和監測模塊<b class='flag-5'>簡</b><b class='flag-5'>析</b>

    如何理解C++中的void?

    首先void*中的void代表任意的數據類型,"星號"代表指針,所以其就是
    的頭像 發表于 03-30 15:01 ?4278次閱讀
    如何理解<b class='flag-5'>C</b>++中的<b class='flag-5'>void</b>?

    c++入門后如何進階

    C++11 是下一個 C++ 標準,但我們通常稱之為現代 C++?,F代 C++ 也包括了 C++
    發表于 07-21 08:56 ?359次閱讀
    <b class='flag-5'>c</b>++入門后如何進階

    a17和a16的參數區別

    哪些重要的區別呢?本文將一一探討。 1. 內核改進 C++17引入些內核改進,其中最顯著的是對字符串的內存使用的優化。在C++16的版中,字符串引用傳遞時,會發生大量的無效副本拷貝
    的頭像 發表于 08-16 11:47 ?1262次閱讀

    AFE8092幀同步特性

    AFE8092幀同步特性
    的頭像 發表于 08-24 13:37 ?682次閱讀
    AFE8092幀同步<b class='flag-5'>特性</b><b class='flag-5'>簡</b><b class='flag-5'>析</b>

    C++ invoke與function的區別在哪?

    invoke是C++17標準引入函數模板,用來調用可調用對象(Callable Object,如函數指針、函數對象、成員函數指針等)并返回結果。
    的頭像 發表于 09-04 09:11 ?851次閱讀
    <b class='flag-5'>C</b>++ invoke與function的區別在哪?

    藍牙5.4的幾個新特性

    前述文章《藍牙5.4引入PAwR,電子價簽迎來新機遇》中我們介紹了藍牙5.4的PAwR特性,該特性引入使得電子價簽領域迎來了新的機遇,但其實藍牙5.4
    的頭像 發表于 10-26 17:18 ?3962次閱讀
    藍牙5.4的幾個新<b class='flag-5'>特性</b>
    主站蜘蛛池模板: 国产精片久久久久久婷婷| 色尼玛亚洲| 最近中文字幕免费高清MV视频6 | 一本大道无码AV天堂欧美| 久热久热精品在线观看| 亚洲欧洲日韩国产一区二区三区 | 99成人在线| 使劲别停好大好深好爽动态图| YELLOW视频直播在线观看| 欧美一级黄色影院| 国产精品第1页| 中文字幕乱码一区久久麻豆樱花| 日本护士在线观看| 黄色三级在线| 扒开老师大腿猛进AAA片软件| 性肥胖BWBWBW| 男人和女人全黄一级毛片| 99免费观看视频| 午夜看片a福利在线观看| 国产黄大片在线视频| 中文无码有码亚洲 欧美| 视频一区国产第一页| 快播看黄片| 国产午夜免费视频片夜色| 亚洲国产在线精品国偷产拍| 久久亚洲国产精品亚洲| 国产成人亚洲精品老王| 做你的爱人BD日本| 亚洲AV香蕉一区区二区三区蜜桃| 女人高潮特级毛片| 久久99国产综合精品AV蜜桃| 俄罗斯女肥臀大屁BBW| 91精品国产色综合久久| 亚洲九九视频| 丝瓜涩涩屋黄瓜香蕉丝瓜| 美女屁股软件| 国偷自产视频一区二区99 | 亚洲精品伊人久久久久| 日本免费一区二区三区最新vr | 7723日本高清完整版在线观看| 亚洲高清无码在线 视频|