diff --git a/include/continuable/detail/utility/flat-variant.hpp b/include/continuable/detail/utility/flat-variant.hpp index edb3a64..9ea9549 100644 --- a/include/continuable/detail/utility/flat-variant.hpp +++ b/include/continuable/detail/utility/flat-variant.hpp @@ -54,10 +54,17 @@ constexpr std::size_t max_element_of(std::initializer_list list) { } return m; } + +/// Workarround for a regression introduced in ~ MSVC 15.8.1 +template +using size_of_helper = std::integral_constant; +template +using align_of_helper = std::integral_constant; + template constexpr auto storage_of_impl(traits::identity) { - constexpr auto size = max_element_of({sizeof(T)...}); - constexpr auto align = max_element_of({alignof(T)...}); + constexpr auto size = max_element_of({(size_of_helper::value)...}); + constexpr auto align = max_element_of({(align_of_helper::value)...}); return std::aligned_storage_t{}; }