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