3
template < typename T >
class CLASS_TEMPLATE { } ;

template < template < typename T > class CLASS >
void funcI ( ) { } 

template void funcI < CLASS_TEMPLATE > () ;

CLASS_TEMPLATE テンプレート引数に関するヒントがない場合、コンパイラはどのように関数をインスタンス化しますか?


テンプレート template に関する私の仮定は間違っていました。

の正式なテンプレート パラメータは、1 つのテンプレート パラメータを持つfuncI テンプレートです。

template < template < typename... > class CONTAINER >
void funcII ( ) 
{
   CONTAINER< int > container0 ;
   CONTAINER< float > container1 ;
   /* ... */
}

template void funcII < std::vector > () ;funcIIテンプレートを次のようにインスタンス化し{ std::vector< int > container0 ; std::vector< float > container1 ; /* ... */ }ます。

4

1 に答える 1

1

明示的にインスタンス化することにより

template void func < CLASS_TEMPLATE > () ;

あなたは効果的にこれを行っています:

template <>
void func<CLASS_TEMPLATE>() { }

これを行うためにテンプレート パラメーターを用意する必要はありませCLASS_TEMPLATEん。

于 2016-01-09T21:40:56.480 に答える