コンパイラのエラー メッセージに適した優れたスタイルを事前に採用しない限り、C++ テンプレートを使用すると、プロジェクトの開発と保守が非常に困難になる可能性があると聞いたことがあります。
そのようなスタイルを説明し、説明しているリソースへのポインタをいただければ幸いです。
私は特定の指針を求めていますが、質問はオープンエンドであると解釈することができます。
アンドレイ・アレキサンドレスクの本、モダンc ++デザインは、あなたが探しているものかもしれません。
型の非互換性エラーが一連のテンプレートの奥深くで発生すると、テンプレート エラー メッセージが扱いにくくなる傾向があります。std::enable_if
クラスまたは関数テンプレートをインスタンス化するために使用される型が特定の要件を事前に満たしていることを確認するなど、型のサニティ チェック手法を使用してテンプレート エラーが早期に検出されるように、コードを記述することができます。実際、これは提案された C++11 の目標でしたが、concepts
実現することはありませんでした。
コーディング スタイルでできる主なことはstatic_assert
、テンプレート パラメーターを使用する前に確認することです。[注: enable_if も便利ですが、この種のタスクには static_assert の方が一般的に適していると思います。]
これにより、(たとえば)「エラー: X は整数型でなければなりません」という行に沿ったエラー メッセージが表示される可能性が少なくともいくらか得られます_Detail::_Some_internal_type<double>
。 _Foo のオーバーロードが ZZZ 型のパラメーターをとらないか、適切な変換がありませんでした。候補は次のとおりです: [ここに無関係と思われるがらくたの 5 ページを挿入]."