| 234 | |
| 235 | template< typename R, typename F, typename... Args> |
| 236 | constexpr typename std::enable_if<dlib::is_invocable_r<R, F, Args...>::value, R>::type |
| 237 | invoke_r(F && f, Args &&... args) |
| 238 | /*! |
| 239 | ensures |
| 240 | - identical to std::invoke_r<R>(std::forward<F>(f), std::forward<Args>(args)...) |
| 241 | - works with C++11 onwards |
| 242 | !*/ |
| 243 | noexcept(noexcept(dlib::invoke(std::forward<F>( f ), std::forward<Args>( args )...))) |
| 244 | { |
| 245 | return dlib::invoke(std::forward<F>( f ), std::forward<Args>( args )...); |
| 246 | } |
| 247 | |
| 248 | // ---------------------------------------------------------------------------------------- |
| 249 | |