c++中的函數名帶箭頭


1.概覽

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

2.正文

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

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

以及

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

原因是: 當使用decltype進行返回類型推導的時候,是無法獲取到模板參數的,需要使用declval進行輔助推導

//這種方法無法做到
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);

由於使用declval()這種方法太過於繁瑣,所以搞出了這東西

template <typename T1, typename T2>
auto compose(T1 a, T2 b) -> decltype(a + b);

3.ref

3.1arrow-operator-in-function-heading


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM