ある種のコンパイラ マジック (TM) に依存する特定の C++11 機能があることに、試行錯誤の結果、私の注意が向けられました。私は独自の標準準拠 stdlib の実装をいじっています。stdlib の実装がすぐに利用できることは知っていますが、これは小さなアプリケーション用の私自身のバージョンです。
昨夜std::initializer_list
、私は仕様に従って実装しましたが、うまく機能させることができませんでした。高低の答えを探しましたが、それは不可能であり、コンパイラ自体に変更が必要であるという声明が残っていました. さて、私はそれの現在の実装を見てみることにしましたlibstdc++
、そして確かに私の実装はデザインがまったく同じで、端がわずかに異なっているだけでした.のものと同じデザインlibstdc++
です。名前空間 std にある必要があることに気付くまでに 6 時間かかりました。実装は、可能にするコンパイラへのプロキシであることが判明し、コンパイラ自体がクラスをinitializer_list
検索しますinitializer_list
namespace std
.
私の質問は、ある種の特別なコンパイラ マジックが機能すること、隠されたプロキシ接続を必要とすること、または新しい C++11 ライブラリ機能のいずれかのコンパイラ イントリスティックを秘密にすることを認識する必要がある他のライブラリ機能がもうないことです。これらを事前に知りたいので、コンパイラの魔法に依存する他の機能を実装するときに備えて、試行錯誤でそれを理解するために丸一日を無駄にするのではなく; これは退屈でかなり面倒になる可能性があります。
ありがとう。