рд╣рд╛рд▓ рд╣реА рдореЗрдВ, 
рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХреНрдпреЛрдВ рдореИрдВ рд╢реБрд░реБрдЖрддреА рд╕реА ++ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП 
рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдорд╛рдирддрд╛ рд╣реВрдВред рдпрд╣ рдПрдХ 
рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ C ++ рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдбрд╝рдмрдбрд╝ рдПрдХ рд╕реБрдВрджрд░, рд▓реЗрдХрд┐рди рд╡рд┐рдХреГрдд, рджреБрдЦрдж рдФрд░ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред рд╕рдореБрджрд╛рдп рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рд▓реЗрдЦ 
рдЖрдзреБрдирд┐рдХ C ++ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд┐рд░реНрджреЗрд╢рд┐рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╡рд╣ рд╕рд╛рдЗрдорди рдмреНрд░рд╛рдВрдб 
рджреНрд╡рд╛рд░рд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ 
рд▓реЗрдЦ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИ, 
"рд╕реА ++ рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкрд╛рдЧрд▓ рд╣реИ," рдФрд░ рднрд╛рдЧ рдореЗрдВ рдпрд╣ рд╣рд░ рдЫрд╛рддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИ рдЬреЛ рдЕрдкрдиреА рд╢рд┐рдХреНрд╖рд╛ рдХреЛ рд░рд╕рд╛рддрд▓ рдореЗрдВ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рд╕реА рд╕реАрдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЬрд╛рдиреЗ рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЫрд╛рддреНрд░ рдЖрдкрддреНрддрд┐рдпрд╛рдБ:
- "рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?" 
 
- "рдпрд╣ рдмреЗрд╡рдХреВрдлреА рд╣реИред" 
 
- "рд╣рдо рд╕реА рдХреНрдпреЛрдВ рд╕реАрдЦ рд░рд╣реЗ рд╣реИрдВ?" 
 
- "рд╣рдореЗрдВ рдХреБрдЫ рдмреЗрд╣рддрд░ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C ++" ( рд╣рдБрд╕реА )
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдЫрд╛рддреНрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕реА рд╕реАрдЦрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ (рд▓реЗрдЦрдХ рд╕реЗ: рдпрд╣ рдирд╣реАрдВ рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реА ++ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдмреЗрддреБрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреНрдпреЛрдВ рд╣реИ: 
рдПрдХ рдХрдордмрдЦреНрдд рдЪрд░ рдмрдирд╛рдирд╛ ред рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ, рд╕рд╛рдЗрдорди рдмреНрд░рд╛рдВрдб рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА C ++ 11 рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рдХреА рд╡рд┐рд╖рдорддрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдерд╛ред рдпрд╣рд╛рдБ рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрд╛рдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдп рд╣реИ, 
рди рдХрд┐ рдбреНрд░реЗрдХреНрд╕реЗрд▓ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдерд┐рддрд┐, рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХрд▓ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рд╡рд┐рднрд╛рдЧ рдореЗрдВ рдкрдврд╝рд╛рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдЖрдорддреМрд░ рдкрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╡реЗ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
рдПрдХ GIF рдореЗрдВ рд╕рд╛рд░рд╛рдВрд╢
Reddit рдкрд░ u / AlexAlabuzhev рдЗрд╕ рдкреВрд░реЗ рд▓реЗрдЦ рдХреЛ рдПрдХ gif рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 
рддреИрдореВрд░ рдбрдорд▓рд░ рдХрд╛ рдореВрд▓ рдХрд╛рдо рд╣реИ)
рдореЗрд░реЗ рдкрд╛рд╕ C ++ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╢реБрд░реБрдЖрддреА рдЪрд░рдг рдореЗрдВ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред
рд╡рд╣ рд╕рдм рд╣реИред рдШрд░ рдЬрд╛рдУред рдХреБрддреНрддреЗ рдХреЗ рд╕рд╛рде рд╕реИрд░ рдХрд░реЗрдВред рдХрдкрдбрд╝реЗ рдзреЛрдиреЗред рдорд╛рдБ рдХреЛ рдмреБрд▓рд╛рдУ рдФрд░ рдХрд╣реЛ рдХрд┐ рддреБрдо рдЙрд╕рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реЛред рдПрдХ рдирдпрд╛ рдиреБрд╕реНрдЦрд╛ рдЖрдЬрдорд╛рдПрдВред рдпрд╣рд╛рдБ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╣реАрдВ рджреЛрд╕реНрддреЛрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЗрдВрдЬреАрдирд┐рдпрд░ (рдХрд┐, рдореЗрд░реЗ) рдХрд┐рддрдиреЗ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ ...
рд╕рдм рдХреБрдЫ, рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рдордирд╛ рд▓рд┐рдпрд╛!
рддреЛ, рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╣реИрдВ? рдЕрд╕рд▓реА рд╕рд┐рдкрд╛рд╣реАред рдЕрдЧрд░ рдореИрдВ рдХрд░ рд╕рдХрддрд╛, рдореИрдВ рддреБрдореНрд╣реЗрдВ рдПрдХ рдкрджрдХ рджреЗрддрд╛! рдФрд░ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдЪреЙрдХрд▓реЗрдЯ рджреВрдз!
рдЕрдм рд╣рдорд╛рд░реЗ рд╕рд╛рдорд╛рдиреНрдп ... рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рд╡рд╛рдкрд╕редрд╕реА рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, 
C рдореЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдЧрддрддрд╛ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП C ++ рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ C рдмрд╣реБрдд рдЙрдмрд╛рдК рдФрд░ рд╕рд░рд▓ ( 
рдЕрд╣рдо ) рд╣реИред рд╣рд░ рд╢реБрд░реБрдЖрддреА рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рджрд┐рд▓ рд╕реЗ рд╕реАрдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реА рдореЗрдВ рдпрд╣ рдХрдИ рдирдИ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕реНрд╡реАрдХрд╛рд░реНрдп рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрд░рдВрднреАрдХрд░рдг рд╣реИ, рдпрд╛ рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рд╣реИред
int main() {
    int i;
    printf("%d", i);
}
C , 
i ( 
i ). , , 
int i = 0;, . , 
, , , , , 
0.
, .
int i;
int main() {
    printf("%d", i);
}
, ? 
i тАФ .
.
, . , ? . , .
, .
struct A {
    int i;
};
int main() {
    struct A a;
    printf("%d", a.i);
}
. 
a . .
$ gcc -Wuninitalized a.c
a.c: In function тАШmainтАЩ:
a.c:9:5: warning: тАШa.iтАЩ is used uninitialized in this function [-Wuninitialized]
     printf("%d\n", a.i);
