#include
#include
struct A {
int const n;
void f() {
new (this) A{2};
}
void g() {
std::cout n;
}
void h() {
std::cout n;
}
};
int main() {
auto a = A{1};
a.f();
std::cout n; // This is guaranteed to print 2.
a.h(); // This is guaranteed to print 2.
a.g(); // Is it guaranteed to print 2?
std::cout
Компилятор разрешается предположить, что действительно константная переменная (не
просто констант, но переменная объекта, объявленная const).std::cout n;
гарантированно будет вести себя как ожидалось, однако, что это слишком утомительно и слишком уродливо, особенно для этого указателя в органе функции участника.
Правила создания неявных объектов гарантируют std :: cout
int main() { auto a = A{1}; a.f(); std::cout n; // This is guaranteed to print 2. a.h(); // This is guaranteed to print 2. a.g(); // Is it guaranteed to print 2? std::cout
Компилятор разрешается предположить, что действительно константная переменная (не просто констант, но переменная объекта, объявленная const).std::cout n;[/code] гарантированно будет вести себя как ожидалось, однако, что это слишком утомительно и слишком уродливо, особенно для этого указателя в органе функции участника. Правила создания неявных объектов гарантируют std :: cout