| 26 | typename... Args |
| 27 | > |
| 28 | constexpr auto invoke_( |
| 29 | T Base::*pmf, //pointer to member function |
| 30 | Derived&& ref, |
| 31 | Args&&... args |
| 32 | ) |
| 33 | noexcept(noexcept((std::forward<Derived>(ref).*pmf)(std::forward<Args>(args)...))) |
| 34 | -> typename std::enable_if< |
| 35 | std::is_function<T>::value && |
| 36 | std::is_base_of<Base, typename std::decay<Derived>::type>::value, |
| 37 | decltype((std::forward<Derived>(ref).*pmf)(std::forward<Args>(args)...)) |
| 38 | >::type |
| 39 | { |
| 40 | return (std::forward<Derived>(ref).*pmf)(std::forward<Args>(args)...); |
| 41 | } |
| 42 | |
| 43 | template< |
| 44 | typename Base, |