Глядя на это: cppreference
Я обнаружил, что с трудом понимаю этот абзац:
Определяемые пользователем преобразования (как конструкторы преобразования, так и определяемые пользователем функции преобразования) не допускаются к участию в неявной последовательности преобразования, где можно было бы применить более одного пользовательского преобразования. В частности, они запрещены, если целью преобразования является первый параметр конструктора или неявный параметр объекта пользовательской функции преобразования, и что преобразователь / пользовательское преобразование является кандидатом на
- copy-инициализация класса с помощью пользовательского преобразования,
- инициализация с помощью функции преобразования,
- инициализация с помощью функции преобразования для прямой привязки ссылок,
- инициализация конструктором, где аргумент является временным в классе copy-initialization,
- инициализация списком-инициализация, когда список инициализаторов содержит ровно один элемент, который сам является списком инициализаторов, а цель является первым параметром конструктора класса X, а преобразование - в X или ссылку на (возможно, cv- квалифицированный) X
Полагаю, я понимаю идею, но случаи кажутся мне странными.
Ниже приведен пример, приведенный для последнего случая, так что это кажется ясным.
Но не является ли 1-я пуля частным случаем 4-й?
Аналогичным образом зачем упоминать и второе, и третье, когда последнее кажется (довольно очевидно, если я не сумасшедшим) частным случаем первого?
Это просто для того, чтобы подчеркнуть определенные случаи, или я что-то неправильно понимаю?
Также 1-й, похоже, пересекается со следующими 3 ...
Почему это не просто "кандидат на инициализацию с помощью преобразования, определенного пользователем"? Мне кажется, что это охватило бы все случаи (возможно, не обязательно это, но определенно что-то более простое, чем написано).
П.С .: простите за широту вопроса, я просто запутался, глядя на это:)