[问题] 这个 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