Кто-то из аудитории задал вопрос во время выступления «Панель стандартной библиотеки C ++» на CppCon 2016 ( YouTube ) о том, что имя experimental
может отпугнуть пользователей от использования чего-либо в пространстве имен:
Считаете ли вы, что [содержимое std::experimental
пространства имен] готово к производству, и можно ли привести этот аргумент, [что] он фактически готов к производству в течение следующих 3 лет, и, может быть, вам придется изменить свой код через 3 года, может быть?
Майкл Вонг (председатель ИК5 и ИК14 и редактор отдела параллелизма) первым ответил на вопрос:
Я думаю, что в комитете есть твердый консенсус, что он практически готов к производству. Как я уже говорил, в большинстве случаев 99% его попадает внутрь с воздуха. Мы хотим убедиться, что это не препятствие для вас. Вы можете понять, почему мы хотим поместить большие функции, большие группы функций в такой контекст, чтобы это не мешало остальной части всей библиотечной системы, но также облегчало вам ее использование. Теперь вы можете включить GCC с помощью специального флага для Concepts, вы знаете, что на самом деле облегчает вам его сегментирование.
Затем Алисдер Мередит (бывший председатель LWG) продолжил:
Я собираюсь занять здесь противоположную позицию. Одна из вещей, которые Херб [Саттер] сказал как организатор WG21, стандартной группы, когда мы двинулись по пути TS, это то, что он не думал, что TS будут успешными, пока мы не сможем что-то продвинуть, потому что это означает, что мы недостаточно экспериментируем, мы недостаточно амбициозны в том, для чего мы используем TS. Мы действительно этого хотимexperimental
Это намек на то, что да, эти вещи могут быть изменены, мы не связаны с этим, и мы можем ошибаться. Это сделано для того, чтобы снизить наш барьер для вещей, которые мы считаем как можно более амбициозными и достижимыми. [...] Теперь стандарт, похоже, находится на трехлетнем цикле выпуска, мы должны быть гораздо более амбициозными в установке действительно экспериментальных функций в TS и, возможно, быстрее продвигает вещи в самом основном стандарте. Но опять же, это будет интересная тема для обсуждения на следующих нескольких заседаниях [комитета по стандартизации C ++].
Последним ответил Стефан Т. Лававей (разработчик реализации Microsoft STL):
Важно проводить различие между экспериментальностью интерфейса и экспериментальностью реализации, потому что, когда вы говорите «готово к производству», что это означает? Обычно, когда речь идет о реализации, «готово к производству». Вполне возможно, что реализация [чего-то внутри std::experimental
] будет абсолютно [...] пуленепробиваемой. [...] Что-то вроде [...] <random>
заголовка в TR1, [это было] действительно, очень хорошо в TR1, и вы могли иметь абсолютно пуленепробиваемую реализацию этого, но оказалось, что интерфейс сбился существенно [до выпуска] C ++ 11 и [...] если бы мы знали тогда, что мы делаем сейчас, добавление experimental
было бы лучшим сигналом для людей: «Эй, может быть, вы не хотите использоватьstd::experimental::variate_generator
потому что, ха-ха, он исчезнет в C ++ 11 ".
Таким образом, похоже, что среди разработчиков стандартных библиотек и членов комитета есть некоторое желание, чтобы, по крайней мере в будущем, содержимое std::experimental
пространства имен было действительно «экспериментальным» по своей природе, и не следует воспринимать как само собой разумеющееся, что что-то std::experimental
будет сделать его стандартом C ++.
И нет, насколько я понимаю, поставщики стандартных библиотек должны решать, предоставляют ли они реализации для различных функций внутри std::experimental
.