" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ decltype 說(shuō)明符

 更新時(shí)間:2021年12月08日 09:32:07   作者:cppreference  
這篇文章主要介紹了C++ decltype 說(shuō)明符,檢查實(shí)體的聲明類(lèi)型,或表達(dá)式的類(lèi)型和值類(lèi)別。下面我們來(lái)看看文章中的具體內(nèi)容吧

1.語(yǔ)法

decltype ( 實(shí)體 )?(1)?(C++11 起)
decltype ( 表達(dá)式 )?(2)?(C++11 起)

解釋?zhuān)?br />

1) 如果實(shí)參是沒(méi)有括號(hào)的標(biāo)識(shí)表達(dá)式或沒(méi)有括號(hào)的類(lèi)成員訪問(wèn)表達(dá)式,那么 decltype 產(chǎn)生以該表達(dá)式命名的實(shí)體的類(lèi)型。如果沒(méi)有這種實(shí)體或該實(shí)參指名了一組重載函數(shù),那么程序非良構(gòu)。

  • 如果實(shí)參是指名某個(gè)結(jié)構(gòu)化綁定的沒(méi)有括號(hào)的標(biāo)識(shí)表達(dá)式,那么 decltype 產(chǎn)生其被引用類(lèi)型(在關(guān)于結(jié)構(gòu)化綁定聲明的說(shuō)明中有所描述)。
  • 如果實(shí)參是指名某個(gè)非類(lèi)型模板形參的沒(méi)有括號(hào)的標(biāo)識(shí)表達(dá)式,那么 decltype 生成該模板形參的類(lèi)型(當(dāng)該模板形參以占位符類(lèi)型聲明時(shí),類(lèi)型會(huì)先進(jìn)行任何所需的類(lèi)型推導(dǎo))。

2) 如果實(shí)參是其他類(lèi)型為 T 的任何表達(dá)式,且

  • 如果 表達(dá)式 的值類(lèi)別是亡值,將會(huì) decltype 產(chǎn)生 T&&;
  • 如果 表達(dá)式 的值類(lèi)別是左值,將會(huì) decltype 產(chǎn)生 T&;
  • 如果 表達(dá)式 的值類(lèi)別是純右值,將會(huì) decltype 產(chǎn)生 T。

如果 表達(dá)式 是返回類(lèi)類(lèi)型純右值的函數(shù)調(diào)用,或是右操作數(shù)為這種函數(shù)調(diào)用的逗號(hào)表達(dá)式,那么不會(huì)對(duì)該純右值引入臨時(shí)量。

如果 表達(dá)式 是除了(可帶括號(hào)的)立即調(diào)用以外的 (C++20 起)純右值,那么不會(huì)從該純右值實(shí)質(zhì)化臨時(shí)對(duì)象:即這種純右值沒(méi)有結(jié)果對(duì)象。

該類(lèi)型不需要是完整類(lèi)型或擁有可用的析構(gòu)函數(shù),而且類(lèi)型可以是抽象的。此規(guī)則不適用于其子表達(dá)式:decltype(f(g())) 中,g() 必須有完整類(lèi)型,但 f() 不必。

注意:

  • 如果對(duì)象的名字帶有括號(hào),那么它會(huì)被當(dāng)做通常的左值表達(dá)式,從而 decltype(x) 和 decltype((x)) 通常是不同的類(lèi)型。
  • 在難以或不可能以標(biāo)準(zhǔn)寫(xiě)法進(jìn)行聲明的類(lèi)型時(shí),decltype 很有用,例如 lambda 相關(guān)類(lèi)型或依賴(lài)于模板形參的類(lèi)型。

2.關(guān)鍵詞decltype

示例:

#include <iostream>
#include <type_traits>
 
struct A { double x; };
const A* a;
 
decltype(a->x) y;       // y 的類(lèi)型是 double(其聲明類(lèi)型)
decltype((a->x)) z = y; // z 的類(lèi)型是 const double&(左值表達(dá)式)
 
template<typename T, typename U>
auto add(T t, U u) -> decltype(t + u) // 返回類(lèi)型依賴(lài)于模板形參
{                                     // C++14 開(kāi)始可以推導(dǎo)返回類(lèi)型
    return t+u;
}
 
int main() 
{
    int i = 33;
    decltype(i) j = i * 2;
 
    std::cout << "i = " << i << ", "
              << "j = " << j << '\n';
 
    std::cout << "i 和 j 的類(lèi)型相同嗎?"
              << (std::is_same_v<decltype(i), decltype(j)> ? "相同" : "不同") << '\n';
 
    auto f = [](int a, int b) -> int
    {
        return a * b;
    };
 
    decltype(f) g = f; // lambda 的類(lèi)型是獨(dú)有且無(wú)名的
    i = f(2, 2);
    j = g(3, 3);
 
    std::cout << "i = " << i << ", "
              << "j = " << j << '\n';
}

