重複の可能性:
2 フェーズ ルックアップ - 説明が必要
テンプレート クラスを使用しているときに、#include がないというエラーや警告がコンパイラに表示されません。
たとえば、「A」というクラスがあり、次のように見えるとします。
template<class T>
class A {
void print() const {cout << "Hey I didn't use include for
iostream and It works just fine!!!";}
};
テンプレート < class T > を削除すると、<iostream >include がないというエラーが発生します。
テンプレート クラスを使用しているときにコンパイラがこれらのエラーを表示しないのはなぜですか?
指摘しておくと、それが機能すると言うとき、つまり、クラスを作成しているときにコンパイルエラーは表示されませんが、エラーがすぐに表示されるのに対し、非テンプレートクラスとは対照的に、それを使用する場合にのみ表示されます。