std :: result_of função simples
#include <iostream>
#include <type_traits>
double f(int i)
{
return i+0.1;
}
struct F
{
public:
double operator ()(int i) { return i+0.1; }
};
int
main(int, char**)
{
std::result_of<F(int)>::type x; // ok
// std::result_of<f(int)>::type x; // error: template argument 1 is invalid
x = 0.1;
std::cerr << x << std::endl;
}
Por favor, explique por questd::result_of<f(int)>::type x;
é inválido...
cppreference diz "(std::result_of
) Deduz o tipo de retorno de uma expressão de chamada de função no tipo de compilação.
qual é o problema?