template< typename TypeParameter > void f( TypeParameter x ) { x.doSomething(); } template< int nonTypeParameter, typename AnotherParam > int g( AnotherParam ) { return nonTypeParameter + 1; } int gg() { return g< 1 >( 2 ); } // calls g< 1, int >( 2 ) template< template< typename > class TemplateParam > void h( TemplateParameter< int > intContainer ) { }