cinder / Cinder

Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.
http://libcinder.org
Other
5.27k stars 939 forks source link

Replace std::result_of with decltype #2212

Closed bjude closed 3 years ago

bjude commented 3 years ago

std::result_of is deprecated in C++17 and removed in C++20, breaking downstream projects that use C++20 with MSVC

This could be replaced by a wrapper type trait that dispatches to std::invoke_result_t for C++17 and later or to std::result_of for earlier versions but since it is only used in one place for nullary functors, decltype will be simpler.

The vendored version of boost::asio uses std::result_of so this PR will not allow Cinder to be built in C++20 mode yet, but since asio is only used internally and not in Cinder's interface it should allow downstream project to use C++20.

Fixes #2206

bjude commented 3 years ago

Pinging @andrewfb for a review, I'd prefer to keep my project tracking the master branch instead of my fork and the issues this PR and #2211 are blocking that

andrewfb commented 3 years ago

I apologize for the crazy delay on merging this - thanks for submitting it.

godefv commented 3 years ago

Thanks for fixing my issue. I also prefer to work with the official branch rather than my fork !