【发布时间】:2019-07-23 15:16:15
【问题描述】:
我很困惑。 const auto ch = unsigned char{'p'}; 不是一个完全有效的初始化表达式吗?三个主要编译器都编译失败,错误信息几乎相同:
错误:对于函数式强制转换或类型构造,预期为 '('
用大括号替换('p') 不会改变任何事情。
但是,它确实可以在没有 signed 或 unsigned 关键字的情况下进行编译。
【问题讨论】:
-
@FrançoisAndrieux:
const auto ch = static_cast<unsigned char>('p')也是如此,但那是转换,而不是初始化。 -
using T = unsigned char; const auto ch = T{'p'};似乎有效。 -
@FrançoisAndrieux:嗯,您认为编译器在这种情况下根本无法将
unsigned char解析为单个类型名称吗? -
const auto ch = (unsigned char){'p'};?
标签: c++ c++14 language-lawyer c++17