Например, я предполагаю, что я понимаю, что инициализация списка в контексте прямой инициализации (vs copy-) означает - int x{}
vs int x = {}
принципе.
Но на cppreference я нашел это:
Когда объектом типа класса является copy-, инициализированным из объекта того же или производного типа класса или инициализированным по умолчанию в контексте инициализации copy-, все функции-кандидаты являются всеми конструкторами преобразования инициализируемого класса. Список аргументов - это выражение инициализатора.
Думаю, я понимаю, почему кандидаты преобразуют конструкторы для первого случая, но не для второго. Я имею в виду, что я не могу написать что-то вроде MyClass x = MyClass
, а = MyClass()
будет инициализацией значения, а = MyClass(args...)
будет прямой инициализацией.
И даже если такая конструкция существует, я не понимаю, почему временный объект MyClass
"construction" должен включать в себя все конструкторы преобразования.
(И x
это не то, о чем мы говорили здесь, как я вижу, потому что это определенно copy- построено, а не построено по умолчанию).
Поэтому, я думаю, я смущен здесь.