Skip to content

Commit b021bd6

Browse files
authored
C++20 not Building with VS2019 (#1144)
1 parent 5aa6327 commit b021bd6

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

api/include/opentelemetry/nostd/absl/meta/type_traits.h

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,8 +616,21 @@ using common_type_t = typename std::common_type<T...>::type;
616616
template <typename T>
617617
using underlying_type_t = typename std::underlying_type<T>::type;
618618

619-
template <typename T>
620-
using result_of_t = typename std::result_of<T>::type;
619+
namespace type_traits_internal {
620+
621+
#if __cplusplus >= 201703L
622+
// std::result_of is deprecated (C++17) or removed (C++20)
623+
template<typename> struct result_of;
624+
template<typename F, typename... Args>
625+
struct result_of<F(Args...)> : std::invoke_result<F, Args...> {};
626+
#else
627+
template<typename F> using result_of = std::result_of<F>;
628+
#endif
629+
630+
} // namespace type_traits_internal
631+
632+
template<typename F>
633+
using result_of_t = typename type_traits_internal::result_of<F>::type;
621634

622635
namespace type_traits_internal {
623636
// In MSVC we can't probe std::hash or stdext::hash because it triggers a

0 commit comments

Comments
 (0)