clang编译器会为下面的代码段发出警告,如here所示。
void point(int = {1}, int = {2}) {}
int main(){
point();
}
为什么会这样?
{1}
据我所知,根据[dcl.fct.default]/1,[dcl.fct]/3和[dcl.init]/1,{2}
和Maybe :*: Maybe
是完全有效的默认参数。
答案 0 :(得分:1)
通常在初始化结构实例时使用大括号,例如:
struct example {
int member1;
int member2;
};
example x = { 1, 2 };
Clang告诉你,你使用牙套不是正常的"用于初始化单个值。如果您不熟悉在C ++中初始化值的语法,或者如果类型之前已经在某种重构之前被构造,则此警告可能会有所帮助。
您可以在初始化整数时停止使用大括号,或者将-Wno-braced-scalar-init
标志传递给编译器以阻止它报告警告。