型特性は、通常、SFINAE イディオムを使用して実装されます。これは、関数テンプレート宣言内に不適切な形式の可能性のある式を配置します。問題の型名を宣言に代入するとエラーになりますが、エラーはそのコンテキストで抑制されるため、宣言が使用されるかどうかのいずれかになります。ただし、フォールバック オーバーロードは、欠落している可能性のある宣言をバックアップします。別のコードが関数にアクセスして、機密性の高いオーバーロードまたはバックアップのみがインスタンス化されたかどうかを検出します。
final
クラスのテンプレートのインスタンス化中にのみエラーが発生する可能性があるため、これは機能しません。クラスをオーバーロードする方法はありません。また、final から派生した場合に失敗するがコンパイルを停止しないクラスを暫定的に定義する方法もありません。
標準引用、C++11 §14.8.2/8:
関数の型とそのテンプレート パラメーターの型の直接のコンテキストで無効な型と式のみが推定エラーになる可能性があります。[ 注: 置換された型と式の評価は、クラス テンプレートの特殊化および/または関数テンプレートの特殊化のインスタンス化、暗黙的に定義された関数の生成などの副作用をもたらす可能性があります。 context」であり、プログラムの形式が正しくない可能性があります。— エンドノート]