C . : 1)  , 2)  3)  .
struct A {
    int i;
} const default_A = {0};
void init_A(struct A *ptr) {
    ptr->i = 0;
}
int main() {
    /* helper function */
    struct A a1;
    init_A(&a1);
    /* during definition;
     * Initialize each member, in order. 
     * Any other uninitialized members are implicitly
     * initialized as if they had static storage duration. */
    struct A a2 = {0};
    /* Error! (Well, technically) Initializer lists are 'non-empty' */
    /* struct A a3 = {}; */
    /* ...or use designated initializers if C99 or later */
    struct A a4 = {.i = 0};
    /* default value */
    struct A a5 = default_A;
}
, C, , . , , 
0.
C++
1.
C++, . 
, C , 
. 
C++, , , тАж 
тАж C++ C. :
struct A {
    int i;
};
int main() {
    A a;
    std::cout << a.i << std::endl;
}
C++ . C 
A, . C++ 
a , 
. 
A , 
, . ┬л ┬╗, :
struct A {
    A(){}
    int i;
}
, . 
g++ 8.2.1 , 
clang++ 7.0.1 ( 
-Wuninitialized). , .
$ g++ -Wuninitalized -O2 a.cpp
a.cpp: In function тАШint main()тАЩ:
a.cpp:9:20: warning: тАШa.A::iтАЩ is used uninitialized in this function [-Wuninitialized]
     std::cout << a.i << std::endl;
C. 
A::i?
2.
, , ? , C++ , ? (
)
struct A {
    int i;
};
int main() {
    A a = {.i = 0};
    std::cout << a.i << std::endl;
}
$ g++ -Wuninitialized -O2 -pedantic-errors a.cpp
a.cpp: In function тАШint main()тАЩ:
a.cpp:9:12: error: C++ designated initializers only available with -std=c++2a or -std=gnu++2a [-Wpedantic]
     A a = {.i = 0};
. C++ C++20. C++, 2020 . , C++ 21 , C. , 
-pedantic-errors gcc.
?
struct A {
    int i;
};
int main() {
    A a = {0};
    std::cout << a.i << std::endl;
}
$ g++ -Wuninitialized -O2 -pedantic-errors a.cpp
$
. 
A a = {}; , 
a.i. 
A . ?
C++11 ( ) C, , C. , , , . . ?
- .
- ┬л┬╗.
, ? , . , 
A, . , 
int i, 
.
! - : ! .
C++11 тАж .
? , C++ . 
. . , , . . , , , .
3.
, 
C++ 
(
 )! 
