编译器错误 C3533

“type”:参数不能有包含“auto”的类型

如果默认 auto/Zc:auto 编译器选项生效,则不能使用 关键字声明方法或模板参数。

更正此错误

  1. 从参数声明中删除 auto 关键字。

示例

下面的示例生成 C3533,因为它使用 auto 关键字声明函数参数,并通过 /Zc:auto 进行编译

// C3533a.cpp
// Compile with /Zc:auto
void f(auto j) {} // C3533

下面的示例在 C++14 模式下生成 C3533,因为它使用 auto 关键字声明模板参数,并通过 /Zc:auto 进行编译。(在 C++17 中,这是具有推断类型的单个非类型模板参数的类模板的有效定义。)

// C3533b.cpp
// Compile with /Zc:auto
template<auto T> class C {}; // C3533

另请参阅

auto 关键字
/Zc:auto(推导变量类型)