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