Date: Fri, 6 Jan 2017 20:13:54 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r311538 - in vendor/libc++/dist: cmake/Modules docs/DesignDocs include include/experimental include/ext src src/experimental src/include test/libcxx/test test/libcxx/utilities/memory/ut... Message-ID: <201701062013.v06KDsX4068614@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Fri Jan 6 20:13:54 2017 New Revision: 311538 URL: https://svnweb.freebsd.org/changeset/base/311538 Log: Vendor import of libc++ trunk r291274: https://llvm.org/svn/llvm-project/libcxx/trunk@291274 Added: vendor/libc++/dist/test/libcxx/utilities/memory/util.dynamic.safety/ vendor/libc++/dist/test/libcxx/utilities/memory/util.dynamic.safety/get_pointer_safety_cxx03.pass.cpp (contents, props changed) vendor/libc++/dist/test/libcxx/utilities/memory/util.dynamic.safety/get_pointer_safety_new_abi.pass.cpp (contents, props changed) vendor/libc++/dist/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.fail.cpp (contents, props changed) vendor/libc++/dist/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp (contents, props changed) vendor/libc++/dist/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_structured_bindings.pass.cpp (contents, props changed) vendor/libc++/dist/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_value_sfinae.pass.cpp (contents, props changed) Modified: vendor/libc++/dist/cmake/Modules/HandleLibCXXABI.cmake vendor/libc++/dist/docs/DesignDocs/VisibilityMacros.rst vendor/libc++/dist/include/__config vendor/libc++/dist/include/__debug vendor/libc++/dist/include/__functional_03 vendor/libc++/dist/include/__functional_base vendor/libc++/dist/include/__hash_table vendor/libc++/dist/include/__locale vendor/libc++/dist/include/__mutex_base vendor/libc++/dist/include/__nullptr vendor/libc++/dist/include/__string vendor/libc++/dist/include/__threading_support vendor/libc++/dist/include/__tree vendor/libc++/dist/include/__tuple vendor/libc++/dist/include/any vendor/libc++/dist/include/array vendor/libc++/dist/include/bitset vendor/libc++/dist/include/chrono vendor/libc++/dist/include/codecvt vendor/libc++/dist/include/complex vendor/libc++/dist/include/deque vendor/libc++/dist/include/experimental/any vendor/libc++/dist/include/experimental/dynarray vendor/libc++/dist/include/experimental/memory_resource vendor/libc++/dist/include/experimental/optional vendor/libc++/dist/include/experimental/string_view vendor/libc++/dist/include/experimental/type_traits vendor/libc++/dist/include/experimental/utility vendor/libc++/dist/include/ext/__hash vendor/libc++/dist/include/ext/hash_map vendor/libc++/dist/include/ext/hash_set vendor/libc++/dist/include/forward_list vendor/libc++/dist/include/fstream vendor/libc++/dist/include/functional vendor/libc++/dist/include/future vendor/libc++/dist/include/initializer_list vendor/libc++/dist/include/ios vendor/libc++/dist/include/iosfwd vendor/libc++/dist/include/istream vendor/libc++/dist/include/iterator vendor/libc++/dist/include/limits vendor/libc++/dist/include/list vendor/libc++/dist/include/locale vendor/libc++/dist/include/map vendor/libc++/dist/include/memory vendor/libc++/dist/include/mutex vendor/libc++/dist/include/optional vendor/libc++/dist/include/ostream vendor/libc++/dist/include/queue vendor/libc++/dist/include/random vendor/libc++/dist/include/ratio vendor/libc++/dist/include/regex vendor/libc++/dist/include/scoped_allocator vendor/libc++/dist/include/set vendor/libc++/dist/include/sstream vendor/libc++/dist/include/stack vendor/libc++/dist/include/streambuf vendor/libc++/dist/include/string vendor/libc++/dist/include/string_view vendor/libc++/dist/include/system_error vendor/libc++/dist/include/thread vendor/libc++/dist/include/tuple vendor/libc++/dist/include/type_traits vendor/libc++/dist/include/typeindex vendor/libc++/dist/include/typeinfo vendor/libc++/dist/include/unordered_map vendor/libc++/dist/include/unordered_set vendor/libc++/dist/include/utility vendor/libc++/dist/include/valarray vendor/libc++/dist/include/variant vendor/libc++/dist/include/vector vendor/libc++/dist/src/experimental/memory_resource.cpp vendor/libc++/dist/src/include/config_elast.h vendor/libc++/dist/src/memory.cpp vendor/libc++/dist/src/mutex.cpp vendor/libc++/dist/test/libcxx/test/config.py vendor/libc++/dist/test/libcxx/utilities/variant/variant.variant/variant.assign/copy.pass.cpp vendor/libc++/dist/test/libcxx/utilities/variant/variant.variant/variant.assign/move.pass.cpp vendor/libc++/dist/test/libcxx/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp vendor/libc++/dist/test/libcxx/utilities/variant/variant.variant/variant.ctor/move.pass.cpp vendor/libc++/dist/test/std/utilities/memory/util.dynamic.safety/get_pointer_safety.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp vendor/libc++/dist/test/std/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp vendor/libc++/dist/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size.pass.cpp vendor/libc++/dist/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp vendor/libc++/dist/test/std/utilities/variant/variant.variant/variant.status/valueless_by_exception.pass.cpp vendor/libc++/dist/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp vendor/libc++/dist/www/cxx1z_status.html Modified: vendor/libc++/dist/cmake/Modules/HandleLibCXXABI.cmake ============================================================================== --- vendor/libc++/dist/cmake/Modules/HandleLibCXXABI.cmake Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/cmake/Modules/HandleLibCXXABI.cmake Fri Jan 6 20:13:54 2017 (r311538) @@ -10,7 +10,10 @@ # abidefines: A list of defines needed to compile libc++ with the ABI library # abilib : The ABI library to link against. # abifiles : A list of files (which may be relative paths) to copy into the -# libc++ build tree for the build. These files will also be +# libc++ build tree for the build. These files will be copied +# twice: once into include/, so the libc++ build itself can find +# them, and once into include/c++/v1, so that a clang built into +# the same build area will find them. These files will also be # installed alongside the libc++ headers. # abidirs : A list of relative paths to create under an include directory # in the libc++ build directory. @@ -31,8 +34,10 @@ macro(setup_abi_lib abidefines abilib ab # The place in the build tree where we store out-of-source headers. set(LIBCXX_BUILD_HEADERS_ROOT "${CMAKE_BINARY_DIR}/include/c++-build") file(MAKE_DIRECTORY "${LIBCXX_BUILD_HEADERS_ROOT}") + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include/c++/v1") foreach(_d ${abidirs}) file(MAKE_DIRECTORY "${LIBCXX_BUILD_HEADERS_ROOT}/${_d}") + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include/c++/v1/${_d}") endforeach() foreach(fpath ${LIBCXX_ABILIB_FILES}) @@ -45,6 +50,9 @@ macro(setup_abi_lib abidefines abilib ab file(COPY "${incpath}/${fpath}" DESTINATION "${LIBCXX_BUILD_HEADERS_ROOT}/${dstdir}" ) + file(COPY "${incpath}/${fpath}" + DESTINATION "${CMAKE_BINARY_DIR}/include/c++/v1/${dstdir}" + ) if (LIBCXX_INSTALL_HEADERS) install(FILES "${LIBCXX_BUILD_HEADERS_ROOT}/${fpath}" DESTINATION include/c++/v1/${dstdir} Modified: vendor/libc++/dist/docs/DesignDocs/VisibilityMacros.rst ============================================================================== --- vendor/libc++/dist/docs/DesignDocs/VisibilityMacros.rst Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/docs/DesignDocs/VisibilityMacros.rst Fri Jan 6 20:13:54 2017 (r311538) @@ -49,13 +49,13 @@ Visibility Macros attribute. With GCC the `visibility(...)` attribute is used and member functions are affected. -**_LIBCPP_TYPE_VIS_ONLY** - The same as `_LIBCPP_TYPE_VIS` except that it may be applied to templates. +**_LIBCPP_TEMPLATE_ONLY** + The same as `_LIBCPP_TYPE_VIS` except that it may be applied to class + templates. **Windows Behavior**: DLLs do not support dllimport/export on class templates. The macro has an empty definition on this platform. - Note: This macro should be renamed `_LIBCPP_TEMPLATE_TYPE_VIS`. **_LIBCPP_ENUM_VIS** Mark the typeinfo of an enum as having default visibility. This attribute @@ -74,14 +74,15 @@ Visibility Macros a `_LIBCPP_EXTERN_TEMPLATE` declaration as being exported by the libc++ library. This attribute must be specified on all extern class template declarations. - This macro is used to override the `_LIBCPP_TYPE_VIS_ONLY` attribute + This macro is used to override the `_LIBCPP_TEMPLATE_VIS` attribute specified on the primary template and to export the member functions produced by the explicit instantiation in the dylib. **GCC Behavior**: GCC ignores visibility attributes applied the type in extern template declarations and applying an attribute results in a warning. - However since `_LIBCPP_TYPE_VIS_ONLY` is the same as `_LIBCPP_TYPE_VIS` the - visibility is already correct. The macro has an empty definition with GCC. + However since `_LIBCPP_TEMPLATE_VIS` is the same as + `__attribute__((visibility("default"))` the visibility is already correct. + The macro has an empty definition with GCC. **Windows Behavior**: `extern template` and `dllexport` are fundamentally incompatible *on a template class* on Windows; the former suppresses Modified: vendor/libc++/dist/include/__config ============================================================================== --- vendor/libc++/dist/include/__config Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__config Fri Jan 6 20:13:54 2017 (r311538) @@ -52,6 +52,11 @@ // provided under the alternate keyword __nullptr, which changes the mangling // of nullptr_t. This option is ABI incompatible with GCC in C++03 mode. #define _LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR +// Define the `pointer_safety` enum as a C++11 strongly typed enumeration +// instead of as a class simulating an enum. If this option is enabled +// `pointer_safety` and `get_pointer_safety()` will no longer be available +// in C++03. +#define _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE #elif _LIBCPP_ABI_VERSION == 1 #if !defined(_WIN32) // Enable compiling a definition of error_category() into the libc++ dylib. @@ -557,7 +562,7 @@ namespace std { #define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS #define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS #define _LIBCPP_HIDDEN -#define _LIBCPP_TYPE_VIS_ONLY +#define _LIBCPP_TEMPLATE_VIS #define _LIBCPP_FUNC_VIS_ONLY #define _LIBCPP_ENUM_VIS @@ -600,8 +605,8 @@ namespace std { # endif #endif -#ifndef _LIBCPP_TYPE_VIS_ONLY -# define _LIBCPP_TYPE_VIS_ONLY _LIBCPP_TYPE_VIS +#ifndef _LIBCPP_TEMPLATE_VIS +# define _LIBCPP_TEMPLATE_VIS _LIBCPP_TYPE_VIS #endif #ifndef _LIBCPP_FUNC_VIS_ONLY Modified: vendor/libc++/dist/include/__debug ============================================================================== --- vendor/libc++/dist/include/__debug Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__debug Fri Jan 6 20:13:54 2017 (r311538) @@ -56,7 +56,7 @@ class _LIBCPP_EXCEPTION_ABI __libcpp_deb _LIBCPP_BEGIN_NAMESPACE_STD -struct _LIBCPP_TYPE_VIS_ONLY __libcpp_debug_info { +struct _LIBCPP_TEMPLATE_VIS __libcpp_debug_info { _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR __libcpp_debug_info() : __file_(nullptr), __line_(-1), __pred_(nullptr), __msg_(nullptr) {} Modified: vendor/libc++/dist/include/__functional_03 ============================================================================== --- vendor/libc++/dist/include/__functional_03 Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__functional_03 Fri Jan 6 20:13:54 2017 (r311538) @@ -445,7 +445,7 @@ __func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>: } // __function template<class _Rp> -class _LIBCPP_TYPE_VIS_ONLY function<_Rp()> +class _LIBCPP_TEMPLATE_VIS function<_Rp()> { typedef __function::__base<_Rp()> __base; aligned_storage<3*sizeof(void*)>::type __buf_; @@ -720,7 +720,7 @@ function<_Rp()>::target() const #endif // _LIBCPP_NO_RTTI template<class _Rp, class _A0> -class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0)> +class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0)> : public unary_function<_A0, _Rp> { typedef __function::__base<_Rp(_A0)> __base; @@ -996,7 +996,7 @@ function<_Rp(_A0)>::target() const #endif // _LIBCPP_NO_RTTI template<class _Rp, class _A0, class _A1> -class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0, _A1)> +class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1)> : public binary_function<_A0, _A1, _Rp> { typedef __function::__base<_Rp(_A0, _A1)> __base; @@ -1272,7 +1272,7 @@ function<_Rp(_A0, _A1)>::target() const #endif // _LIBCPP_NO_RTTI template<class _Rp, class _A0, class _A1, class _A2> -class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0, _A1, _A2)> +class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1, _A2)> { typedef __function::__base<_Rp(_A0, _A1, _A2)> __base; aligned_storage<3*sizeof(void*)>::type __buf_; Modified: vendor/libc++/dist/include/__functional_base ============================================================================== --- vendor/libc++/dist/include/__functional_base Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__functional_base Fri Jan 6 20:13:54 2017 (r311538) @@ -24,14 +24,14 @@ _LIBCPP_BEGIN_NAMESPACE_STD template <class _Arg, class _Result> -struct _LIBCPP_TYPE_VIS_ONLY unary_function +struct _LIBCPP_TEMPLATE_VIS unary_function { typedef _Arg argument_type; typedef _Result result_type; }; template <class _Arg1, class _Arg2, class _Result> -struct _LIBCPP_TYPE_VIS_ONLY binary_function +struct _LIBCPP_TEMPLATE_VIS binary_function { typedef _Arg1 first_argument_type; typedef _Arg2 second_argument_type; @@ -54,7 +54,7 @@ template <class _Tp = void> #else template <class _Tp> #endif -struct _LIBCPP_TYPE_VIS_ONLY less : binary_function<_Tp, _Tp, bool> +struct _LIBCPP_TEMPLATE_VIS less : binary_function<_Tp, _Tp, bool> { _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const @@ -63,7 +63,7 @@ struct _LIBCPP_TYPE_VIS_ONLY less : bina #if _LIBCPP_STD_VER > 11 template <> -struct _LIBCPP_TYPE_VIS_ONLY less<void> +struct _LIBCPP_TEMPLATE_VIS less<void> { template <class _T1, class _T2> _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY @@ -382,7 +382,7 @@ struct __invoke_void_return_wrapper<void }; template <class _Tp> -class _LIBCPP_TYPE_VIS_ONLY reference_wrapper +class _LIBCPP_TEMPLATE_VIS reference_wrapper : public __weak_result_type<_Tp> { public: @@ -585,7 +585,7 @@ public: // allocator_arg_t -struct _LIBCPP_TYPE_VIS_ONLY allocator_arg_t { }; +struct _LIBCPP_TEMPLATE_VIS allocator_arg_t { }; #if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MEMORY) extern const allocator_arg_t allocator_arg; @@ -620,7 +620,7 @@ struct __uses_allocator<_Tp, _Alloc, fal }; template <class _Tp, class _Alloc> -struct _LIBCPP_TYPE_VIS_ONLY uses_allocator +struct _LIBCPP_TEMPLATE_VIS uses_allocator : public __uses_allocator<_Tp, _Alloc> { }; Modified: vendor/libc++/dist/include/__hash_table ============================================================================== --- vendor/libc++/dist/include/__hash_table Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__hash_table Fri Jan 6 20:13:54 2017 (r311538) @@ -133,12 +133,12 @@ __next_hash_pow2(size_t __n) template <class _Tp, class _Hash, class _Equal, class _Alloc> class __hash_table; -template <class _NodePtr> class _LIBCPP_TYPE_VIS_ONLY __hash_iterator; -template <class _ConstNodePtr> class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; -template <class _NodePtr> class _LIBCPP_TYPE_VIS_ONLY __hash_local_iterator; -template <class _ConstNodePtr> class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; -template <class _HashIterator> class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; -template <class _HashIterator> class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; +template <class _NodePtr> class _LIBCPP_TEMPLATE_VIS __hash_iterator; +template <class _ConstNodePtr> class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; +template <class _NodePtr> class _LIBCPP_TEMPLATE_VIS __hash_local_iterator; +template <class _ConstNodePtr> class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; +template <class _HashIterator> class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; +template <class _HashIterator> class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; template <class _Tp> struct __hash_key_value_types { @@ -285,7 +285,7 @@ struct __make_hash_node_types { }; template <class _NodePtr> -class _LIBCPP_TYPE_VIS_ONLY __hash_iterator +class _LIBCPP_TEMPLATE_VIS __hash_iterator { typedef __hash_node_types<_NodePtr> _NodeTypes; typedef _NodePtr __node_pointer; @@ -384,14 +384,14 @@ private: {} #endif template <class, class, class, class> friend class __hash_table; - template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; - template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; - template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; - template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; + template <class> friend class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; + template <class> friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; + template <class, class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template <class, class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; }; template <class _NodePtr> -class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator +class _LIBCPP_TEMPLATE_VIS __hash_const_iterator { static_assert(!is_const<typename pointer_traits<_NodePtr>::element_type>::value, ""); typedef __hash_node_types<_NodePtr> _NodeTypes; @@ -500,13 +500,13 @@ private: {} #endif template <class, class, class, class> friend class __hash_table; - template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; - template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; - template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; + template <class> friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; + template <class, class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template <class, class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; }; template <class _NodePtr> -class _LIBCPP_TYPE_VIS_ONLY __hash_local_iterator +class _LIBCPP_TEMPLATE_VIS __hash_local_iterator { typedef __hash_node_types<_NodePtr> _NodeTypes; typedef _NodePtr __node_pointer; @@ -624,12 +624,12 @@ private: } #endif template <class, class, class, class> friend class __hash_table; - template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; - template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; + template <class> friend class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; + template <class> friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; }; template <class _ConstNodePtr> -class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator +class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator { typedef __hash_node_types<_ConstNodePtr> _NodeTypes; typedef _ConstNodePtr __node_pointer; @@ -765,7 +765,7 @@ private: } #endif template <class, class, class, class> friend class __hash_table; - template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; + template <class> friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; }; template <class _Alloc> @@ -1324,8 +1324,8 @@ private: void __deallocate(__next_pointer __np) _NOEXCEPT; __next_pointer __detach() _NOEXCEPT; - template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; - template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; + template <class, class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template <class, class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; }; template <class _Tp, class _Hash, class _Equal, class _Alloc> Modified: vendor/libc++/dist/include/__locale ============================================================================== --- vendor/libc++/dist/include/__locale Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__locale Fri Jan 6 20:13:54 2017 (r311538) @@ -190,7 +190,7 @@ use_facet(const locale& __l) // template <class _CharT> class collate; template <class _CharT> -class _LIBCPP_TYPE_VIS_ONLY collate +class _LIBCPP_TEMPLATE_VIS collate : public locale::facet { public: @@ -274,7 +274,7 @@ _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_E // template <class CharT> class collate_byname; -template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY collate_byname; +template <class _CharT> class _LIBCPP_TEMPLATE_VIS collate_byname; template <> class _LIBCPP_TYPE_VIS collate_byname<char> @@ -425,7 +425,7 @@ public: _LIBCPP_ALWAYS_INLINE ctype_base() {} }; -template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY ctype; +template <class _CharT> class _LIBCPP_TEMPLATE_VIS ctype; template <> class _LIBCPP_TYPE_VIS ctype<wchar_t> @@ -652,7 +652,7 @@ protected: // template <class CharT> class ctype_byname; -template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY ctype_byname; +template <class _CharT> class _LIBCPP_TEMPLATE_VIS ctype_byname; template <> class _LIBCPP_TYPE_VIS ctype_byname<char> @@ -813,7 +813,7 @@ public: // template <class internT, class externT, class stateT> class codecvt; -template <class _InternT, class _ExternT, class _StateT> class _LIBCPP_TYPE_VIS_ONLY codecvt; +template <class _InternT, class _ExternT, class _StateT> class _LIBCPP_TEMPLATE_VIS codecvt; // template <> class codecvt<char, char, mbstate_t> @@ -1159,7 +1159,7 @@ protected: // template <class _InternT, class _ExternT, class _StateT> class codecvt_byname template <class _InternT, class _ExternT, class _StateT> -class _LIBCPP_TYPE_VIS_ONLY codecvt_byname +class _LIBCPP_TEMPLATE_VIS codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> { public: @@ -1367,7 +1367,7 @@ struct __widen_from_utf8<32> // template <class charT> class numpunct -template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY numpunct; +template <class _CharT> class _LIBCPP_TEMPLATE_VIS numpunct; template <> class _LIBCPP_TYPE_VIS numpunct<char> @@ -1433,7 +1433,7 @@ protected: // template <class charT> class numpunct_byname -template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY numpunct_byname; +template <class _CharT> class _LIBCPP_TEMPLATE_VIS numpunct_byname; template <> class _LIBCPP_TYPE_VIS numpunct_byname<char> Modified: vendor/libc++/dist/include/__mutex_base ============================================================================== --- vendor/libc++/dist/include/__mutex_base Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__mutex_base Fri Jan 6 20:13:54 2017 (r311538) @@ -85,11 +85,11 @@ constexpr adopt_lock_t adopt_lock = ad // the mangling consistent between dialects. #if defined(_LIBCPP_ABI_VARIADIC_LOCK_GUARD) template <class ..._Mutexes> -class _LIBCPP_TYPE_VIS_ONLY lock_guard; +class _LIBCPP_TEMPLATE_VIS lock_guard; #endif template <class _Mutex> -class _LIBCPP_TYPE_VIS_ONLY _LIBCPP_THREAD_SAFETY_ANNOTATION(scoped_lockable) +class _LIBCPP_TEMPLATE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(scoped_lockable) #if !defined(_LIBCPP_ABI_VARIADIC_LOCK_GUARD) lock_guard #else @@ -118,7 +118,7 @@ private: }; template <class _Mutex> -class _LIBCPP_TYPE_VIS_ONLY unique_lock +class _LIBCPP_TEMPLATE_VIS unique_lock { public: typedef _Mutex mutex_type; Modified: vendor/libc++/dist/include/__nullptr ============================================================================== --- vendor/libc++/dist/include/__nullptr Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__nullptr Fri Jan 6 20:13:54 2017 (r311538) @@ -21,7 +21,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -struct _LIBCPP_TYPE_VIS_ONLY nullptr_t +struct _LIBCPP_TEMPLATE_VIS nullptr_t { void* __lx; Modified: vendor/libc++/dist/include/__string ============================================================================== --- vendor/libc++/dist/include/__string Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__string Fri Jan 6 20:13:54 2017 (r311538) @@ -69,7 +69,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD // char_traits template <class _CharT> -struct _LIBCPP_TYPE_VIS_ONLY char_traits +struct _LIBCPP_TEMPLATE_VIS char_traits { typedef _CharT char_type; typedef int int_type; @@ -192,7 +192,7 @@ char_traits<_CharT>::assign(char_type* _ // char_traits<char> template <> -struct _LIBCPP_TYPE_VIS_ONLY char_traits<char> +struct _LIBCPP_TEMPLATE_VIS char_traits<char> { typedef char char_type; typedef int int_type; @@ -237,7 +237,7 @@ struct _LIBCPP_TYPE_VIS_ONLY char_traits // char_traits<wchar_t> template <> -struct _LIBCPP_TYPE_VIS_ONLY char_traits<wchar_t> +struct _LIBCPP_TEMPLATE_VIS char_traits<wchar_t> { typedef wchar_t char_type; typedef wint_t int_type; @@ -283,7 +283,7 @@ struct _LIBCPP_TYPE_VIS_ONLY char_traits #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS template <> -struct _LIBCPP_TYPE_VIS_ONLY char_traits<char16_t> +struct _LIBCPP_TEMPLATE_VIS char_traits<char16_t> { typedef char16_t char_type; typedef uint_least16_t int_type; @@ -402,7 +402,7 @@ char_traits<char16_t>::assign(char_type* } template <> -struct _LIBCPP_TYPE_VIS_ONLY char_traits<char32_t> +struct _LIBCPP_TEMPLATE_VIS char_traits<char32_t> { typedef char32_t char_type; typedef uint_least32_t int_type; Modified: vendor/libc++/dist/include/__threading_support ============================================================================== --- vendor/libc++/dist/include/__threading_support Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__threading_support Fri Jan 6 20:13:54 2017 (r311538) @@ -63,6 +63,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD typedef pthread_mutex_t __libcpp_mutex_t; #define _LIBCPP_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER +typedef pthread_mutex_t __libcpp_recursive_mutex_t; + // Condition Variable typedef pthread_cond_t __libcpp_condvar_t; #define _LIBCPP_CONDVAR_INITIALIZER PTHREAD_COND_INITIALIZER @@ -83,7 +85,19 @@ typedef pthread_key_t __libcpp_tls_key; // Mutex _LIBCPP_THREAD_ABI_VISIBILITY -int __libcpp_recursive_mutex_init(__libcpp_mutex_t *__m); +int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m); _LIBCPP_THREAD_ABI_VISIBILITY int __libcpp_mutex_lock(__libcpp_mutex_t *__m); @@ -164,7 +178,7 @@ int __libcpp_tls_set(__libcpp_tls_key __ #if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) || \ defined(_LIBCPP_BUILDING_THREAD_API_EXTERNAL_PTHREAD) -int __libcpp_recursive_mutex_init(__libcpp_mutex_t *__m) +int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m) { pthread_mutexattr_t attr; int __ec = pthread_mutexattr_init(&attr); @@ -188,6 +202,26 @@ int __libcpp_recursive_mutex_init(__libc return 0; } +int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m) +{ + return pthread_mutex_lock(__m); +} + +int __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m) +{ + return pthread_mutex_trylock(__m); +} + +int __libcpp_recursive_mutex_unlock(__libcpp_mutex_t *__m) +{ + return pthread_mutex_unlock(__m); +} + +int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m) +{ + return pthread_mutex_destroy(__m); +} + int __libcpp_mutex_lock(__libcpp_mutex_t *__m) { return pthread_mutex_lock(__m); Modified: vendor/libc++/dist/include/__tree ============================================================================== --- vendor/libc++/dist/include/__tree Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__tree Fri Jan 6 20:13:54 2017 (r311538) @@ -25,9 +25,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD template <class _Tp, class _Compare, class _Allocator> class __tree; template <class _Tp, class _NodePtr, class _DiffType> - class _LIBCPP_TYPE_VIS_ONLY __tree_iterator; + class _LIBCPP_TEMPLATE_VIS __tree_iterator; template <class _Tp, class _ConstNodePtr, class _DiffType> - class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator; + class _LIBCPP_TEMPLATE_VIS __tree_const_iterator; template <class _Pointer> class __tree_end_node; template <class _VoidPtr> class __tree_node_base; @@ -42,8 +42,8 @@ struct __value_type; #endif template <class _Allocator> class __map_node_destructor; -template <class _TreeIterator> class _LIBCPP_TYPE_VIS_ONLY __map_iterator; -template <class _TreeIterator> class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator; +template <class _TreeIterator> class _LIBCPP_TEMPLATE_VIS __map_iterator; +template <class _TreeIterator> class _LIBCPP_TEMPLATE_VIS __map_const_iterator; /* @@ -797,7 +797,7 @@ public: template <class _Tp, class _NodePtr, class _DiffType> -class _LIBCPP_TYPE_VIS_ONLY __tree_iterator +class _LIBCPP_TEMPLATE_VIS __tree_iterator { typedef __tree_node_types<_NodePtr> _NodeTypes; typedef _NodePtr __node_pointer; @@ -861,16 +861,16 @@ private: _LIBCPP_INLINE_VISIBILITY __node_pointer __get_np() const { return static_cast<__node_pointer>(__ptr_); } template <class, class, class> friend class __tree; - template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator; - template <class> friend class _LIBCPP_TYPE_VIS_ONLY __map_iterator; - template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map; - template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap; - template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY set; - template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multiset; + template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS __tree_const_iterator; + template <class> friend class _LIBCPP_TEMPLATE_VIS __map_iterator; + template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map; + template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS multimap; + template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS set; + template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS multiset; }; template <class _Tp, class _NodePtr, class _DiffType> -class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator +class _LIBCPP_TEMPLATE_VIS __tree_const_iterator { typedef __tree_node_types<_NodePtr> _NodeTypes; typedef typename _NodeTypes::__node_pointer __node_pointer; @@ -947,11 +947,11 @@ private: __node_pointer __get_np() const { return static_cast<__node_pointer>(__ptr_); } template <class, class, class> friend class __tree; - template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map; - template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap; - template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY set; - template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multiset; - template <class> friend class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator; + template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map; + template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS multimap; + template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS set; + template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS multiset; + template <class> friend class _LIBCPP_TEMPLATE_VIS __map_const_iterator; }; @@ -1397,10 +1397,17 @@ private: __node_base_pointer& __find_leaf(const_iterator __hint, __parent_pointer& __parent, const key_type& __v); + // FIXME: Make this function const qualified. Unfortunetly doing so + // breaks existing code which uses non-const callable comparators. template <class _Key> __node_base_pointer& __find_equal(__parent_pointer& __parent, const _Key& __v); template <class _Key> + _LIBCPP_INLINE_VISIBILITY __node_base_pointer& + __find_equal(__parent_pointer& __parent, const _Key& __v) const { + return const_cast<__tree*>(this)->__find_equal(__parent, __v); + } + template <class _Key> __node_base_pointer& __find_equal(const_iterator __hint, __parent_pointer& __parent, __node_base_pointer& __dummy, @@ -1453,8 +1460,8 @@ private: __node_pointer __detach(); static __node_pointer __detach(__node_pointer); - template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map; - template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap; + template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map; + template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS multimap; }; template <class _Tp, class _Compare, class _Allocator> Modified: vendor/libc++/dist/include/__tuple ============================================================================== --- vendor/libc++/dist/include/__tuple Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/__tuple Fri Jan 6 20:13:54 2017 (r311538) @@ -22,51 +22,56 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_size; +template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size; -struct __empty_tuple_size_base {}; - -template <class _Tp, class = void> -struct __tuple_size_base_type { - typedef __empty_tuple_size_base type; -}; +#if !defined(_LIBCPP_CXX03_LANG) +template <class _Tp, class...> +using __enable_if_tuple_size_imp = _Tp; template <class _Tp> -struct __tuple_size_base_type<_Tp, typename __void_t<decltype(tuple_size<_Tp>::value)>::type> -{ - typedef integral_constant<size_t, tuple_size<_Tp>::value> type; -}; +class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< + const _Tp, + typename enable_if<!is_volatile<_Tp>::value>::type, + integral_constant<size_t, sizeof(tuple_size<_Tp>)>>> + : public integral_constant<size_t, tuple_size<_Tp>::value> {}; template <class _Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_size<const _Tp> - : public __tuple_size_base_type<_Tp>::type {}; +class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< + volatile _Tp, + typename enable_if<!is_const<_Tp>::value>::type, + integral_constant<size_t, sizeof(tuple_size<_Tp>)>>> + : public integral_constant<size_t, tuple_size<_Tp>::value> {}; template <class _Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_size<volatile _Tp> - : public __tuple_size_base_type<_Tp>::type {}; +class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< + const volatile _Tp, + integral_constant<size_t, sizeof(tuple_size<_Tp>)>>> + : public integral_constant<size_t, tuple_size<_Tp>::value> {}; -template <class _Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_size<const volatile _Tp> - : public __tuple_size_base_type<_Tp>::type {}; +#else +template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<const _Tp> : public tuple_size<_Tp> {}; +template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<volatile _Tp> : public tuple_size<_Tp> {}; +template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<const volatile _Tp> : public tuple_size<_Tp> {}; +#endif -template <size_t _Ip, class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_element; +template <size_t _Ip, class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_element; template <size_t _Ip, class _Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const _Tp> +class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const _Tp> { public: typedef typename add_const<typename tuple_element<_Ip, _Tp>::type>::type type; }; template <size_t _Ip, class _Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, volatile _Tp> +class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, volatile _Tp> { public: typedef typename add_volatile<typename tuple_element<_Ip, _Tp>::type>::type type; }; template <size_t _Ip, class _Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const volatile _Tp> +class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const volatile _Tp> { public: typedef typename add_cv<typename tuple_element<_Ip, _Tp>::type>::type type; @@ -155,12 +160,12 @@ struct __make_tuple_indices }; -template <class ..._Tp> class _LIBCPP_TYPE_VIS_ONLY tuple; +template <class ..._Tp> class _LIBCPP_TEMPLATE_VIS tuple; template <class... _Tp> struct __tuple_like<tuple<_Tp...> > : true_type {}; template <class ..._Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_size<tuple<_Tp...> > +class _LIBCPP_TEMPLATE_VIS tuple_size<tuple<_Tp...> > : public integral_constant<size_t, sizeof...(_Tp)> { }; @@ -214,7 +219,7 @@ get(const pair<_T1, _T2>&&) _NOEXCEPT; // array specializations -template <class _Tp, size_t _Size> struct _LIBCPP_TYPE_VIS_ONLY array; +template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array; template <class _Tp, size_t _Size> struct __tuple_like<array<_Tp, _Size> > : true_type {}; @@ -277,7 +282,7 @@ using __type_pack_element = typename dec #endif template <size_t _Ip, class ..._Types> -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, __tuple_types<_Types...>> +class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, __tuple_types<_Types...>> { public: static_assert(_Ip < sizeof...(_Types), "tuple_element index out of range"); @@ -286,7 +291,7 @@ public: template <class ..._Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_size<__tuple_types<_Tp...> > +class _LIBCPP_TEMPLATE_VIS tuple_size<__tuple_types<_Tp...> > : public integral_constant<size_t, sizeof...(_Tp)> { }; @@ -452,7 +457,7 @@ struct __tuple_assignable<_Tp, _Up, true template <size_t _Ip, class ..._Tp> -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, tuple<_Tp...> > +class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, tuple<_Tp...> > { public: typedef typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type; Modified: vendor/libc++/dist/include/any ============================================================================== --- vendor/libc++/dist/include/any Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/any Fri Jan 6 20:13:54 2017 (r311538) @@ -113,7 +113,7 @@ void __throw_bad_any_cast() } // Forward declarations -class _LIBCPP_TYPE_VIS_ONLY any; +class _LIBCPP_TEMPLATE_VIS any; template <class _ValueType> _LIBCPP_INLINE_VISIBILITY @@ -148,7 +148,7 @@ namespace __any_imp template <class _Tp> struct _LargeHandler; template <class _Tp> - struct _LIBCPP_TYPE_VIS_ONLY __unique_typeinfo { static constexpr int __id = 0; }; + struct _LIBCPP_TEMPLATE_VIS __unique_typeinfo { static constexpr int __id = 0; }; template <class _Tp> constexpr int __unique_typeinfo<_Tp>::__id; template <class _Tp> @@ -176,7 +176,7 @@ namespace __any_imp } // namespace __any_imp -class _LIBCPP_TYPE_VIS_ONLY any +class _LIBCPP_TEMPLATE_VIS any { public: // construct/destruct @@ -338,7 +338,7 @@ private: namespace __any_imp { template <class _Tp> - struct _LIBCPP_TYPE_VIS_ONLY _SmallHandler + struct _LIBCPP_TEMPLATE_VIS _SmallHandler { _LIBCPP_INLINE_VISIBILITY static void* __handle(_Action __act, any const * __this, any * __other, @@ -412,7 +412,7 @@ namespace __any_imp }; template <class _Tp> - struct _LIBCPP_TYPE_VIS_ONLY _LargeHandler + struct _LIBCPP_TEMPLATE_VIS _LargeHandler { _LIBCPP_INLINE_VISIBILITY static void* __handle(_Action __act, any const * __this, Modified: vendor/libc++/dist/include/array ============================================================================== --- vendor/libc++/dist/include/array Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/array Fri Jan 6 20:13:54 2017 (r311538) @@ -116,7 +116,7 @@ template <size_t I, class T, size_t N> c _LIBCPP_BEGIN_NAMESPACE_STD template <class _Tp, size_t _Size> -struct _LIBCPP_TYPE_VIS_ONLY array +struct _LIBCPP_TEMPLATE_VIS array { // types: typedef array __self; @@ -284,11 +284,11 @@ swap(array<_Tp, _Size>& __x, array<_Tp, } template <class _Tp, size_t _Size> -class _LIBCPP_TYPE_VIS_ONLY tuple_size<array<_Tp, _Size> > +class _LIBCPP_TEMPLATE_VIS tuple_size<array<_Tp, _Size> > : public integral_constant<size_t, _Size> {}; template <size_t _Ip, class _Tp, size_t _Size> -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, array<_Tp, _Size> > +class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, array<_Tp, _Size> > { public: typedef _Tp type; Modified: vendor/libc++/dist/include/bitset ============================================================================== --- vendor/libc++/dist/include/bitset Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/bitset Fri Jan 6 20:13:54 2017 (r311538) @@ -646,11 +646,11 @@ __bitset<0, 0>::__bitset(unsigned long l { } -template <size_t _Size> class _LIBCPP_TYPE_VIS_ONLY bitset; +template <size_t _Size> class _LIBCPP_TEMPLATE_VIS bitset; template <size_t _Size> struct hash<bitset<_Size> >; template <size_t _Size> -class _LIBCPP_TYPE_VIS_ONLY bitset +class _LIBCPP_TEMPLATE_VIS bitset : private __bitset<_Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1, _Size> { public: @@ -1072,7 +1072,7 @@ operator^(const bitset<_Size>& __x, cons } template <size_t _Size> -struct _LIBCPP_TYPE_VIS_ONLY hash<bitset<_Size> > +struct _LIBCPP_TEMPLATE_VIS hash<bitset<_Size> > : public unary_function<bitset<_Size>, size_t> { _LIBCPP_INLINE_VISIBILITY Modified: vendor/libc++/dist/include/chrono ============================================================================== --- vendor/libc++/dist/include/chrono Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/chrono Fri Jan 6 20:13:54 2017 (r311538) @@ -77,13 +77,13 @@ public: constexpr duration operator+() const; constexpr duration operator-() const; - duration& operator++(); - duration operator++(int); - duration& operator--(); - duration operator--(int); + constexpr duration& operator++(); + constexpr duration operator++(int); + constexpr duration& operator--(); + constexpr duration operator--(int); - duration& operator+=(const duration& d); - duration& operator-=(const duration& d); + constexpr duration& operator+=(const duration& d); + constexpr duration& operator-=(const duration& d); duration& operator*=(const rep& rhs); duration& operator/=(const rep& rhs); @@ -316,7 +316,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD namespace chrono { -template <class _Rep, class _Period = ratio<1> > class _LIBCPP_TYPE_VIS_ONLY duration; +template <class _Rep, class _Period = ratio<1> > class _LIBCPP_TEMPLATE_VIS duration; template <class _Tp> struct __is_duration : false_type {}; @@ -336,7 +336,7 @@ struct __is_duration<const volatile dura } // chrono template <class _Rep1, class _Period1, class _Rep2, class _Period2> -struct _LIBCPP_TYPE_VIS_ONLY common_type<chrono::duration<_Rep1, _Period1>, +struct _LIBCPP_TEMPLATE_VIS common_type<chrono::duration<_Rep1, _Period1>, chrono::duration<_Rep2, _Period2> > { typedef chrono::duration<typename common_type<_Rep1, _Rep2>::type, @@ -414,7 +414,7 @@ duration_cast(const duration<_Rep, _Peri } template <class _Rep> -struct _LIBCPP_TYPE_VIS_ONLY treat_as_floating_point : is_floating_point<_Rep> {}; +struct _LIBCPP_TEMPLATE_VIS treat_as_floating_point : is_floating_point<_Rep> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) template <class _Rep> _LIBCPP_CONSTEXPR bool treat_as_floating_point_v @@ -422,7 +422,7 @@ template <class _Rep> _LIBCPP_CONSTEXPR #endif template <class _Rep> -struct _LIBCPP_TYPE_VIS_ONLY duration_values +struct _LIBCPP_TEMPLATE_VIS duration_values { public: _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() {return _Rep(0);} @@ -485,7 +485,7 @@ round(const duration<_Rep, _Period>& __d // duration template <class _Rep, class _Period> -class _LIBCPP_TYPE_VIS_ONLY duration +class _LIBCPP_TEMPLATE_VIS duration { static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration"); static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio"); @@ -567,18 +567,18 @@ public: _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR duration operator+() const {return *this;} _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR duration operator-() const {return duration(-__rep_);} - _LIBCPP_INLINE_VISIBILITY duration& operator++() {++__rep_; return *this;} - _LIBCPP_INLINE_VISIBILITY duration operator++(int) {return duration(__rep_++);} - _LIBCPP_INLINE_VISIBILITY duration& operator--() {--__rep_; return *this;} - _LIBCPP_INLINE_VISIBILITY duration operator--(int) {return duration(__rep_--);} - - _LIBCPP_INLINE_VISIBILITY duration& operator+=(const duration& __d) {__rep_ += __d.count(); return *this;} - _LIBCPP_INLINE_VISIBILITY duration& operator-=(const duration& __d) {__rep_ -= __d.count(); return *this;} - - _LIBCPP_INLINE_VISIBILITY duration& operator*=(const rep& rhs) {__rep_ *= rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY duration& operator/=(const rep& rhs) {__rep_ /= rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY duration& operator%=(const rep& rhs) {__rep_ %= rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY duration& operator%=(const duration& rhs) {__rep_ %= rhs.count(); return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator++() {++__rep_; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration operator++(int) {return duration(__rep_++);} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator--() {--__rep_; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration operator--(int) {return duration(__rep_--);} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator+=(const duration& __d) {__rep_ += __d.count(); return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator-=(const duration& __d) {__rep_ -= __d.count(); return *this;} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator*=(const rep& rhs) {__rep_ *= rhs; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator/=(const rep& rhs) {__rep_ /= rhs; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator%=(const rep& rhs) {__rep_ %= rhs; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator%=(const duration& rhs) {__rep_ %= rhs.count(); return *this;} // special values @@ -828,7 +828,7 @@ operator%(const duration<_Rep1, _Period1 ////////////////////////////////////////////////////////// template <class _Clock, class _Duration = typename _Clock::duration> -class _LIBCPP_TYPE_VIS_ONLY time_point +class _LIBCPP_TEMPLATE_VIS time_point { static_assert(__is_duration<_Duration>::value, "Second template parameter of time_point must be a std::chrono::duration"); @@ -872,7 +872,7 @@ public: } // chrono template <class _Clock, class _Duration1, class _Duration2> -struct _LIBCPP_TYPE_VIS_ONLY common_type<chrono::time_point<_Clock, _Duration1>, +struct _LIBCPP_TEMPLATE_VIS common_type<chrono::time_point<_Clock, _Duration1>, chrono::time_point<_Clock, _Duration2> > { typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type; Modified: vendor/libc++/dist/include/codecvt ============================================================================== --- vendor/libc++/dist/include/codecvt Fri Jan 6 20:13:50 2017 (r311537) +++ vendor/libc++/dist/include/codecvt Fri Jan 6 20:13:54 2017 (r311538) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701062013.v06KDsX4068614>