輸出:

i 和 j 的類(lèi)型相同嗎?相同
i = 33, j = 66
i = 4, j = 9

到此這篇關(guān)于C++ decltype 說(shuō)明符的文章就介紹到這了,更多相關(guān)decltype 說(shuō)明符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ clock()解析如何使用時(shí)鐘計(jì)時(shí)的應(yīng)用

    C++ clock()解析如何使用時(shí)鐘計(jì)時(shí)的應(yīng)用

    本篇文章是對(duì)c++中的clock()函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C++中的常對(duì)象與常對(duì)象成員詳解

    C++中的常對(duì)象與常對(duì)象成員詳解

    常成員函數(shù)可以訪問(wèn)常對(duì)象中的數(shù)據(jù)成員,但仍然不允許修改常對(duì)象中數(shù)據(jù)成員的值。有時(shí)在編程時(shí)有要求,一定要修改常對(duì)象成員中的某個(gè)數(shù)據(jù)成員的值(例如類(lèi)中有一個(gè)用于計(jì)數(shù)的變量count,其值應(yīng)當(dāng)不能變化)
    2013-10-10
  • C語(yǔ)言中g(shù)etchar()與putchar()函數(shù)詳解

    C語(yǔ)言中g(shù)etchar()與putchar()函數(shù)詳解

    本文主要介紹了C語(yǔ)言中g(shù)etchar()與putchar()函數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 淺析C語(yǔ)言位域和位段

    淺析C語(yǔ)言位域和位段

    以下是對(duì)C語(yǔ)言中的位域和位段進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • C++11中l(wèi)onglong超長(zhǎng)整型和nullptr初始化空指針

    C++11中l(wèi)onglong超長(zhǎng)整型和nullptr初始化空指針

    本文介紹?C++11?標(biāo)準(zhǔn)中新添加的?long?long?超長(zhǎng)整型和?nullptr?初始化空指針,在?C++11?標(biāo)準(zhǔn)下,相比?NULL?和?0,使用?nullptr?初始化空指針可以令我們編寫(xiě)的程序更加健壯,本文結(jié)合示例代碼給大家詳細(xì)講解,需要的朋友跟隨小編一起看看吧
    2022-12-12
  • C++編程指向成員的指針以及this指針的基本使用指南

    C++編程指向成員的指針以及this指針的基本使用指南

    這篇文章主要介紹了C++編程指向成員的指針以及this指針的基本使用指南,與C語(yǔ)言一樣,存儲(chǔ)的數(shù)值被解釋成為內(nèi)存里的一個(gè)地址,需要的朋友可以參考下
    2016-01-01
  • C語(yǔ)言 變量詳解及示例代碼

    C語(yǔ)言 變量詳解及示例代碼

    本文主要介紹C語(yǔ)言 變量,這里整理了C語(yǔ)言 變量的基礎(chǔ)知識(shí),并附有示例代碼和詳細(xì)講解,希望能幫助學(xué)習(xí)C語(yǔ)言的朋友
    2016-08-08
  • 詳解C語(yǔ)言實(shí)現(xiàn)推箱子的基本功能

    詳解C語(yǔ)言實(shí)現(xiàn)推箱子的基本功能

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)推箱子的基本功能的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C++實(shí)現(xiàn)簡(jiǎn)易的五子棋小游戲

    C++實(shí)現(xiàn)簡(jiǎn)易的五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)易的五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語(yǔ)言文件隨機(jī)讀寫(xiě)的完全指南

    C語(yǔ)言文件隨機(jī)讀寫(xiě)的完全指南

    本文詳細(xì)介紹了C語(yǔ)言中實(shí)現(xiàn)文件隨機(jī)讀寫(xiě)的關(guān)鍵函數(shù)(fseek, ftell, rewind)及其應(yīng)用,通過(guò)移動(dòng)文件光標(biāo),隨機(jī)讀寫(xiě)允許直接訪問(wèn)文件的任意位置,適用于數(shù)據(jù)庫(kù)、日志文件等場(chǎng)景,需要的朋友可以參考下
    2025-10-10

最新評(píng)論

鄂温| 夏河县| 抚顺市| 昭觉县| 凌海市| 敖汉旗| 平顶山市| 九寨沟县| 高唐县| 聂拉木县| 南丰县| 山丹县| 彭泽县| 德庆县| 香格里拉县| 南乐县| 平利县| 定兴县| 平陆县| 当阳市| 登封市| 神农架林区| 庆元县| 青州市| 弋阳县| 施秉县| 汨罗市| 交城县| 会昌县| 惠东县| 瑞金市| 兰坪| 诏安县| 马鞍山市| 衡东县| 鄂伦春自治旗| 唐山市| 新营市| 于田县| 湛江市| 托克逊县|