【发布时间】:2020-06-18 10:45:56
【问题描述】:
我目前正在学习 c++11 我不明白 std::initializer_list 的构造函数它看起来像这样
constexpr initializer_list() noexcept : _First(nullptr), _Last(nullptr) {}
constexpr initializer_list(const _Elem* _First_arg, const _Elem* _Last_arg) noexcept
: _First(_First_arg), _Last(_Last_arg) {}
但是它是如何工作的
std::initializer_list<int> v{1,2,3,4,5,6,7,8,9,0};
我试过了
constexpr init(const _Elem* _First_arg, const _Elem* _Last_arg) noexcept
: _First(_First_arg), _Last(_Last_arg) {}
但这显示错误
init<int> ob{1,2,3,4,5,6,7,8,9,0}; //this shows error
note: candidate: 'constexpr init<_Elem>::init(const _Elem*, const _Elem*) [with _Elem = int]'
constexpr init(const _Elem* _First_arg, const _Elem* _Last_arg) noexcept
^~~~
note: candidate expects 2 arguments, 10 provided
我把 {} 改成了 () 之类的
std::initializer_list<int> v(1,2,3,4,5,6,7,8,9,0);
这显示错误。
1)std::initializer_list 是如何工作的?
2) {} 背后是什么?
谢谢。
【问题讨论】: