当前位置:  开发笔记 > 编程语言 > 正文

使用折叠表达式填充数组时出现语法问题

如何解决《使用折叠表达式填充数组时出现语法问题》经验,为你挑选了1个好方法。

是的,我可以使用std::initializer_list.是的,更简单,我可以进行聚合初始化.但这是如何工作的?我似乎无法克服C++ 17的折叠表达式.那里没有足够的例子.

这是我想出的:

template
struct foo
{
    T arr[N];

    template
    constexpr foo(Args&&... pack)
    {
        static_assert(sizeof...(pack) <= N, "Too many args");
        std::size_t i = 0;
        (arr[i++] = ...);
    }
};

int main()
{
    foo a(1, 2, 3, 4, 5);
}

编辑:与最新的Clang编译.支持折叠表达式.

实例: http ://coliru.stacked-crooked.com/a/777dc32da6c54892



1> T.C...:

您需要使用逗号运算符进行折叠,这也解决了排序问题.

(void(arr[i++] = pack) , ...);


是的,完美的工作.在这种语法不会让我感到困惑之前,还需要一些时间.当其他人写它时,它看起来完全合乎逻辑.:d
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有