私は2つの機能を宣言している:関数が使用されている、テンプレートかどうか?
template<typename T>
void foo(T& in) { cout << in; }
void foo(bool& b) { cout << "Bool:" << (b ? "True" : "False");}
は、私はこのような関数を呼び出しています:
bool var = false; foo(var);
私はテストコードを書くことができます知っています。しかし、これがコンパイラ依存の選択である場合は、 テストコードを書くことで完全なカバレッジが得られることはありません。
私は次のように呼び出します。bool var = false; foo(var); – xjsXjtu
コンパイラに依存する選択肢であれば、どのようにして1つの答えを得ることができますか? – Vivick
コンパイラに依存しません(コンパイラにエラーがない限り)。テンプレートとnin-templateが同じように一致する場合は、non-templateが優先されます。 BTWでは 'out << std :: boolalpha << true;を使って' bool'を文字列としてフォーマットすることができます(フラグはリセットされるまで適用されます)。デフォルトでは 'true'(または' false')のように書式化されます。本当に必要な場合は、カスタムのstd :: numpunctファセットを使用して文字列を変更できます。 –