Почему C ++ 0x не поддерживает неявные преобразования? - PullRequest
0 голосов
/ 02 мая 2011

Почему C ++ 0x не одобряет неявные преобразования для пользовательских типов, таких как объекты?Есть ли проект, который на самом деле использует эту (неправильную) функцию?Всякий раз, когда я вижу конструктор с одним аргументом в коде, который я проверяю или изменяю, я воспринимаю его как ошибку и делаю его явным.Пока что это работало хорошо, и никто не жаловался.

Спасибо.

РЕДАКТИРОВАТЬ: Позвольте мне процитировать Алекса Степанова, создателя STL:

Откройте вашу книгу C ++и читайте про явное ключевое слово!Также попросите вашего соседского члена комитета C ++, чтобы окончательно отменить неявные преобразования.Существует распространенное заблуждение, часто распространяемое людьми, которые должны лучше знать, что STL зависит от неявных преобразований.Не так!

Ссылка: A.Степанов.Примечания C ++

ВНОВЬ РЕДАКТИРОВАТЬ: Нет, не спор, плз.Мне просто любопытно, использует ли кто-то неявные преобразования в своей работе.Я никогда не видел ни одного проекта, который позволял бы неявное преобразование для объектов.Я долго думал и не мог придумать ни одного гипотетического сценария, где неявное преобразование не стало бы минным полем.Я имею в виду преобразования с одним аргументом в C ++, а не преобразования типа float-> double или аналогичные, унаследованные от C.

Ответы [ 2 ]

7 голосов
/ 02 мая 2011

Очевидный ответ заключается в том, что код, написанный и работающий на C ++ 03, должен продолжать работать с компиляторами C ++ 0x.

2 голосов
/ 02 мая 2011

С одной стороны, это было бы чрезвычайно разрушительным изменением для удаления неявного преобразования из языка - даже если оно было сделано необязательным и не по умолчанию с ключевым словом implicit.

У меня естьвыполнил поиск в comp.std.c ++, и, похоже, он вообще не обсуждался в этой группе - хотя по этой теме было несколько вопросов, никто, похоже, даже не предлагал даже удалить его.Я бы, конечно, тоже не пошел бы так далеко: это особенность, которую я с радостью иногда использую, и я не подписываюсь на создание всех возможных конвертирующих конструкторов explicit - если только это не вызывает реальных ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...