91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

昌都县| 抚松县| 漾濞| 大名县| 波密县| 南岸区| 隆安县| 开封市| 丰宁| 通山县| 罗城| 西贡区| 黄山市| 北海市| 河北省| 铁岭市| 龙岩市| 盐边县| 武胜县| 望谟县| 临沧市| 贵南县| 镇原县| 威宁| 波密县| 墨脱县| 扶绥县| 湛江市| 萍乡市| 耿马| 个旧市| 原阳县| 临汾市| 高陵县| 肥东县| 南宫市| 蓝山县| 新和县| 东台市| 南澳县| 且末县|