Подтвердить что ты не робот

Почему ключевое слово ограничения не является частью С++?

В названии говорится все. Мне любопытно, почему ключевое слово ограничения не является частью С++? Я мало что знаю о С++, и я все еще не могу найти что-либо в Интернете, что бы послужило причиной его блокировки. Кто-нибудь знает, какие ужасные вещи произойдут, если стандарт С++ будет использовать это ключевое слово аналогично тому, как это делает C? Это просто не нужно?

Больше объяснений: это не об использовании, возможно, у меня не будет никакой пользы от этого ключевого слова за всю мою жизнь. Этот вопрос касается только любопытства, поскольку ограничение является частью C с C99, то есть 15 лет.

Прочтите это также: Меня интересуют технические причины, а не такие мнения, как "Они просто не понравились, это не достаточно круто"

4b9b3361

Ответ 1

Есть несколько проблем при определении ограничения на С++, некоторые из них перечислены в документе WG N3635: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3635.pdf "На пути к подобной семантике для С++"

Некоторые возможные проблемы с ограничением в С++:

  • Ограничить членов класса и коснуться указателем "this pointer"
  • Передача ограничивающих квалификаторов на функции, функторы, lambdas и шаблоны
  • Экранирование значений указателя ограничения внутри функций
  • Перекрытие элементов массива, шагов

В документе также перечислены несколько компиляторов С++ с ограниченной поддержкой "ограничений" для С++.

В N3635 также есть интересная записка о неинтеграции ограничения на С++:

Во время рассмотрения включения функции C99 в С++ во время собрания Mont Tremblant ограничение было рассмотрено, но ожидало бумажного предложения, хотя никто не вышел вперед.

Ограничение - это функция C99 и никогда не предназначалась для работы в абстракциях классов, и, возможно, это связано с тем, что указатели не распространены в С++.... он был разработан для мелкозернистого сглаживания для C, но не был хорошо разработан для псевдонимов на основе типов в С++