相关疑难解决方法(0)

使用非类型模板参数而不是常规参数的原因?

在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)

对不起,如果已经被问过(我看了但找不到任何东西).

c++ templates

24
推荐指数
4
解决办法
5321
查看次数

预处理程序指令#if和非类型模板参数

有关:

我可以这样做吗?

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)

c++ templates c-preprocessor

3
推荐指数
2
解决办法
937
查看次数

标签 统计

c++ ×2

templates ×2

c-preprocessor ×1