用c++实现函数对象的自动检测类型
Having Function Objects Auto Detect Type in c++
我想按相反的顺序对包含int的向量进行排序,但由于我已经习惯了在c++中键入推导,我已经传递了函数对象greater<>()而不指定int,因为它还能是什么?这在使用g++时不起作用,但在visual studio编译器中起作用,但是我注意到visual studio使用了void(不确定这是否可以)。函数对象是否可以自动推导类型,为什么?如果没有,是否有一些变通方法,因为类型可能需要很长时间才能键入?
这是c++14引入的一个功能(g++5.1支持该功能,可以通过传递-std=c++14
标志来激活)。
如果不指定类型,编译器将使用默认类型(void
),其中存在专门化。这种专门化有一个模板化的operator()
成员函数,然后编译器根据迭代器的值类型推导其参数类型。
std::greater<void>
有一个特殊化,void
是自C++14以来std::greater<class T>
的默认模板参数。
这种专门化只实现x > y
,推导参数和返回类型。
相关文章:
- 如何检测类型类型别名?
- 无法获得 std::from_chars 自动检测基础
- 标准::p空气<自动,自动>返回类型
- 自动返回类型匹配无效
- SFINAE - 检测类型 T 是指针、数组还是带有随机访问运算符的容器,以及给定的值类型
- std::绑定variadic模板和自动返回类型
- QImage:加载图像时自动检测格式
- 检测类型是否为"mapping"
- 如何让Visual Studio自动检测子文件夹中的.cpp文件?
- GCC - 如何自动检测每个基本模块
- 模板中的自动返回类型
- 自动返回类型不推断引用
- 自动返回类型的函数可以返回同级对象
- 为什么不在这个具有自动返回类型的函数中省略复制?
- 自动检测C++14 "return should use std::move"情况
- C++ 自动用于类型和非类型模板
- enable_if和自动返回类型
- G 7.2.0失败自动非类型参数扣除
- 函数有没有办法自动检测其参数的数据类型?(请不要建议函数重载)
- 用c++实现函数对象的自动检测类型