相关疑难解决方法(0)

std::initializer_list 如何工作?

我目前正在学习 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) {}
Run Code Online (Sandbox Code Playgroud)

但它是如何工作的

std::initializer_list<int> v{1,2,3,4,5,6,7,8,9,0};
Run Code Online (Sandbox Code Playgroud)

我试过这个

constexpr init(const _Elem* _First_arg, const _Elem* _Last_arg) noexcept
    : _First(_First_arg), _Last(_Last_arg) {}
Run Code Online (Sandbox Code Playgroud)

但这显示错误

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
Run Code Online (Sandbox Code Playgroud)

我把 {} 改为 () 就像

std::initializer_list<int> v(1,2,3,4,5,6,7,8,9,0); …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

0
推荐指数
1
解决办法
134
查看次数

标签 统计

c++ ×1

c++11 ×1