一 简介

《深入理解C++11》

局部和匿名类型作模板实参
C++11 将C++98中的该限制放开
但不能在模板实参的位置进行以上的类型的声明定义

二 举例

template <typename T>
class Demo {};

template <typename T>
void func(T t) {}

struct S1 {
} a1;

struct {} a2;  // 匿名类型变量

typedef struct {}  S2; // 匿名类型?

int main() {

  struct S3 {} a3; // 局部类型

  Demo<S1> d1; // C++98 通过 C++11通过
  Demo<S2> d2; // C++98 通过 C++11通过!!
  Demo<S3> d3; // C++98 错误 C++11通过
  // iDemo < struct {} > d4;

  func(a1); // C++98 通过 C++11通过
  func(a2); // C++98 错误 C++11通过
  func(a3); // C++98 错误 C++11通过

  return 0;
}

 g++ test.cpp -o a.out -std=c++98

C++11 局部和匿名类型作模板实参

 g++ test.cpp -o a.out -std=c++11 通过

相关文章:

  • 2021-09-19
  • 2022-12-23
  • 2021-12-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-16
  • 2021-07-14
  • 2021-07-24
  • 2022-12-23
  • 2021-11-11
  • 2021-08-22
相关资源
相似解决方案