c++ - 使用隐含长度初始化 std::array

标签 c++ arrays c++11 stdarray

<分区>

在 C 中你可以做 int a[] = {1,2,3,4,5} , 但 C++11 std::array<int> a = {1,2,3,4,5}会给出“模板参数太少”的编译错误。有什么办法解决这个问题吗?

最佳答案

你能拥有的最好的是一个make_array,类似于:

template<typename T, typename...Ts>
constexpr std::array<T, 1 + sizeof...(Ts)> make_array(T&& head, Ts&&...tail)
{
     return {{ std::forward<T>(head), std::forward<Ts>(tail)... }};
}

关于c++ - 使用隐含长度初始化 std::array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22073448/

相关文章:

c - 数组 a[i] 按降序打印,但我的逻辑是升序

Python:一种优雅/有效的方法来评估二维索引上的函数?

C++11 原子和侵入式共享指针引用计数

c++ - 错误 C2440 : 'initializing' : cannot convert from 'CTable' to 'CTable'

c++ - boost io_service 不会重置

java - 用Java读取和破坏CSV文件:

c++ - 如何在 C++ 中更新 map 的对象

c++ - C++ 中的原子操作

c++ - 如何从 C++11 中的 std::future move 结果?

c++ - 如何检查进程是否仍在 Windows Server 2008 上运行?