decltype

decltype 关键字用于检查实体的声明类型或表达式的类型及值分类。语法:

  1. decltype ( expression )

decltype 使用

  1. // 尾置返回允许我们在参数列表之后声明返回类型
  2. template <typename It>
  3. auto fcn(It beg, It end) -> decltype(*beg)
  4. {
  5. // 处理序列
  6. return *beg; // 返回序列中一个元素的引用
  7. }
  8. // 为了使用模板参数成员,必须用 typename
  9. template <typename It>
  10. auto fcn2(It beg, It end) -> typename remove_reference<decltype(*beg)>::type
  11. {
  12. // 处理序列
  13. return *beg; // 返回序列中一个元素的拷贝
  14. }