Mark basic_string::assign templates as inline to improve ABI stability.

Visible definitions for basic_string::assign are sometimes emitted in
the dylib depending on the version of LLVM used to compile libc++.
This can cause the check-cxx-abilist target to fail.

This patch attempts marks the basic_string::assign templates as inline
to prevent this. That way the export list is consistent across LLVM
versions.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294100 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2017-02-04 20:38:35 +00:00
parent b1b1dcf538
commit 9e6abfa091

View File

@@ -998,7 +998,7 @@ public:
basic_string& assign(const value_type* __s); basic_string& assign(const value_type* __s);
basic_string& assign(size_type __n, value_type __c); basic_string& assign(size_type __n, value_type __c);
template<class _InputIterator> template<class _InputIterator>
typename enable_if inline typename enable_if
< <
__is_exactly_input_iterator<_InputIterator>::value __is_exactly_input_iterator<_InputIterator>::value
|| !__libcpp_string_gets_noexcept_iterator<_InputIterator>::value, || !__libcpp_string_gets_noexcept_iterator<_InputIterator>::value,
@@ -1006,7 +1006,7 @@ public:
>::type >::type
assign(_InputIterator __first, _InputIterator __last); assign(_InputIterator __first, _InputIterator __last);
template<class _ForwardIterator> template<class _ForwardIterator>
typename enable_if inline typename enable_if
< <
__is_forward_iterator<_ForwardIterator>::value __is_forward_iterator<_ForwardIterator>::value
&& __libcpp_string_gets_noexcept_iterator<_ForwardIterator>::value, && __libcpp_string_gets_noexcept_iterator<_ForwardIterator>::value,