我想按相反顺序对包含整数的向量进行排序,但由于我已经习惯在c ++中输入演绎,我已经传递了函数对象更大<>()而没有指定int,既然还有什么呢?这不能使用g ++,但确实可以使用visual studio编译器,但是我注意到visual studio使用了void(不确定这是否正常)。函数对象是否可以自动推断类型,为什么或为什么不?如果没有,有一些解决方法,因为类型可以变长很长?
答案 0 :(得分:2)
这是c ++ 14引入的一个功能(g ++ 5.1支持,可以通过传递-std=c++14
标志来激活)。
如果您没有指定类型,编译器将采用存在a specialization的默认值(void
)。此专门化具有模板operator()
成员函数,然后编译器根据迭代器的值类型推导出参数类型。
答案 1 :(得分:1)
自{C} 14以来,std::greater<void>
,void
的特殊化是std::greater<class T>
的默认模板参数。
此专门化只是实现x > y
,推导出参数和返回类型。