mirror of
https://github.com/microsoft/GSL.git
synced 2024-11-03 17:56:43 -05:00
Fix gsl/util for c++20 compilers without <span> (#993)
For instance, clang 10 sets __cplusplus >= 202002L yet does not have span, which causes build errors: https://gcc.godbolt.org/z/Yq345zGea
This commit is contained in:
parent
8a4b9ed0bf
commit
f09b24970d
@ -25,9 +25,12 @@
|
|||||||
#include <type_traits> // for is_signed, integral_constant
|
#include <type_traits> // for is_signed, integral_constant
|
||||||
#include <utility> // for exchange, forward
|
#include <utility> // for exchange, forward
|
||||||
|
|
||||||
#if defined(__cplusplus) && __cplusplus >= 202002L
|
#if defined(__has_include) && __has_include(<version>)
|
||||||
|
#include <version>
|
||||||
|
#if defined(__cpp_lib_span) && __cpp_lib_span >= 202002L
|
||||||
#include <span>
|
#include <span>
|
||||||
#endif // __cplusplus >= 202002L
|
#endif // __cpp_lib_span >= 202002L
|
||||||
|
#endif //__has_include(<version>)
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_VER) && !defined(__clang__)
|
||||||
|
|
||||||
@ -138,14 +141,14 @@ GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
|
|||||||
return *(cont.begin() + i);
|
return *(cont.begin() + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__cplusplus) && __cplusplus >= 202002L
|
#if defined(__cpp_lib_span) && __cpp_lib_span >= 202002L
|
||||||
template <class T, size_t extent = std::dynamic_extent>
|
template <class T, size_t extent = std::dynamic_extent>
|
||||||
constexpr auto at(std::span<T, extent> sp, const index i)
|
constexpr auto at(std::span<T, extent> sp, const index i)
|
||||||
{
|
{
|
||||||
Expects(i >= 0 && i < narrow_cast<i>(sp.size()));
|
Expects(i >= 0 && i < narrow_cast<i>(sp.size()));
|
||||||
return sp[i];
|
return sp[i];
|
||||||
}
|
}
|
||||||
#endif // __cplusplus >= 202002L
|
#endif // __cpp_lib_span >= 202002L
|
||||||
} // namespace gsl
|
} // namespace gsl
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_VER) && !defined(__clang__)
|
||||||
|
Loading…
Reference in New Issue
Block a user