| 13 | { |
| 14 | template<typename TArg1 = void, typename TArg2 = void, typename TArg3 = void> |
| 15 | struct ArgWrapper |
| 16 | { |
| 17 | typename std::remove_reference<TArg1>::type arg1; |
| 18 | typename std::remove_reference<TArg2>::type arg2; |
| 19 | typename std::remove_reference<TArg3>::type arg3; |
| 20 | template<typename T, typename U, typename V> |
| 21 | ArgWrapper(T&& a1, U&& a2, V&& a3) : arg1(std::forward<T>(a1)), arg2(std::forward<U>(a2)), arg3(std::forward<V>(a3)) { } |
| 22 | template<typename TCallback> |
| 23 | void callCallback(TCallback&& callback) const { std::forward<TCallback>(callback)(std::move(arg1), std::move(arg2), std::move(arg3)); } |
| 24 | }; |
| 25 | |
| 26 | template<typename TArg1, typename TArg2> |
| 27 | struct ArgWrapper<TArg1, TArg2, void> |
nothing calls this directly
no outgoing calls
no test coverage detected