std :: result_of用于内置运算符

Any*_*orn 6 c++ type-traits c++11

确定类似-int()double()*double()通过的结果的正确语法是什么result_of

这失败了

std::result_of<operator-(int)>::type
std::result_of<operator*(double,double)>::type
Run Code Online (Sandbox Code Playgroud)

小智 8

std::result_of真的不是采取这里的方法.decltype不正是你想要什么,并可以作为decltype(-int()),decltype(double()*double())等等.如果你不知道,如果类型是缺省构造的,你也可以使用std::declval:decltype(-std::declval<int>()).

任何语法涉及的原因operator-都不起作用的原因是operator-语法仅适用于自定义重载运算符.内置运算符没有任何可以引用的支持功能.