FAQ

QA・C/QA・C++

QA·C/QA·C++に関する

ID.5

Q. 「推定型が const/volatile 付きで異なる場合でもテンプレート引数の推定を成功とする(-accd+)」オプションの設定基準を教えてください。 QAC++2.1J以上

A.


コンパイラの中には、適合するテンプレートを推定する際に、 テンプレート引数の型が const または voltile 修飾子の 有無のみで異なる場合でも推定成功とするものと、そうでない ものがあります。

お使いのコンパイラが、前者の挙動をする場合は、 「推定型が const/volatile 付きで異なる場合でも テンプレート引数の推定を成功とする(-accd+)」オプション を設定する必要があります。後者の場合は、デフォルト(-accd-)のまま にします。

具体的には、お使いのコンパイラが次のソースコードをエラーなく コンパイルできる場合は、-accd+オプションを設定する必要があります。 // Error ==> -accd- (default) // Success ==> -accd+ template <typename T> void foo(T&, T&) {} void bar() { int i; const int j = 0; foo(j, i); // Problem } int main(void) { return 0; }なお、設定方法は次の通りです。

GUIから設定する場合:
  [コンパイラ パーソナリティ] の [拡張] タブで
  [推定型が const/volatile 付きで異なる場合でもテンプレート引数の推定を成功とする]
  チェックボックスを選択します。

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

<< QA·C/QA·C++に関するに関するFAQ一覧へ戻る