编译器错误 C2080

“identifier”:“type”的类型只能从单个初始化表达式推导出

注解

如果声明使用直接列表初始化,并且初始化表达式列表具有单个元素,则编译器只能推断 autodecltype(auto) 的类型。

示例

以下示例显示了导致 C2080 的一些声明:

auto x1(1, 2);           // C2080
auto x2({4});            // C2080
decltype(auto) x3(1, 2); // C2080
decltype(auto) x4({4});  // C2080

若要解决此问题,请使用单个值初始化表达式:

auto x1 = 1;             // Valid
auto x2(1);              // Valid
decltype(auto) x3 = 1;   // Valid
decltype(auto) x4(1);    // Valid