天天看點

C++ 11 新特性:函數聲明auto

1.概覽

  • 1.1 函數名中的箭頭,用來表明函數的return type,其使用在函數的傳回類型需要通過模闆參數進行推導,使用在decltype()和declval()不友善的場景

2.正文

c++ 中提供了如下的方式,定義一個函數以及傳回值

Go

return-type identifier ( argument-declarations... )
如: int fn(....){...}
      

以及

CSS

auto identifier ( argument-declarations... ) -> return_type
如: auto identifier(...) -> int {...}
      

C++

//這種方法無法做到
template <typename T1, typename T2>
decltype(a + b) compose(T1 a, T2 b);

//需要使用declval
template <typename T1, typename T2>
decltype(std::declval<T1>() + std::declval<T2>()) compose(T1 a, T2 b);
      
template <typename T1, typename T2>
auto compose(T1 a, T2 b) -> decltype(a + b);
      

3.ref