Может ли C ++ 23 гарантия std :: raunder может быть опущен в размещении новых сценариев?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Может ли C ++ 23 гарантия std :: raunder может быть опущен в размещении новых сценариев?

Сообщение Anonymous »

Код: Выделить всё

#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;
гарантированно ведут себя как ожидалось, однако, что это слишком утомительно и слишком уродливо, особенно для этого указателей в органе функции участника.
C ++ 23 Гарантия std :: cout n; p n; p n; a eake aeave ue ves ude ra std :: raund std> std :: rhound> n;>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -scenarios
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»