diff --git a/uppsrc/Core/CoWork.h b/uppsrc/Core/CoWork.h index c1840d9f6..79094e56c 100644 --- a/uppsrc/Core/CoWork.h +++ b/uppsrc/Core/CoWork.h @@ -155,19 +155,25 @@ public: ~AsyncWork() { if(imp) imp->co.Cancel(); } }; -#if !defined(__clang__) || 1000 * __clang_major__ + __clang_minor__ > 3004 - template< class Function, class... Args> -AsyncWork(std::decay_t...)>> +AsyncWork< + typename std::result_of< + typename std::decay::type + (typename std::decay::type...) + >::type +> Async(Function&& f, Args&&... args) { - AsyncWork(std::decay_t...)>> h; + AsyncWork< + typename std::result_of< + typename std::decay::type + (typename std::decay::type...) + >::type + > h; h.Do(f, args...); return pick(h); } -#endif - #else class CoWork : NoCopy {