ある関数が別の関数を呼び出し、インライン化が必要な場合、2 つの関数の定義の順序は重要ですか? 2 つの定義が同じ翻訳単位で発生するとします。
私が主に興味を持っているのは、C++ 標準がそれについて述べていることです。ただし、特定のコンパイラでのインライン展開に関する重要な情報がある場合は、それにも関心があります。リンク時の最適化は行われない (無効になっている) と仮定してください。
具体的には、次の 2 つのバージョンは、C++ 標準に従ってインライン化を達成する可能性が同じですか?
バージョン 1:
inline void foo() { ... }
void bar() { ... foo(); ... }
バージョン 2:
inline void foo();
void bar() { ... foo(); ... }
void foo() { ... }
編集: この質問は、一般的なインライン化の達成に関するキーワードの有効性に関するものではないことに注意してください。私は具体的に、インライン化の実現に関連する関数定義の順序inline
について標準が何かを述べているかどうかについて尋ねます。