中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

constexpr 指定符(C++11 起)

發布時間:2020-07-01 16:59:09 來源:網絡 閱讀:176 作者:myhaspl 欄目:編程語言

constexpr 指定符聲明可以在編譯時求得函數或變量的值。然后這些變量和函數(若給定了合適的函數參數)可用于僅允許編譯時常量表達式之處。用于對象或非靜態成員函數 (C++14 前)聲明的 constexpr 指定符隱含 const 。用于函數聲明的 constexpr 指定符或 static 成員變量 (C++17 起)隱含 inline 。

constexpr 變量必須滿足下列要求:

其類型必須是字面類型 (LiteralType) 。
它必須被立即初始化
其初始化的完整表達式,包括所有隱式轉換、構造函數調用等,都必須是常量表達式
constexpr 函數必須滿足下列要求:

它必須非虛
(C++20 前)
其返回類型必須是字面類型 (LiteralType)
其每個參數都必須是字面類型 (LiteralType)
至少存在一組參數值,使得函數的一個調用能為被求值的核心常量表達式的子表達式(對于構造函數為足以用于常量初始化器) (C++14 起)。不要求對這點的診斷。
函數體必須是被刪除或被默認化,或只含有下列內容:
空語句(平凡分號)
static_assert 聲明
不定義類或枚舉的 typedef 聲明及別名聲明
using 聲明
using 指令
恰好一條 return 語句。
(C++14 前)
函數體必須是被刪除或被默認化,或含有下列內容外的任何語句:
asm 聲明
goto 語句
擁有異于 case 和 default 標號的語句
try 塊
非字面類型的變量定義
靜態或線程存儲期變量的定義
不進行初始化的變量定義。
(C++14 起)
constexpr 構造函數必須滿足下列要求:

其每個參數都必須是字面類型 (LiteralType) 。
該類不能有虛基類
該構造函數不可有函數 try 塊
構造函數體必須被刪除或被默認化或只含有下列內容:
空語句
static_assert 聲明
不定義類或枚舉的 typedef 聲明及別名聲明
using 聲明
using 指令
(C++14 前)
構造函數體的復合語句必須滿足 constexpr 函數體的限制
(C++14 起)
對于 class 或 struct 的構造函數,每個子對象和每個非變體非 static 數據成員必須被初始化。若類是類聯合體類,對于其每個非空匿名聯合體成員,必須恰好有一個變體成員被初始化
對于非空 union 的構造函數,恰好有一個非 static 數據成員被初始化
每個被選作初始化非 static 成員和基類的構造函數必須是 constexpr 構造函數。
對于 constexpr 函數模板和類模板的 constexpr 函數成員,必須至少有一個特化滿足上述要求。其他特化仍被認為是 constexpr ,盡管常量表達式中不能出現這種函數的調用。

```c++
//
// main.cpp
//
//
// Created by myhaspl on 2018/10/24.
// myhaspl@myhaspl.com.
//

#include <iostream>
using namespace std;

int bar(){return 0;}

constexpr int foo(int a)
{
if (a <=0 )
return bar();
else
return 1;
}

int main()
{
int a1[2]={0,1};
cout<<a1[foo(5)]<<endl;
cout<<a1[foo(-1)]<<endl;
}```

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂昌县| 航空| 河东区| 宁都县| 烟台市| 汝南县| 垫江县| 诸城市| 云霄县| 凉山| 甘孜县| 柳河县| 读书| 舒城县| 萨迦县| 崇文区| 乾安县| 宿松县| 定安县| 太仆寺旗| 临颍县| 大足县| 久治县| 渭源县| 莎车县| 综艺| 博乐市| 剑阁县| 白银市| 聂荣县| 洪江市| 漳州市| 精河县| 东明县| 佳木斯市| 闻喜县| 桑日县| 黑龙江省| 武威市| 伊春市| 常宁市|