e9d60c5636
Modern compiler will issue a following error whenever '#include <string>' is done: /nix/store/yxpwamjdapjcp53mmsdh1j2c9bc26h4k-libc++-3.7.1/include/c++/v1/string:1938:44: error: 'basic_string<_CharT, _Traits, _Allocator>' is missing exception specification 'noexcept(is_nothrow_copy_constructible<allocator_type>::value)' basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a) ^ /nix/store/yxpwamjdapjcp53mmsdh1j2c9bc26h4k-libc++-3.7.1/include/c++/v1/string:1326:40: note: previous declaration is here _LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a) ^ 1 error generated. This happens because modern clang is more strict about checking exception specification for forward declaration and definition. http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?r1=242056&r2=242623&diff_format=h
16 lines
528 B
Diff
16 lines
528 B
Diff
--- a/include/string 2015/07/13 20:04:56 242056
|
|
+++ b/include/string 2015/07/18 20:40:46 242623
|
|
@@ -1936,7 +1936,12 @@
|
|
template <class _CharT, class _Traits, class _Allocator>
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a)
|
|
- : __r_(__a)
|
|
+#if _LIBCPP_STD_VER <= 14
|
|
+ _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
|
|
+#else
|
|
+ _NOEXCEPT
|
|
+#endif
|
|
+: __r_(__a)
|
|
{
|
|
#if _LIBCPP_DEBUG_LEVEL >= 2
|
|
__get_db()->__insert_c(this);
|