Size: a a a

2020 May 25

AD

Andrey Davydov in pro.cxx
copy list  initialization и direct list initialization это 2 разных вида и, как, и сказал Игорь, они отличаются тем, как работают с explicit-конструкторами.
Чтобы было не скучно, этот механизм отличается от того как "обычные" copy и direct initialization работают с explicit-конструкторами.
источник

IA

Igor Akhmetov in pro.cxx
vehlwn
Давайте следовать диаграмме. В бинго нет просто лист инициализации.
Давай поспокойнее. На какую диаграмму смотреть? Я утверждаю что если нет default ctor и есть конструктор с initializer_list то это называется list initialization по этому пункту - http://eel.is/c++draft/dcl.init#list-3.7
источник

MM

Mikhail Matrosov in pro.cxx
да, это шикарный доклад, я смотрел. но я что-то не заметил, чтобы там был ответ именно на мой вопрос
источник

MM

Mikhail Matrosov in pro.cxx
по таймкоду тоже он ведь про это не говорит
источник

MM

Mikhail Matrosov in pro.cxx
Andrey Davydov
copy list  initialization и direct list initialization это 2 разных вида и, как, и сказал Игорь, они отличаются тем, как работают с explicit-конструкторами.
Чтобы было не скучно, этот механизм отличается от того как "обычные" copy и direct initialization работают с explicit-конструкторами.
супер, это я уже понял. теперь мне хочется знать, можно ли достичь для двух этих форм разного эффекта, при условии, что они обе компилируются?
источник

IA

Igor Akhmetov in pro.cxx
Mikhail Matrosov
супер, это я уже понял. теперь мне хочется знать, можно ли достичь для двух этих форм разного эффекта, при условии, что они обе компилируются?
Скорее всего нет, либо в обоих случаях будет list init либо в обоих value init в зависимости от того какие конструкторы, так что должно работать одинаково.
источник

MM

Mikhail Matrosov in pro.cxx
Igor Akhmetov
Скорее всего нет, либо в обоих случаях будет list init либо в обоих value init в зависимости от того какие конструкторы, так что должно работать одинаково.
Но, т.к. это С++, на 100% сложно что-то утверждать, верно? :)
источник

AD

Andrey Davydov in pro.cxx
Mikhail Matrosov
супер, это я уже понял. теперь мне хочется знать, можно ли достичь для двух этих форм разного эффекта, при условии, что они обе компилируются?
Думаю нет, для того и нужна та разница в работе с explicit constructors, по сравнению с С++98 direct и copy-initialization.
источник

IA

Igor Akhmetov in pro.cxx
Mikhail Matrosov
Но, т.к. это С++, на 100% сложно что-то утверждать, верно? :)
Сейчас Андрей объяснит :)
источник

MM

Mikhail Matrosov in pro.cxx
Andrey Davydov
Думаю нет, для того и нужна та разница в работе с explicit constructors, по сравнению с С++98 direct и copy-initialization.
Что ж, для удовлетворения моего праздного любопытства мне этого вполне достаточно. Спасибо! Но я в любом случае предложил бы это зафиксировать в качестве ответа на СО. Для потомков :)
источник

v

vehlwn in pro.cxx
Igor Akhmetov
Давай поспокойнее. На какую диаграмму смотреть? Я утверждаю что если нет default ctor и есть конструктор с initializer_list то это называется list initialization по этому пункту - http://eel.is/c++draft/dcl.init#list-3.7
Диаграмма в конце видео, под видео есть ссылка на твиттер с этой картинкой. 3/7 столбцов таблицы называется лист иницаилизация.
источник

MM

Mikhail Matrosov in pro.cxx
vehlwn
Диаграмма в конце видео, под видео есть ссылка на твиттер с этой картинкой. 3/7 столбцов таблицы называется лист иницаилизация.
Да, столбец "empty braces" вполне согласуется с нашим обсуждением
источник

IA

Igor Akhmetov in pro.cxx
vehlwn
Диаграмма в конце видео, под видео есть ссылка на твиттер с этой картинкой. 3/7 столбцов таблицы называется лист иницаилизация.
Там написано "default ctor if there is one, otherwise std::initializer_list ctor". "std::initializer_list ctor" это и есть list initialization.
источник

v

vehlwn in pro.cxx
Igor Akhmetov
Там написано "default ctor if there is one, otherwise std::initializer_list ctor". "std::initializer_list ctor" это и есть list initialization.
int a {5} тоже лист инициализация.
источник

v

vehlwn in pro.cxx
Igor Akhmetov
Там написано "default ctor if there is one, otherwise std::initializer_list ctor". "std::initializer_list ctor" это и есть list initialization.
std::vector<int> v(std::initializer_list<int>{1,2,3}) выбран к-тор с стд инит лист, но это не лист иницаилизация.
источник

IA

Igor Akhmetov in pro.cxx
vehlwn
std::vector<int> v(std::initializer_list<int>{1,2,3}) выбран к-тор с стд инит лист, но это не лист иницаилизация.
Оба примера никак не относятся к тому что мы обсуждаем. Я дал ссылку на конкретный пункт стандарта по которому то что происходит при X x{}; где X это класс без default ctor но с initializer_list ctor называется list initialization. Если хочется поспорить укажи конкретно где я не прав.
источник

v

vehlwn in pro.cxx
Igor Akhmetov
Оба примера никак не относятся к тому что мы обсуждаем. Я дал ссылку на конкретный пункт стандарта по которому то что происходит при X x{}; где X это класс без default ctor но с initializer_list ctor называется list initialization. Если хочется поспорить укажи конкретно где я не прав.
[dcl.init.list]
List-initialization is initialization of an object or reference from a braced-init-list.

Ошибка в слове "X это класс без default ctor", потому что наличие или отсутствие дефолтного ктора никак не связано с тем, что это называется лист инициализацией.
источник

v

vehlwn in pro.cxx
Igor Akhmetov
Оба примера никак не относятся к тому что мы обсуждаем. Я дал ссылку на конкретный пункт стандарта по которому то что происходит при X x{}; где X это класс без default ctor но с initializer_list ctor называется list initialization. Если хочется поспорить укажи конкретно где я не прав.
Фигурные скобки называются лист инициализацией. Все остальное следует из правил лист инициализации.
>Otherwise, if the initializer list has no elements and T is a class type with a default constructor, the object is value-initialized.
И остальные 12 правил.
источник

IA

Igor Akhmetov in pro.cxx
Переслано от vehlwn
Не будет. Я для кого видос скинул? Если есть дефолт ктор, выберется он. Иначе - стд инит лист.
источник

IA

Igor Akhmetov in pro.cxx
Ок, но спор начался с того что ты сказал что "не будет list init".
источник