'在初始化时'浮动',c++"/>

首页 > 解决方案 > 无法转换 'std::array'在初始化时'浮动'

问题描述

我遇到了这段代码。它在 Windows 上编译。(带有 MSVC2017 套件的 QT)但它没有在 Linux 中(带有 gcc 4.9.3 的 QT)

我已经阅读了模板数组、模板函数、参数打包。我单独理解它们,但我很难把它们放在一起来弄清楚 util::make_array<6>(1.0f) 最后一行是如何解释为浮点数的。假设我的方向是正确的。

namespace util { // @util
    namespace detail
    {
        template <typename T, std::size_t...Is>
        std::array<T, sizeof...(Is)> make_array(const T& value, std::index_sequence<Is...>)
        {
            return { { (static_cast<void>(Is), value)... } };
        }
    }

    template <std::size_t N, typename T>
    std::array<T, N> make_array(const T& value)
    {
        return detail::make_array(value, std::make_index_sequence<N>());
    }
}

std::array<float, 6> c_array {{ util::make_array< 6 >(0.1f) }}; //<- error here, "cannot convert 'std::array<float, 6ul>' to 'float' in initialization"

错误在最后一行:“初始化时无法将 'std::array' 转换为 'float'”

标签: c++

解决方案


推荐阅读