在C++中,您可以使用非类型模板参数创建模板,如下所示:
template< int I >
void add( int& value )
{
value += I;
}
int main( int argc, char** argv )
{
int i = 10;
add< 5 >( i );
std::cout << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
其中打印"15"到cout.有什么用?是否有任何理由使用非类型模板参数而不是更常规的类似参数:
void add( int& value, int amount )
{
value += amount;
}
Run Code Online (Sandbox Code Playgroud)
对不起,如果已经被问过(我看了但找不到任何东西).
有关:
我可以这样做吗?
template <int N> union Vector
{
float e[ N ] ;
// If N is 3, define x,y,z components
#if N==3
struct { float x,y,z ; } ;
#elif N==2
struct { float x,y ; } ;
#endif
} ;
// use
int main()
{
Vector<2> xy ;
xy.e[ 0 ] = 5 ;
xy.e[ 1 ] = 2 ;
xy.x = 2 ;
Vector<3> xyz ;
xyz.z = 4 ;
}
Run Code Online (Sandbox Code Playgroud)