mirror of
https://github.com/microsoft/GSL.git
synced 2024-11-03 17:56:43 -05:00
just pulling in array header if we detect apple clang
This commit is contained in:
parent
32e5fea6ac
commit
fc54e0d89a
@ -25,6 +25,24 @@
|
|||||||
#include <iterator> // for reverse_iterator, distance, random_access_...
|
#include <iterator> // for reverse_iterator, distance, random_access_...
|
||||||
#include <type_traits> // for enable_if_t, declval, is_convertible, inte...
|
#include <type_traits> // for enable_if_t, declval, is_convertible, inte...
|
||||||
|
|
||||||
|
// forward declaring std::array.
|
||||||
|
// pulling the entire array header is unnecessary for span because array is only used for a few constructors.
|
||||||
|
// The end user's logic will pull in the actual definition of array if they need it.
|
||||||
|
// To do: find a way to forward declare array for Apple Clang
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
#include <array>
|
||||||
|
#else
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
template <class Type, std::size_t Sz>
|
||||||
|
#if defined(__clang__)
|
||||||
|
struct array;
|
||||||
|
#else
|
||||||
|
class array;
|
||||||
|
#endif // defined(__clang__)
|
||||||
|
}
|
||||||
|
#endif // defined(__APPLE__)
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_VER) && !defined(__clang__)
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
|
|
||||||
@ -62,26 +80,6 @@
|
|||||||
#pragma GCC diagnostic ignored "-Wsign-conversion"
|
#pragma GCC diagnostic ignored "-Wsign-conversion"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace std
|
|
||||||
{
|
|
||||||
// forward declaring std::array.
|
|
||||||
// array is only used for a few constructors, so pulling the entire header is unnecessary for span.
|
|
||||||
// The end user's logic will pull in the actual definition of array if they need it.
|
|
||||||
template <class Type, std::size_t Sz>
|
|
||||||
#if defined(__clang__)
|
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
|
||||||
#define VIS_MOD _LIBCPP_TYPE_VIS_ONLY
|
|
||||||
#else
|
|
||||||
#define VIS_MOD
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct VIS_MOD array;
|
|
||||||
#else
|
|
||||||
class array;
|
|
||||||
#endif // defined(__clang__)
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace gsl
|
namespace gsl
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user