作者tomjpsun (湯姆熊)
看板C_and_CPP
標題[問題] 這個 template 後面三行需要詳解...
時間Mon May 21 16:34:39 2018
開發平台(Platform): (Ex: Win10, Linux, ...)
All
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
All
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
libstdc++
問題(Question):
總問題:請問最後三行的動作做了什麼事?
小問題:
請解說一下 type 變成代表什麼了,又
最後一行兩個()()是如何解釋?
這種問題以後如何尋找谷歌關鍵字?或者哪裡有討論群?
謝謝板上各位大大
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
出處
http://en.cppreference.com/w/cpp/header/type_traits
namespace std {
template <class T, T v>
struct integral_constant {
static constexpr T value = v;
using value_type = T;
using type = integral_constant<T, v>;
constexpr operator value_type() const noexcept { return value; }
constexpr value_type operator()() const noexcept { return value; }
};
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.59.196
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1526891682.A.56D.html
推 shadow0326: 依序是type alias、user-defined conversion、 05/21 17:51
→ shadow0326: operator overloading 05/21 17:52
→ shadow0326: 兩個()中,第一個()代表對圓括號overloading,第二個 05/21 17:53
→ shadow0326: ()代表這個overloading不吃任何參數 05/21 17:54
→ shadow0326: 通常就是讓class變成functor用的囉 05/21 17:56
→ LPH66: 以前回過一模一樣的問題直接給文章代碼 #1OvC3pJQ 05/21 21:44
→ tomjpsun: 感謝回答, 推 LPH66 以前那篇... 05/22 09:21