Workaround a msvc bug affecting msvc 19.38

This commit is contained in:
Jeremy 2023-12-03 21:33:31 -05:00
parent ab389c36bd
commit 6db9794dc6
No known key found for this signature in database
GPG Key ID: BE03111EB7ED6E2E

View File

@ -363,7 +363,10 @@ namespace detail {
template< template<
typename T, typename T,
typename D, typename D
// workaround a msvc bug https://developercommunity.visualstudio.com/t/MSVC-1938331290-preview-fails-to-comp/10505565
#if _MSC_VER != 1938
,
typename std::enable_if< typename std::enable_if<
std::is_same<decltype(std::declval<D>()(std::declval<T>())), void>::value, std::is_same<decltype(std::declval<D>()(std::declval<T>())), void>::value,
int int
@ -376,6 +379,7 @@ namespace detail {
std::is_nothrow_move_constructible<T>::value, std::is_nothrow_move_constructible<T>::value,
int int
>::type = 0 >::type = 0
#endif
> >
class raii_wrapper { class raii_wrapper {
T obj; T obj;
@ -409,7 +413,10 @@ namespace detail {
template< template<
typename T, typename T,
typename D, typename D
// workaround a msvc bug https://developercommunity.visualstudio.com/t/MSVC-1938331290-preview-fails-to-comp/10505565
#if _MSC_VER != 1938
,
typename std::enable_if< typename std::enable_if<
std::is_same<decltype(std::declval<D>()(std::declval<T>())), void>::value, std::is_same<decltype(std::declval<D>()(std::declval<T>())), void>::value,
int int
@ -418,6 +425,7 @@ namespace detail {
std::is_standard_layout<T>::value && std::is_trivial<T>::value, std::is_standard_layout<T>::value && std::is_trivial<T>::value,
int int
>::type = 0 >::type = 0
#endif
> >
raii_wrapper<typename std::remove_reference<T>::type, D> raii_wrap(T obj, D deleter) { raii_wrapper<typename std::remove_reference<T>::type, D> raii_wrap(T obj, D deleter) {
return raii_wrapper<typename std::remove_reference<T>::type, D>(obj, deleter); return raii_wrapper<typename std::remove_reference<T>::type, D>(obj, deleter);