为什么clang会发出这些警告?

时间:2017-05-24 11:35:49

标签: c++ clang default-arguments

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是完全有效的默认参数。

1 个答案:

答案 0 :(得分:1)

通常在初始化结构实例时使用大括号,例如:

struct example {
  int member1;
  int member2;
};

example x = { 1, 2 };

Clang告诉你,你使用牙套不是正常的"用于初始化单个值。如果您不熟悉在C ++中初始化值的语法,或者如果类型之前已经在某种重构之前被构造,则此警告可能会有所帮助。

您可以在初始化整数时停止使用大括号,或者将-Wno-braced-scalar-init标志传递给编译器以阻止它报告警告。