初始化时无法将'std :: array <float,6ul =“”>'转换为'float'

时间:2019-05-21 21:48:03

标签: c++

我遇到了这段代码。它在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'”

0 个答案:

没有答案