Sun Studio 12: C++ ユーザーズガイド

7.5.3 問題がある検索の回避

コンパイラがコンパイル対象ではないファイルを検索するために、紛らわしい警告あるいはエラーメッセージが生成されることがあります。通常、問題は、たとえば foo.h というファイルにテンプレート宣言が含まれていて、foo.cc などの別のファイルが暗黙で取り込まれることにあります。

ヘッダー foo.h にテンプレート宣言がある場合、デフォルトではコンパイラは、C++ ファイルの拡張子 (.C、.c、.cc, .cpp.cxxc++ のいずれか) を持つ foo というファイルを探します。そうしたファイルを見つけた場合、コンパイラはそのファイルを自動的に取り込みます。こうした検索の詳細は、「7.5 テンプレート定義の検索」を参照してください。

このように扱われるべきでないファイル foo.cc が存在する場合、選択肢は 2 つあります。