std::initializer_list<T>::initializer_list
cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
initializer_list() noexcept; |
( C++11) ( C++14) |
|
constexpr initializer_list() noexcept; |
( C++14) | |
std::initializer_list<T> -, const T.
std::initializer_list , :
std::initializer_list , . std::initializer_list .
, std::initializer_list.
value_type
|
T
|
reference
|
const T&
|
const_reference
|
const T&
|
size_type
|
std::size_t |
iterator
|
const T*
|
const_iterator
|
const T*
|
| (public -) | |
| (public -) | |
| (public -) | |
| (public -) | |
| std::begin ( ) | |
| std::end ( ) | |
,
| |
(C++14) |
( ) |
(C++14) |
( ) |
(C++17) |
, ( ) |
(C++17) |
( ) |
__cpp_initializer_lists |
200806L |
(C++11) | std::initializer_list
|
#include <initializer_list>
#include <iostream>
#include <vector>
template <class T>
struct S {
std::vector<T> v;
S(std::initializer_list<T> l) : v(l) {
std::cout << " " << l.size() << "- \n";
}
void append(std::initializer_list<T> l) {
v.insert(v.end(), l.begin(), l.end());
}
std::pair<const T*, std::size_t> c_arr() const {
return {&v[0], v.size()}; // return
// std::initializer_list
}
};
template <typename T>
void templated_fn(T) {}
int main()
{
S<int> s = {1, 2, 3, 4, 5}; //
s.append({6, 7, 8}); //
std::cout << " " << s.c_arr().second << " int:\n";
for (auto n : s.v)
std::cout << n << ' ';
std::cout << '\n';
std::cout << " for ----: \n";
for (int x : {-1, -2, -3}) // auto for
std::cout << x << ' ';
std::cout << '\n';
auto al = {10, 11, 12}; // auto
std::cout << ", auto, size() = " << al.size() << '\n';
// templated_fn({1, 2, 3}); // ! "{1, 2, 3}" ,
// , T
templated_fn<std::initializer_list<int>>({1, 2, 3}); // OK
templated_fn<std::vector<int>>({1, 2, 3}); // OK
}
:
5-
8 int:
1 2 3 4 5 6 7 8
for ----:
-1 -2 -3
, auto, size() = 3
C++:
| LWG 2129 | C++11 | std::initializer_list
|
(C++20) |
( ) |
(C++17) |
( ) |