diff options
| -rw-r--r-- | include/__config | 11 | ||||
| -rw-r--r-- | include/string | 3 | 
2 files changed, 12 insertions, 2 deletions
diff --git a/include/__config b/include/__config index 973f13bc9394..ddfab31f7fac 100644 --- a/include/__config +++ b/include/__config @@ -103,6 +103,9 @@  #if defined(__clang__)  #define _LIBCPP_COMPILER_CLANG +# ifndef __apple_build_version__ +#   define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__) +# endif  #elif defined(__GNUC__)  #define _LIBCPP_COMPILER_GCC  #elif defined(_MSC_VER) @@ -111,6 +114,10 @@  #define _LIBCPP_COMPILER_IBM  #endif +#ifndef _LIBCPP_CLANG_VER +# define _LIBCPP_CLANG_VER 0 +#endif +  // FIXME: ABI detection should be done via compiler builtin macros. This  // is just a placeholder until Clang implements such macros. For now assume  // that Windows compilers pretending to be MSVC++ target the microsoft ABI. @@ -741,7 +748,7 @@ template <unsigned> struct __static_assert_check {};  #ifdef _LIBCPP_HAS_NO_DECLTYPE  // GCC 4.6 provides __decltype in all standard modes. -#if !__is_identifier(__decltype) || _GNUC_VER >= 406 +#if !__is_identifier(__decltype) || _LIBCPP_CLANG_VER >= 304 || _GNUC_VER >= 406  #  define decltype(__x) __decltype(__x)  #else  #  define decltype(__x) __typeof__(__x) @@ -838,7 +845,7 @@ template <unsigned> struct __static_assert_check {};  #if defined(__APPLE__)  # if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \       defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) -#   define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIROMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ +#   define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__  # endif  # if defined(__MAC_OS_X_VERSION_MIN_REQUIRED)  #   if __MAC_OS_X_VERSION_MIN_REQUIRED < 1060 diff --git a/include/string b/include/string index 7d7994eaca1b..ba311efa5a31 100644 --- a/include/string +++ b/include/string @@ -818,7 +818,10 @@ public:      operator __self_view() const _NOEXCEPT { return __self_view(data(), size()); }      basic_string& operator=(const basic_string& __str); + +#ifndef _LIBCPP_CXX03_LANG      template <class = void> +#endif      _LIBCPP_INLINE_VISIBILITY      basic_string& operator=(__self_view __sv)  {return assign(__sv);}  #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES  | 
