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

Сообщение Re: Впал в ступор увидев такое от 16.03.2019 8:22

Изменено 16.03.2019 11:07 rg45

Re: Впал в ступор увидев такое
Здравствуйте, Lanjeron32, Вы писали:

L>
L>struct str {
L>template<bool B> str() {}
L>};
L>extern str a;
L>

L>Далее автор предлагает "написать определение переменной a".

Он же не требует использовать при этом именно этот конкретный конструктор — который недоступен, согласно стандарту. Но можно воспользоваться конструторами копирования перемещения, которые определены неявно компилятором.
Re: Впал в ступор увидев такое
Здравствуйте, Lanjeron32, Вы писали:

L>
L>struct str {
L>template<bool B> str() {}
L>};
L>extern str a;
L>

L>Далее автор предлагает "написать определение переменной a".

Он же не требует использовать при этом именно этот конкретный конструктор — который недоступен, согласно стандарту. Но можно воспользоваться конструторами копирования перемещения, которые определены неявно компилятором.

Не уверен на счет корректности автоинициализации, как здесь
Автор: Croessmah
Дата: 16.03.19
, но, до тех пор, пока класс остается POD-типом, можно интерпретировать любой кусок памяти, достаточного размера, как объект данного типа и выполнить инициализацию копированием:

template <typename T>
using storage = std::array<unsigned char, sizeof(T)>;

str a = reinterpret_cast<const str&>(static_cast<const storage<str>&>(storage<str>()));