このインターフェースの機能が欲しいです。
func<Type1,CompileOption>( Type2 value)
//or
func<Type1>( Type2 value)
最初のコンパイル時パラメーターは型です。すべての関数呼び出しで必要です。
2 番目のコンパイル時パラメーターはオプションです。の動作を変更するために使用されfunc
ます。
関数自体は、通常のパラメーターの型 ( Type2
) に基づいてテンプレート化されています。
このようなインターフェイスを構築できますか?
できない場合、同様の動作を取得する方法はありますか? たとえば、コンパイル時の 2 つのパラメーターを受け取るテンプレート化された関数のように機能するもので、2 番目のパラメーターはオプションですか?
素朴なアプローチは機能しません。
// invalid syntax
template< typename Type1, typename CompileOption = Default, typename Type2>
void func( Type2 t2 );
// Does the wrong thing.
// CompileOption Parameter now change Type2.
template< typename Type1, typename Type2, typename CompileOption = Default>
void func( Type2 t2 );
//This kinda expresses what I'm looking for
template<typename Type2>
template<typename Type1, typename Optional = Default >
void func( Type2 t2 );