Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

result_of Class

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at Visual Studio 2017 Documentation. The return type of a wrapped callable object.

struct result_of {
typedef T0 type;
};

Parameters

Ty
A description of a function call (see Remarks section).

The template class defines its member type as a synonym for the return type of a function call described by its template argument Ty. The template argument must be of the form Fty(T1, T2, ..., TN), where Fty is a callable type. The template determines the return type according to the first of the following rules that applies:

  • if Fty is a pointer to function type R(*)(U1, U2, ..., UN) the return type is R;

  • if Fty is a reference to function type R(&)(U1, U2, ..., UN) the return type is R;

  • if Fty is a pointer to member function type R(U1::*)(U2, ..., UN) the return type is R;

  • if Fty is a pointer to data member type R U1::* the return type is R;

  • if Fty is a class with a member typedef result_type the return type is Fty::result_type;

  • if N is 0 (that is, Ty is of the form Fty()) the return type is void;

  • if Fty is a class with a member template named result the return type is Fty::result<T1, T2, ..., TN>::type;

  • in all other cases it is an error.

Â

// std_tr1__functional__result_of.cpp   
// compile with: /EHsc   
#include <functional>   
#include <iostream>   
  
double square(double x)   
    {   
    return (x * x);   
    }   
  
template<class Fun,   
    class Arg>   
    void test_result(const Fun& fun, Arg arg)   
    {   
    typename std::result_of<Fun(Arg)>::type val = fun(arg);   
    std::cout << "val == " << val << std::endl;   
    }   
  
int main()   
    {   
    test_result(&square, 3.0);   
  
    return (0);   
    }  
  

val == 9  

Header: <functional>

Namespace: std

Show:
© 2017 Microsoft