C++中`types<fun(int)>`这类用法的官方名称是什么?
关于
types<fun(int)>用法的疑问解答 问题描述
尝试将type trait与functor配合使用,代码如下:
struct fun { template <class T> constexpr auto operator()(T a) const { return 0; } }; template<class T> struct types{};
想了解types<fun(int)>这种用法的官方名称,它是否是获取函数调用运算符的类型?
解答
官方名称:这种写法是**“通过调用语法表示 functor 的成员函数调用运算符类型”**,属于C++中对类成员函数类型的便捷表示方式——当用类名后跟参数列表(如
fun(int))作为类型时,编译器会自动匹配该类中对应的operator()成员函数,并将其解析为该成员函数的完整类型。是否是获取函数调用运算符的类型:是的,但需明确细节:
- 你的
fun类中operator()是模板函数,fun(int)会触发模板实例化,得到T=int版本的operator()(int) const; - 最终
fun(int)对应的类型是该成员函数的完整类型:int(fun::*)(int) const,包含所属类、参数类型、返回值以及成员函数的const限定符,并非普通非成员函数指针类型。
- 你的
内容的提问来源于stack exchange,提问作者rodman10
相关产品推荐
相关产品推荐

