decltype
是一个 C++11 关键字,用于在编译时获取表达式的类型,而不实际计算表达式的值。它通常用于以下几个方面:
- 类型推导:可以获取表达式的类型。这对于泛型编程、模板编程非常有用
int x = 22; decltype(x) y; // y的类型为int
- 函数返回值类型推导:可以使函数的返回类型取决于给它参数
template <typename T, typename U> auto add(T t, U u) -> decltype(t + u) { return t + u; }
- 访问类成员的类型:可以使用 decltype 来获取类成员的类型
struct MyStruct { int x; double y; }; decltype(MyStruct::x) var; // var的类型为int decltype(MyStruct::y) var2; // var2的类型为double