関数の戻り値の型は、関数内で簡単な方法で取得できますか?
たとえば、次の場合:
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
...
}
C++ 11では、// <-- here
とマークされた行で、foo
自体の内部で、foo
の大きな厄介な戻り値型を繰り返し使用せずに参照できますか?
decltype
を使用して関数を呼び出します。
decltype(foo(p)) f{};