次のようなコード例を考えてみましょう (これは、define
とを組み合わせる人工的な例にすぎtemplate
ません。意味を探らないでください):
#define COMMA ,
template <typename A> class Test
{
public:
Test(){}
void Foo(A var COMMA int test);
};
Test<int> Knarz;
質問:
最初にプリプロセッサが COMMA のすべての出現を検索/置換し、次にコンパイラがその順序でテンプレートをインスタンス化するという私の仮定は正しいですか?
ファローアップ:
上記の答えが「はい」の場合、そうであることを願っていますが、テンプレートと定義を使用したこのソリューションが機能する理由を説明できますか?