【发布时间】:2022-01-22 08:51:21
【问题描述】:
我试图了解 std::array 构造函数是如何工作的,以及他如何获取一个数组并将其初始化为它的数组。
我正在搜索标准库文件,我找到了这段代码
#if _HAS_CXX17
template <class _First, class... _Rest>
struct _Enforce_same {
static_assert(conjunction_v<is_same<_First, _Rest>...>,
"N4687 26.3.7.2 [array.cons]/2: "
"Requires: (is_same_v<T, U> && ...) is true. Otherwise the program is ill-formed.");
using type = _First;
};
template <class _First, class... _Rest>
array(_First, _Rest...) -> array<typename _Enforce_same<_First, _Rest...>::type, 1 + sizeof...(_Rest)>;
#endif // _HAS_CXX17
这是构造函数吗?它是如何工作的?
谢谢!
【问题讨论】:
-
"我试图了解 std::array 构造函数的工作原理" 它没有构造函数;这就是它的工作原理。你是在问这段代码在做什么?
-
你看的是推导指南,是用来做CTAD的,不是构造函数。
-
std::array是一个聚合类型,这意味着它没有用户提供的构造函数 -
哦,这令人困惑,它没有构造函数以及如何将给定数组初始化为其数组,例如:std::array
nums = {1, 2, 3};