diff --git a/include/libimp/detect_plat.h b/include/libimp/detect_plat.h index df3ac37..c445ed7 100644 --- a/include/libimp/detect_plat.h +++ b/include/libimp/detect_plat.h @@ -38,9 +38,12 @@ // Compiler #if defined(_MSC_VER) -# define LIBIMP_CC_MSVC +# define LIBIMP_CC_MSVC _MSC_VER +# define LIBIMP_CC_MSVC_2015 1900 +# define LIBIMP_CC_MSVC_2017 1910 +# define LIBIMP_CC_MSVC_2019 1920 #elif defined(__GNUC__) -# define LIBIMP_CC_GNUC +# define LIBIMP_CC_GNUC __GNUC__ #else # error "This compiler is unsupported." #endif diff --git a/include/libimp/span.h b/include/libimp/span.h index b77cce3..36e43f5 100644 --- a/include/libimp/span.h +++ b/include/libimp/span.h @@ -91,7 +91,10 @@ private: public: constexpr span() noexcept = default; constexpr span(span const &) noexcept = default; - constexpr span & operator=(span const &) noexcept = default; +#if (LIBIMP_CC_MSVC > LIBIMP_CC_MSVC_2015) + constexpr +#endif + span & operator=(span const &) noexcept = default; template > @@ -128,7 +131,7 @@ public: : ptr_ (s.data()) , extent_(s.size()) {} -#ifdef LIBIMP_CPP_20 +#if defined(LIBIMP_CPP_20) || defined(__cpp_lib_span) template > constexpr span(std::span const &s) noexcept