выполнить эту обязанность (т.е. в этом случае в операторе if).

я двигаюсь-конструируюa изbэто все ещенеобходимо разрушатьbили я могу уйти без этого?

Этот вопрос приходил мне в голову во время реализацииoptional<T> шаблон. Выдержка:

~optional()
{
    if (initialized)
    {
        reinterpret_cast<T*>(data)->~T();
    }
}

optional(optional&& o) : initialized(o.initialized)
{
    if (initialized)
    {
        new(data) T(std::move(*o));   // move from o.data
        o.initialized = false;        // o.data won't be destructed anymore!
    }
}

Конечно, я мог бы просто заменить булinitialized с трехзначным перечислением, которое различает инициализированный, неинициализированный и перемещенный из. Я просто хочу знать, если это строго необходимо.

Ответы на вопрос(3)

Ваш ответ на вопрос