Ответ 1
Я поддерживал реализацию Visual Studio стандартной библиотеки С++ в течение 7 лет (VC STL была написана и лицензирована PJ Plauger из Dinkumware еще в середине 90-х годов, и я работаю с PJP для сбора новых функций и обслуживания bugfixes), и я могу сказать, что я делаю все свое редактирование "вручную" в текстовом редакторе. Ни один из STL-заголовков или источников не генерируется автоматически (хотя исходные источники Dinkumware, которых я никогда не видел, проходят автоматическую фильтрацию, чтобы создавать настраиваемые капли для Microsoft), а материал, который проверяется в исходном элементе управления, отправляется непосредственно пользователям без любая дальнейшая модификация (теперь, то есть, ранее мы запускали их через шаг фильтрации, который вызывал множество головных болей). Я печально известен тем, что не использовал IDE/автозаполнение, хотя я использую Source Insight для просмотра базы кода (особенно, лежащей в основе CRT, чьи кишки я менее знаком), и я широко полагаюсь на grep. (И, конечно, я использую инструменты diff, мой любимый - это внутренний инструмент с именем "странный".) Я занимаюсь очень тщательным редактированием вырезания и вставки, но по-разному, как новички; Я делаю это, когда полностью понимаю структуру кода, и я хочу точно воспроизвести его части, не покидая ничего. (Например, для разных контейнеров нужны очень похожие механизмы для работы с распределителями, вероятно, они должны быть централизованы, но в то же время, когда мне нужно исправить basic_string, я проверю, что вектор правильный, а затем скопируйте его механизмы.) Я создал код, возможно, дважды - один раз, когда штампование прозрачных операторных функторов С++ 14, которые я разработал (плюс < > , умножает < > , больше < > и т.д., является очень повторяющимся) и снова при реализации/предлагая переменные шаблоны для типов типов (недавно проголосовали за техническую спецификацию Основы библиотеки, вероятно, предназначенные для С++ 17). IIRC, я написал фактическую программу для операторных функторов, в то время как я использовал sed для переменных шаблонов. В обычном текстовом редакторе, который я использую (Metapad), есть возможности поиска и замены, которые являются весьма полезными, хотя и более слабыми, чем прямые регулярные выражения; Мне нужны более сильные инструменты, если я хочу реплицировать фрагменты текста (например, is_same_v = is_same <T> :: value).
Как хранители STL помнят все это? Это работа на полный рабочий день. И, конечно же, мы постоянно консультируемся со стандартным/рабочим документом для необходимых интерфейсов и поведения кода. (Недавно я обнаружил, что могу с большим трудом перечислить все 50 штатов США из памяти, но я, конечно же, не смог бы перечислять все алгоритмы STL из памяти. Однако я запомнил самое длинное имя, как бесполезную мелочь.: → )