i :
struct A {
    A() : i(0) {}
    int i;
};
i .  тАФ :
struct A {
    A() { i = 0; }
    int i;
};
, ( ).
C++11 (, ).
struct A {
    int i = 0; // default member initializer, available in C++11 and later
};
, , 
i 0, 
A . , A 
i, . :
struct A {
    A(int i = 0) : i(i) {}
    int i;
};
int main() {
    A a1;
    A a2(1);
    std::cout << a1.i << " " << a2.i << std::endl;
}
$ g++ -pedantic-errors -Wuninitialized -O2 a.cpp
$ ./a.out
0 1
. A a(); , a, A. ? - - , .
! . . C++, . !
4.
. , 
C++, . g++ (8.2.1), 
gnu++1y, C++14 GNU. , g++ C++17. ┬л ?┬╗ тАФ . , .
, C++11, , 
. , ? 
. : . 
. FAQ:
C++11 , .
(
{thing1, thing2, ...}, 
braced-init-list) :
#include <iostream> 
struct A {
    int i;
};
int main() {
    A a1;      // default initialization -- as before
    A a2{};    // direct-list-initialization with empty list
    A a3 = {}; // copy-list-initialization with empty list
    std::cout << a1.i << " " << a2.i << " " << a3.i << std::endl;
}
$ g++ -std=c++11 -pedantic-errors -Wuninitialized -O2 a.cpp
a.cpp: In function тАШint main()тАЩ:
a.cpp:9:26: warning: тАШa1.A::iтАЩ is used uninitialized in this function [-Wuninitialized]
     std::cout << a1.i << " " << a2.i << " " << a3.i ┬л std::endl;
, , ? 
a1.i. , , .
A a{}; , 
A a = {};. 
a braced-init-list. , 
A a = {};  тАФ 
copy-list-initialization (
). , 
A a; .
7/8 (, 
C++11):
- A.
 
- , A .
 
- , .
 - int i{} i, 0.
 
?
int main() {
    A a1{0}; 
    A a2{{}};
    A a3{a1};
    std::cout << a1.i << " " << a2.i << " " << a3.i << std::endl;
}
$ g++ -std=c++11 -pedantic-errors -Wuninitialized -O2 a.cpp
$
a1.i 0, 
a2.i , 
a3 тАФ , 
a1. , , 
? , rvalue, , pr-, x-, gl-тАж , .
, C++11 , C++17 C++20 . , C++, - . . , C++17, . !
? ? ? , , ?
5. ,
, 
A ?
, :
 
- //,
 - /
 
 
 
- ( C++11, )
 
- ( C++17)
 
- (using Base::Base;, C++17)
 
:
#include <iostream>
struct A {
    A(){};
    int i;
};
int main() {
    A a{};
    std::cout << a.i << std::endl;
}
$ g++ -std=c++11 -pedantic-errors -Wuninitialized -O2 a.cpp
a.cpp: In function тАШint main()тАЩ:
a.cpp:8:20: warning: тАШa.A::iтАЩ is used uninitialized in this function [-Wuninitialized]
     std::cout << a.i << std::endl;
A , .
7 :
- A.
- - braced-init-list , .
- , , , a.i.
, ?
struct A {
    A() = default;
};
, . , A .
struct A {
    A();
};
A::A() = default;
, . A(){} , 
? C++20 : , :). ? ! .
:
#include <iostream>
class A {
    int i;
    friend int main();
};
int main() {
    A a{};
    std::cout << a.i << std::endl;
}
A тАФ , , 
i , 
main . 
. . , 
a.i , ?
$ g++ -std=c++11 -pedantic-errors -Wuninitialized -O2 a.cpp
$
. , . , 
a.i 0, :
- A, 2.
- , , braced-init-list , 3.
- , , 4.
- , ( ).
:
#include <iostream>
class A {
    int i;
    friend int main();
};
int main() {
    A a = {1};
    std::cout << a.i << std::endl;
}
$ g++ -std=c++11 -pedantic-errors -Wuninitialized -O2 a.cpp
a.cpp: In function тАШint main()тАЩ:
a.cpp:7:13: error: could not convert тАШ{1}тАЩ from тАШ<brace-enclosed initializer list>тАЩ to тАШAтАЩ
     A a = {1};
A , :
- A, 2.
 
- .
 
