Информация об изменениях

Сообщение Re[7]: const reference nullptr от 15.07.2017 16:32

Изменено 15.07.2017 16:34 N. I.

Re[7]: const reference nullptr
prezident.mira:

PM>

PM>Before the lifetime of an object has started but after the storage which the object will occupy has been allocated


А если никаких попыток создать объект вообще не предпринимается, это относится к "Before the lifetime of an object has started" или нет? Без авторитетного толкователя это правило можно интерпретировать как хочешь. Впрочем, если пример заменить на

#include <stdlib.h>

struct X
{
    int n;
};

int main()
{
    X *p = (X *)malloc(sizeof(int));
    p->n = 1; // undefined behavior
    free(p);
}

то тут хоть как трактуй, получишь undefined behavior — либо из-за indirection, либо из-за попытки "to access a non-static data member or call a non-static member function of the object", что весьма доставляет, т.к. подобный код широко используется в C.
Re[7]: const reference nullptr
prezident.mira:

PM>

PM>Before the lifetime of an object has started but after the storage which the object will occupy has been allocated


А если никаких попыток создать объект вообще не предпринимается, это относится к "Before the lifetime of an object has started" или нет? Без авторитетного толкователя это правило можно интерпретировать как хочешь. Впрочем, если пример заменить на

#include <stdlib.h>

struct X
{
    int n;
};

int main()
{
    X *p = (X *)malloc(sizeof(X));
    p->n = 1; // undefined behavior
    free(p);
}

то тут хоть как трактуй, получишь undefined behavior — либо из-за indirection, либо из-за попытки "to access a non-static data member or call a non-static member function of the object", что весьма доставляет, т.к. подобный код широко используется в C.