FAQ

QA・C/QA・C++

QA・C++ 特有のFAQ

ID.3

Q. 「関数テンプレート・ボディの解釈を遅らせる(-dpft+)」オプションの設定基準を教えてください。 QA C++全バージョン

A.


コンパイラの中には、関数テンプレートの構文解析をテンプレートの インスタンスが作成される時点まで遅らせているものと、そうでない ものがあります。

お使いのコンパイラが、前者の挙動をする場合は、 「関数テンプレート・ボディの解釈を遅らせる(-dpft+)」オプション を設定する必要があります。後者の場合は、デフォルト(-dpft-)のまま にします。

具体的には、お使いのコンパイラが次のソースコードをエラーなく コンパイルできる場合は、-dpft+オプションを設定する必要があります。 // Error ==> -dpft- (default) // Success ==> -dpft+ class C { public: template <class T> void foo(){ u8 my_u8; } }; typedef unsigned int u8; void bar() { C c; c.foo<int>(); // Problem } int main(void) { return 0; }なお、設定方法は次の通りです。

GUIから設定する場合:
  [コンパイラ パーソナリティ] の [拡張] タブで
  [関数テンプレート・ボディの解釈を遅らせる]
  チェックボックスを選択します。

設定ファイルを直接編集する場合:
  -dpft+ と記述します。

<< QA・C++ 特有のFAQに関するFAQ一覧へ戻る