结构化绑定声明的无效初始值设定项

invalid initializer for structured binding declaration

我该如何解决这个错误?我应该改用 const std::tuple<int, int, char> 吗?

constexpr auto [ Y_AxisLen, X_AxisLen, fillCharacter ] { 36, 168, ' ' };

这会产生如下错误:

error: structured binding declaration cannot be 'constexpr'
  434 |         constexpr auto [ Y_AxisLen, X_AxisLen, fillCharacter ] { 36, 168, ' ' };

 error: invalid initializer for structured binding declaration
  434 |         constexpr auto [ Y_AxisLen, X_AxisLen, fillCharacter ] { 36, 168, ' ' };

Y_AxisLenX_AxisLen 应该是 int 类型,fillCharacter 应该是 char.

  • 现在 constexpr 不允许结构绑定。
  • 结构绑定只能应用于以下情况。
    • 数组
    • 类似元组
    • 结构数据成员

参考:https://en.cppreference.com/w/cpp/language/structured_binding

如果必须使用结构绑定,请使用std::make_tuple

const auto [ Y_AxisLen, X_AxisLen, fillCharacter ] = std::make_tuple(36, 168, ' ');