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