Мне было доведено до сведения проб и ошибок, что есть функции certian С++ 11, которые зависят от какой-то магии компилятора (TM). Я возился с реализацией собственного стандартного стандартного stdlib. Я знаю, что есть легкодоступные реализации stdlib, но это больше моя личная версия для небольших приложений.
Вчера вечером я реализовал std::initializer_list
в соответствии со спецификацией, и у меня возникли проблемы с ее работой, я искал высокий и низкий для анонимников только для того, чтобы оставить заявления, что это невозможно, и что для компилятора потребуются изменения сам. Хорошо, я решил взглянуть на текущую реализацию libstdc++
, и, конечно же, моя реализация была точно такой же, как и в дизайне, немного по-разному по краям, я потратил бессмысленные часы на выяснение, почему реализация не работала, когда он был точно таким же, как и в libstdc++
. Это было не до шести часов, прежде чем я понял, что это должно быть в пространстве имен std. Оказывается, реализация представляет собой прокси-сервер для компилятора, который делает возможным initializer_list
, а сам компилятор ищет класс initializer_list
в namespace std
.
Мой вопрос в том, есть ли другие функции библиотеки, о которых я должен знать, для чего требуется какая-то специальная магия компилятора для работы, какие-либо скрытые прокси-соединения или секретная интуиция компилятора для любой из новых функций библиотеки С++ 11? Я хотел бы знать это заранее, чтобы я мог быть готов, когда я реализую другие функции, которые зависят от магии компилятора, вместо того, чтобы тратить целый день на то, чтобы понять это методом проб и ошибок; который может стать утомительным и довольно раздражающим.
Спасибо.