Beispielprogramme zu C++ [] (Beispielprogramme zu C++), Lektion, Seite 723524
https://www.purl.org/stefan_ram/pub/beispielprogramme_c++ (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C++-Kurs

Beispielprogramme zu C++

main.c
#include <initializer_list>
#include <iostream>
#include <ostream>
#include <string>
#include <vector> using namespace ::std::literals; struct sigma
{ sigma( ::std::string const s ): x{ 1 }{}
sigma( ::std::initializer_list<::std::string> const s ): x{ 2 }{}
operator bool(){ return false; }
int x; };

sigma f( sigma x ){ return { "a"s, "b"s }; }

void try_out_sigma()
{ sigma s{ "abc"s }; ::std::cout << s.x << '\n';
s = "abc"s; ::std::cout << s.x << '\n';
s ={ "abc"s }; ::std::cout << s.x << '\n';
s ={ "a"s, "b"s }; ::std::cout << s.x << '\n';
f( { "a"s, "b"s } );
sigma t = sigma{ "a"s, "b"s }; ::std::cout << t.x << '\n';
/* sigma u = static_cast< sigma >( { "a"s, "b"s }); *//* No! */
sigma u = static_cast< sigma >( "a"s );
::std::vector< sigma >v;
v.emplace_back( "a"s );
/* v.emplace_back( { "a"s, "b"s } ); *//* No! Why? */
if( s ){}
if( sigma{ "a"s, "b"s } ){}
if( sigma t = "abc"s ){}
if( sigma t{ "a"s, "b"s } ){}
::std::cout << "done.\n"s; }

struct eta
{ explicit eta( ::std::string const s ): x{ 1 }{}
explicit eta( ::std::initializer_list<::std::string> const s ): x{ 2 }{}
explicit operator bool(){ return false; }
int x; };

void f( eta x ){ return; /* return { "a"s, "b"s }; */ /* No, explict! */ }

void try_out_eta()
{ eta s{ "abc"s }; ::std::cout << s.x << '\n'; /* still ok */
/* s = "abc"s; ::std::cout << s.x << '\n'; */ /* No, explict! */
/* s ={ "abc"s }; ::std::cout << s.x << '\n'; */ /* No, explict! */
/* s ={ "a"s, "b"s }; ::std::cout << s.x << '\n'; */ /* No, explict! */
/* f( { "a"s, "b"s } ); */ /* No, explict! */
eta t = eta{ "a"s, "b"s }; ::std::cout << t.x << '\n'; /* still ok */
eta u = static_cast< eta >( "a"s ); /* still ok */
::std::cout << u.x << '\n';
::std::vector< eta >v;
v.emplace_back( "a"s ); /* still ok */
if( s ){} /* still ok! Why? */
if( eta{ "a"s, "b"s } ){}
/* if( eta t = "abc"s ){} *//* No, explict! */
if( eta t{ "a"s, "b"s } ){} /* still ok */
::std::cout << "done.\n"s; }


int main()
{ try_out_sigma();
try_out_eta(); }

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723524 stefan_ram:723524 Beispielprogramme zu C++ Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723524, slrprddef723524, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/beispielprogramme_c++