T.68: Use {} rather than () within templates to avoid ambiguities
T.68:在模板中使用{}代替()以避免歧义
Reason(原因)
() is vulnerable to grammar ambiguities.
()容易产生语法歧义。
Example(示例)
代码语言:javascript复制template<typename T, typename U>
void f(T t, U u)
{
T v1(x); // is v1 a function or a variable?
T v2 {x}; // variable
auto x = T(u); // construction or cast?
}
f(1, "asdf"); // bad: cast from const char* to int
Enforcement(实施建议)
- flag () initializers 标记()初始化器。
- flag function-style casts 标记C风格类型转换。