How can I detect whether a template argument is a noexcept function?
I have function to generate a lambda that acts as a wrapper to a function I can invoke later: template <typename F, typename... FArgs> auto make_lambda( F&& f, FArgs&&... f_args ) { return [&] () -> std::result_of_t<F( FArgs... )> { return std::forward<F>( f )( std::forward<FArgs>( f_args )... ); }; } I'd like to make the returned lambda noexcept when argument f is noexcept , so my function's return would look like this: return [&] () noexcept( is_noexcept<decltype( f )>::value ) -> std::result_of_t<F( FArgs... )> { return std::forward<F>( f )( std::forward<FArgs>( f_args )... ); }; My attempt