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