C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 通过枚举值构造initializer_list包含随机值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
虑问题 std::initializer list from already existing std::array without enumerating each element解决方案时,我开发了与 bolov类似的机制,但没有构建对象,而只是初始化列表.我很惊讶我的解决方案不起作用,我无法弄清楚原因.
#include <initializer_list>
#include <iostream>
#include <array>

template<typename T,std::size_t N,std::size_t... Is>
std::initializer_list<T> array_to_init_list_Helper(std::array<T,N> arr,std::index_sequence<Is...>)
{
    return {arr[Is]...};
}

template<typename T,std::size_t N>
std::initializer_list<T> array_to_init_list(std::array<T,N> arr)
{
    return array_to_init_list_Helper(arr,std::make_index_sequence<N>{});
}

int main()
{
    std::array<int,5> arr{1,2,3,4,5};
    auto init_list = array_to_init_list(arr);
    for (auto val : init_list)
        std::cout << val << " ";
}

我是getting random values,而我希望获得arr的值.

解决方法

通过程序集 here(clang 4.0.0)和/或 here(GCC 7.1),很明显std :: initializer_list正在使用悬空指针,(我们都知道)它会产生看似随机输出.

编辑

这个结果当然与Igor Tandetnik引用的评论一致,引用cppreference.com

大佬总结

以上是大佬教程为你收集整理的c – 通过枚举值构造initializer_list包含随机值全部内容,希望文章能够帮你解决c – 通过枚举值构造initializer_list包含随机值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。