Is std::declval allowed? It's not mentioned on chromium-cpp.
It's useful in conjunction with decltype for computing the types of constructed expressions when you don't already have objects of a particular type to reference. E.g.:// ResultType<F, Args...> is the return type from applying a functor of type F// to an arguments list of type Args....template <typename F, typename... Args>using ResultType = decltype(std::declval<F>()(std::declval<Args>()...));
Your example also looks a lot like std::result_of to me.
Is there a concrete place you'd like to use std::declval?