Come si può vedere dalle https://stackoverflow.com/a/26614984/481267 le seguenti intestazioni sono garantite dallo standard per #include <initializer_list>
:Perché le intestazioni C++ specificate includono <initializer_list>?
- Tutto in [contenitori]
<utility>
<string>
<algorithm>
<random>
<valarray>
<regex>
La maggior parte di queste intestazioni dichiarare almeno una funzione che prende un argomento std::initializer_list<E>
, quindi ha senso. Tuttavia,
<array>
,<stack>
e<queue>
hanno tali funzioni, anche se forse ha senso trattare tutti i contenitori uniformemente qui.<utility>
non ha tali funzioni.<iterator>
ha funzioni con uninitializer_list
argomento (rbegin
,rend
) ma non è specificato per includere<initializer_list>
.
Qual è la logica dietro queste eccezioni?
Penso che persino l'utilizzo dell'inizializzazione uniforme richieda l'inclusione di ''. Vedi i commenti di questa domanda [qui] (http://stackoverflow.com/q/33704978/3093378). –
vsoftco
L'inclusione in "" risale al N2672. Il resto è fatto da N2930. 'Rbegin' /' rend' sono aggiunte in ritardo. –
@vsoftco Solo se si utilizza il tipo esplicitamente o implicitamente. –