- 1- A, .
:
#include <iostream>
struct A {
    A(int i) : i(i) {}
    A() = default;
    int i;
};
int main() {
    A a{};
    std::cout << a.i << std::endl;
}
, , , : , A . , 
?
$ g++ -std=c++11 -pedantic-errors -Wuninitialized -O2 a.cpp
$
! :
- A, 2.
- , , braced-init-list , 3.
- ( ), , 4.
- , ( ).
:
#include <iostream>
struct A {
    A(){}
    int i;
};
struct B : public A {
    int j;
};
int main() {
    B b = {};
    std::cout << b.i << " " << b.j << std::endl;
}
$ g++ -std=c++11 -pedantic-errors -Wuninitialized -O2 a.cpp
a.cpp: In function тАШint main()тАЩ:
a.cpp:11:25: warning: тАШb.B::<anonymous>.A::iтАЩ is used uninitialized in this function [-Wuninitialized]
     std::cout << b.i << " " << b.j << std::endl;
b.j , 
b.i . ? ! 
b . 
Stack Overflow, 
, , . 
. , clang ( ) . .
...
( ) ( ) , !
6.
C++11 
std::initializer_list. : , 
std::initializer_list<T>. braced-init-list. , braced-init-list . initializer_list braced-init-list! , , . , ! , ?
struct A {
    template <typename T>
    A(std::initializer_list<T>) {}
    int i;
};
int main() {
    A a1{0};
    A a2{1, 2, 3};
    A a3{"hey", "thanks", "for", "reading!"};
    std::cout << a1.i << a2.i << a3.i << std::endl;
}
$ g++ -std=c++17 -pedantic-errors -Wuninitialized -O2 a.cpp
a.cpp: In function тАШint main()тАЩ:
a.cpp:12:21: warning: тАШa1.A::iтАЩ is used uninitialized in this function [-Wuninitialized]
     std::cout << a1.i << a2.i << a3.i << std::endl;
                     ^
a.cpp:12:29: warning: тАШa2.A::iтАЩ is used uninitialized in this function [-Wuninitialized]
     std::cout << a1.i << a2.i << a3.i << std::endl;
                             ^
a.cpp:12:37: warning: тАШa3.A::iтАЩ is used uninitialized in this function [-Wuninitialized]
     std::cout << a1.i << a2.i << a3.i << std::endl;
. 
A , 
std::initializer_list<T>. , , , 
i . 
T , .
- , {0}std::initializer_list<int>0.
- {1, 2, 3}- std::initializer_list<int>.
- braced-init-list std::initializer_list<const char*>.
: A a{} , . , a{std::initializer_list<int> {}}. , A(std::initializer_list<int>){}.
std::initializer_list STL, : 
size, 
begin end. 
begin end , . , :
#include <vector>
#include <string>
int main() {
    std::vector<int> v_1_int{5};
    std::vector<int> v_5_ints(5);
    std::vector<std::string> v_strs = {"neato!", "blammo!", "whammo!", "egh"};
}
std::vector<T> , 
std::initializer_list<T>, , .
. v_1_int , std::initializer_list<int< init 5.
v_5_ints size_t count, (5) ( 0).
тАУ, :
#include <iostream>
struct A {
    A(std::initializer_list<int> l) : i(2) {}
    A(int i = 1) : i(i) {}
    int i;
};
int main() {
    A a1;
    A a2{};
    A a3(3);
    A a4 = {5};
    A a5{4, 3, 2};
    std::cout << a1.i << " "
              << a2.i << " "
              << a3.i << " "
              << a4.i << " "
              << a5.i << std::endl;
}
, . : 
std::initializer_list<int>, 
int. , , 
i.
...? , .
$ g++ -std=c++11 -pedantic-errors -Wuninitialized -O2 a.cpp
$ ./a.out
1 1 3 2 2
a1 . , , . 
a2 . 
A ( ), . 
A , . 
a3 , braced-init-list, 
3 , 
int. , 
4 , , 
std::initializer_list. , 
a5 - 
int, , 
a4.
, , (
 ) , , . , , . ++, . 
,  тАФ . , . , . , -, , , 
.
, , C++ , ( ). . 
. , 5 . 
18 .
C++. , , . C++, C++, , . 
C C , 
this C.
C тАФ , , , . 18 .
, , 
. .
:
- Lobste.rs
 
- Hacker News
 
- Reddit
: , 
. ,  тАФ . , C++. . , STL C, , . C , , C, , , , , . , C, 
, . C++, C++. C++ C++, C. 
, C++. .
, .