| 157 | |
| 158 | template< typename F, typename... Args> |
| 159 | constexpr auto invoke(F && f, Args &&... args) |
| 160 | /*! |
| 161 | ensures |
| 162 | - identical to std::invoke(std::forward<F>(f), std::forward<Args>(args)...) |
| 163 | - works with C++11 onwards |
| 164 | !*/ |
| 165 | noexcept(noexcept(detail::invoke_(std::forward<F>( f ), std::forward<Args>( args )...))) |
| 166 | -> decltype(detail::invoke_(std::forward<F>( f ), std::forward<Args>( args )...)) |
| 167 | { |
| 168 | return detail::invoke_(std::forward<F>( f ), std::forward<Args>( args )...); |
| 169 | } |
| 170 | |
| 171 | // ---------------------------------------------------------------------------------------- |
| 172 | |