[問題] 這個 template 後面三行需要詳解...

作者: tomjpsun (湯姆熊)   2018-05-21 16:34:39
開發平台(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; }
};
}
作者: shadow0326 (非議)   2018-05-21 17:51:00
依序是type alias、user-defined conversion、operator overloading兩個()中,第一個()代表對圓括號overloading,第二個()代表這個overloading不吃任何參數通常就是讓class變成functor用的囉
作者: LPH66 (-6.2598534e+18f)   2018-05-21 21:44:00
以前回過一模一樣的問題直接給文章代碼 #1OvC3pJQ
作者: tomjpsun (湯姆熊)   2018-05-22 09:21:00
感謝回答, 推 LPH66 以前那篇...

Links booklink

Contact Us: admin [ a t ] ucptt.com