web-dev-qa-db-fra.com

Le type de retour de la fonction peut-il être obtenu à partir de la fonction?

Le type de retour d'une fonction peut-il être obtenu de manière simple dans la fonction?

Par exemple, étant donné:

template <typename P>
static inline auto foo(P p) -> typename std::remove_reference<decltype(*p)>::type {
    typename std::remove_reference<decltype(*p)>::type f{};  // <-- here

    ...
}

En C++ 11, puis-je me référer au grand type de retour méchant de foo, dans foo lui-même, sans le répéter, à la ligne marquée // <-- here?

42
BeeOnRope

Appelez la fonction avec un decltype.

decltype(foo(p)) f{};
50
Rakete1111