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