[libcxx] r294100 - Mark basic_string::assign templates as inline to improve ABI stability.

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Sat Feb 4 12:38:36 PST 2017


Author: ericwf
Date: Sat Feb  4 14:38:35 2017
New Revision: 294100

URL: http://llvm.org/viewvc/llvm-project?rev=294100&view=rev
Log:
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.

Modified:
    libcxx/trunk/include/string

Modified: libcxx/trunk/include/string
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?rev=294100&r1=294099&r2=294100&view=diff
==============================================================================
--- libcxx/trunk/include/string (original)
+++ libcxx/trunk/include/string Sat Feb  4 14:38:35 2017
@@ -998,7 +998,7 @@ public:
     basic_string& assign(const value_type* __s);
     basic_string& assign(size_type __n, value_type __c);
     template<class _InputIterator>
-        typename enable_if
+        inline typename enable_if
         <
            __is_exactly_input_iterator<_InputIterator>::value
                 || !__libcpp_string_gets_noexcept_iterator<_InputIterator>::value,
@@ -1006,7 +1006,7 @@ public:
         >::type
         assign(_InputIterator __first, _InputIterator __last);
     template<class _ForwardIterator>
-        typename enable_if
+      inline typename enable_if
         <
             __is_forward_iterator<_ForwardIterator>::value
                  && __libcpp_string_gets_noexcept_iterator<_ForwardIterator>::value,




More information about the cfe-commits mailing list