Kopierinitialisierung mit Initialisierungslisten
Initialisierungslisten-Kopierinitialisierung
Die Initialisierungslisten-Kopierinitialisierung ist an der Kombination aus geschweiften Klammern (Initialisierungsliste) und Gleichheitszeichen (kopieren) zu erkennen. Falls sie überhaupt möglich ist, hat sie dieselbe Wirkung wie die Initialisierungslisten-Nichtkopierinitialisierung.
main.cpp
#include <initializer_list>
#include <iostream> /* ::std::cout */
#include <ostream> /* << */
#include <string> /* ::std::string */ int main()
{ { ::std::string const s{ 68, 'D' }; ::std::cout << s << '\n'; }
{ ::std::string const s ={ 68, 'D' }; ::std::cout << s << '\n'; }
{ ::std::string const s( { 68, 'D' } ); ::std::cout << s << '\n'; }}::std::cout
DD
DD
DD
Im allgemeinen verlangt die Listen-Kopierinitialisierung zunächst stillschweigend eine Wandlung des Typs des Ausdrucks rechts vom Gleichheitszeichen in den Typ des Ausdrucks links vom Gleichheitszeichen. Daher ist sie nicht bei Typen möglich, die solche stillschweigenden Typwandlungen nicht erlauben.
- Dokumentation der Klasse »::std::string« nach n3797, 21.4.2 (vereinfacht)
::std::string …( ::std::initializer_list< char >l );
- Anlegen eines ::std::string-Exemplars mit dem Text der Zeichen einer Initialisierungsliste
::std::string …( ::std::string const s );
- Anlegen eines ::std::string-Exemplars mit dem Text eines anderen ::std::string-Exemplars.
::std::string …( char const * s );
- Anlegen eines ::std::string-Exemplars mit dem Text eines Zeichenfolgenliterals.
::std::string …( int n, char c );
- Anlegen eines ::std::string-Exemplars mit dem Text einer n-fachen Wiederholung des Zeichens c.
Die Initialisierung in dem folgenden Programm ist eine normale Kopierinitialisierung, keine Listen-Kopierinitialisierung, da die runden Klammern Teil des Ausdrucks sind, aber keine spezielle Art der Initialisierung kennzeichnen.
main.cpp
#include <initializer_list>
#include <iostream> /* ::std::cout */
#include <ostream> /* << */
#include <string> /* ::std::string */ int main()
{ ::std::string const b =( "beta" ); ::std::cout << b << '\n'; }::std::cout
beta
- Dokumentation der Klasse »::std::string« nach n3797, 21.4.2 (vereinfacht)
::std::string …( ::std::initializer_list< char >l );
- Anlegen eines ::std::string-Exemplars mit dem Text der Zeichen einer Initialisierungsliste
::std::string …( ::std::string const s );
- Anlegen eines ::std::string-Exemplars mit dem Text eines anderen ::std::string-Exemplars.
::std::string …( char const * s );
- Anlegen eines ::std::string-Exemplars mit dem Text eines Zeichenfolgenliterals.
::std::string …( int n, char c );
- Anlegen eines ::std::string-Exemplars mit dem Text einer n-fachen Wiederholung des Zeichens c.