diff options
| -rw-r--r-- | libcxx/include/__config | 10 | ||||
| -rw-r--r-- | libcxx/include/tuple | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/libcxx/include/__config b/libcxx/include/__config index d7ecdcfc9cd..86413d566e9 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -100,6 +100,9 @@ #ifndef __is_identifier #define __is_identifier(__x) 1 #endif +#ifndef __has_declspec_attribute +#define __has_declspec_attribute(__x) 0 +#endif #define __has_keyword(__x) !(__is_identifier(__x)) @@ -1023,6 +1026,13 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( # define _LIBCPP_DIAGNOSE_ERROR(...) #endif +#if defined(_LIBCPP_ABI_MICROSOFT) && \ + (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases)) +# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases) +#else +# define _LIBCPP_DECLSPEC_EMPTY_BASES +#endif + #endif // __cplusplus #endif // _LIBCPP_CONFIG diff --git a/libcxx/include/tuple b/libcxx/include/tuple index cddb70954ee..a17ea01f102 100644 --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -366,7 +366,7 @@ struct __all_default_constructible<__tuple_types<_Tp...>> template<class _Indx, class ..._Tp> struct __tuple_impl; template<size_t ..._Indx, class ..._Tp> -struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...> +struct _LIBCPP_DECLSPEC_EMPTY_BASES __tuple_impl<__tuple_indices<_Indx...>, _Tp...> : public __tuple_leaf<_Indx, _Tp>... { _LIBCPP_INLINE_VISIBILITY |

