如何在非静态方法上使用std :: result_of?

时间:2014-09-19 02:33:22

标签: c++

我在std::result_of上浏览了问题,但无法找到这个问题的答案。

如何在不使用std::return_type的情况下使用decltype推断出非静态方法的返回类型?

#include <utility>                                                                 
#include <memory>                                                                                                                                   
struct A                                                                           
{                                                                                  
    int a;                                                                         

    int fun() { return 0;}                                                         
};                                                                                 

int main()                                                                         
{                                                                                  
    std::result_of<A::fun(A)>::type x; // error, argument 1 is invalid           
    std::result_of<A::fun()>::type x; // error, cannot call member function A::fun() without object             
    return 0;                                                                      
}

我知道我可以使用declvaldecltype的组合来获得相同的效果,但我想知道我是否可以直接使用result_of实现这一目标?

0 个答案:

没有答案