c++ - 在赋值中折叠表达式

标签 c++ templates c++17 generic-programming fold-expression

我正在尝试使用折叠表达式来简化一些代码。在下面的代码中,我试图将元素插入到数组中,但折叠表达式无法编译

struct test {
  std::string cmd[20];
  test() {
    int i = 0;
    auto insert = [&](auto... c) {
      assert(i < 20);
      (cmd[i++] = c), ...;
    };
    insert("c");
    insert("c", "c2");
  }
};

编译器提示缺少';'

最佳答案

Fold expressions必须用括号括起来。因此:

((cmd[i++] = c), ...);

内括号也是必需的。

关于c++ - 在赋值中折叠表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955868/

相关文章:

c++ - 这怎么能编译? (删除const对象的一个​​成员)

c++ - 我的通用模板应该使用 T 还是 T&&?

c++ - 收到Foo<S>后如何构造Foo<T>?

c++ - 在编译时找到最大公约数

c++ - std::array<std::vector> 中的大括号省略

c++ - __func__ 指针的两个 constexpr 实例的差异仍然是 constexpr 吗?

java - 如何使三角函数代码更高效

c++ - 我的 C++ 游戏架构

C++将新数组传递给函数的指针

C++ std::variant 与 std::any