模板`inline`函数的静态局部变量

时间:2015-06-01 19:18:18

标签: c++ templates

如果我的理解是正确的话,C ++中nba.m <- nba.m %>%group_by(variable) %>% mutate(rescale=rescale(as.numeric(value))) 函数的

static局部变量保证就像是一个全局变量一样存在。

如果inline函数是模板,编译器可以生成多个版本的函数,是否同样适用?

1 个答案:

答案 0 :(得分:4)

以下文章应该很好地回答您的问题:http://www.geeksforgeeks.org/templates-and-static-variables-in-c/

简而言之:编译器为每个模板生成一个静态变量。

如果您想为所有模板使用相同的变量,您可以尝试这样的事情:

int& hack()
{
  static int i = 10;
  return i;
}

template <typename T>
void fun(const T& x)
{
  int &i = hack();
  cout << ++i;
  return;
}