此代碼使用 MSVC 編譯,但不能使用 GCC 或 Clang。
auto a = int{};
auto ua = unsigned int {};
在編譯器資源管理器上查看演示
我強烈懷疑它可能是合法的 C ,但是古老的“C 風格/帶空格的型別”和 50 種不同的 C 初始化方式之間的混合使得編譯器很難完成這項作業。
uj5u.com熱心網友回復:
根據 C 20 標準(7.6.1.4 顯式型別轉換(功能表示法)):
1 一個簡單型別說明符(9.2.9.3) 或型別名稱說明符(13.8) 后跟一個帶括號的可選運算式串列或一個花括號初始化串列(初始化器)構造一個給定初始化器的指定型別的值。如果該型別是推導的型別別的占位符,則在本子條款的其余部分,將其替換為通過多載決議為類模板推導 (12.4.2.9) 選擇的函式的回傳型別。
所以你需要寫
auto ua = unsigned {};
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495531.html
上一篇:在物件使用之前呼叫成員函式
下一篇:為什么這段代碼報告-31大于6?