Index: include/__locale =================================================================== --- include/__locale +++ include/__locale @@ -197,24 +197,24 @@ typedef _CharT char_type; typedef basic_string string_type; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit collate(size_t __refs = 0) : locale::facet(__refs) {} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int compare(const char_type* __lo1, const char_type* __hi1, const char_type* __lo2, const char_type* __hi2) const { return do_compare(__lo1, __hi1, __lo2, __hi2); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY string_type transform(const char_type* __lo, const char_type* __hi) const { return do_transform(__lo, __hi); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY long hash(const char_type* __lo, const char_type* __hi) const { return do_hash(__lo, __hi); @@ -1163,10 +1163,10 @@ : public codecvt<_InternT, _ExternT, _StateT> { public: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit codecvt_byname(const char* __nm, size_t __refs = 0) : codecvt<_InternT, _ExternT, _StateT>(__nm, __refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit codecvt_byname(const string& __nm, size_t __refs = 0) : codecvt<_InternT, _ExternT, _StateT>(__nm.c_str(), __refs) {} protected: Index: include/ios =================================================================== --- include/ios +++ include/ios @@ -585,68 +585,68 @@ typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY _LIBCPP_EXPLICIT operator bool() const {return !fail();} - _LIBCPP_ALWAYS_INLINE bool operator!() const {return fail();} - _LIBCPP_ALWAYS_INLINE iostate rdstate() const {return ios_base::rdstate();} - _LIBCPP_ALWAYS_INLINE void clear(iostate __state = goodbit) {ios_base::clear(__state);} - _LIBCPP_ALWAYS_INLINE void setstate(iostate __state) {ios_base::setstate(__state);} - _LIBCPP_ALWAYS_INLINE bool good() const {return ios_base::good();} - _LIBCPP_ALWAYS_INLINE bool eof() const {return ios_base::eof();} - _LIBCPP_ALWAYS_INLINE bool fail() const {return ios_base::fail();} - _LIBCPP_ALWAYS_INLINE bool bad() const {return ios_base::bad();} - - _LIBCPP_ALWAYS_INLINE iostate exceptions() const {return ios_base::exceptions();} - _LIBCPP_ALWAYS_INLINE void exceptions(iostate __iostate) {ios_base::exceptions(__iostate);} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool operator!() const {return fail();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iostate rdstate() const {return ios_base::rdstate();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void clear(iostate __state = goodbit) {ios_base::clear(__state);} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void setstate(iostate __state) {ios_base::setstate(__state);} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool good() const {return ios_base::good();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool eof() const {return ios_base::eof();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool fail() const {return ios_base::fail();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool bad() const {return ios_base::bad();} + + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iostate exceptions() const {return ios_base::exceptions();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void exceptions(iostate __iostate) {ios_base::exceptions(__iostate);} // 27.5.4.1 Constructor/destructor: - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit basic_ios(basic_streambuf* __sb); virtual ~basic_ios(); // 27.5.4.2 Members: - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ostream* tie() const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ostream* tie(basic_ostream* __tiestr); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_streambuf* rdbuf() const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_streambuf* rdbuf(basic_streambuf* __sb); basic_ios& copyfmt(const basic_ios& __rhs); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type fill() const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type fill(char_type __ch); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY locale imbue(const locale& __loc); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char narrow(char_type __c, char __dfault) const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type widen(char __c) const; protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ios() {// purposefully does no initialization } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void init(basic_streambuf* __sb); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void move(basic_ios& __rhs); #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void move(basic_ios&& __rhs) {move(__rhs);} #endif - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void swap(basic_ios& __rhs) _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void set_rdbuf(basic_streambuf* __sb); private: basic_ostream* __tie_; @@ -654,7 +654,7 @@ }; template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ios<_CharT, _Traits>::basic_ios(basic_streambuf* __sb) { init(__sb); @@ -666,7 +666,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_ios<_CharT, _Traits>::init(basic_streambuf* __sb) { @@ -676,7 +676,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>* basic_ios<_CharT, _Traits>::tie() const { @@ -684,7 +684,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>* basic_ios<_CharT, _Traits>::tie(basic_ostream* __tiestr) { @@ -694,7 +694,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_streambuf<_CharT, _Traits>* basic_ios<_CharT, _Traits>::rdbuf() const { @@ -702,7 +702,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_streambuf<_CharT, _Traits>* basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf* __sb) { @@ -712,7 +712,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY locale basic_ios<_CharT, _Traits>::imbue(const locale& __loc) { @@ -724,7 +724,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char basic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const { @@ -732,7 +732,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY _CharT basic_ios<_CharT, _Traits>::widen(char __c) const { @@ -740,7 +740,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY _CharT basic_ios<_CharT, _Traits>::fill() const { @@ -750,7 +750,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY _CharT basic_ios<_CharT, _Traits>::fill(char_type __ch) { @@ -776,7 +776,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_ios<_CharT, _Traits>::move(basic_ios& __rhs) { @@ -787,7 +787,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_ios<_CharT, _Traits>::swap(basic_ios& __rhs) _NOEXCEPT { @@ -797,7 +797,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_ios<_CharT, _Traits>::set_rdbuf(basic_streambuf* __sb) { Index: include/istream =================================================================== --- include/istream +++ include/istream @@ -190,12 +190,12 @@ virtual ~basic_istream(); protected: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - inline _LIBCPP_INLINE_VISIBILITY + inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_istream(basic_istream&& __rhs); #endif // 27.7.1.1.2 Assign/swap: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - inline _LIBCPP_INLINE_VISIBILITY + inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_istream& operator=(basic_istream&& __rhs); #endif @@ -249,7 +249,7 @@ basic_istream& operator>>(void*& __p); // 27.7.1.3 Unformatted input: - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY streamsize gcount() const {return __gc_;} int_type get(); @@ -305,7 +305,7 @@ explicit sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); // ~sentry() = default; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY _LIBCPP_EXPLICIT operator bool() const {return __ok_;} }; @@ -1464,13 +1464,13 @@ virtual ~basic_iostream(); protected: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - inline _LIBCPP_INLINE_VISIBILITY + inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_iostream(basic_iostream&& __rhs); #endif // assign/swap #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - inline _LIBCPP_INLINE_VISIBILITY + inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_iostream& operator=(basic_iostream&& __rhs); #endif inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY Index: include/locale =================================================================== --- include/locale +++ include/locale @@ -535,81 +535,81 @@ typedef _CharT char_type; typedef _InputIterator iter_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit num_get(size_t __refs = 0) : locale::facet(__refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, bool& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, long& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, long long& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, unsigned short& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, unsigned int& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, unsigned long& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, unsigned long long& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, float& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, double& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, long double& __v) const { return do_get(__b, __e, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, void*& __v) const { @@ -619,7 +619,7 @@ static locale::id id; protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~num_get() {} template @@ -1204,60 +1204,60 @@ typedef _CharT char_type; typedef _OutputIterator iter_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit num_put(size_t __refs = 0) : locale::facet(__refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, bool __v) const { return do_put(__s, __iob, __fl, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, long __v) const { return do_put(__s, __iob, __fl, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, long long __v) const { return do_put(__s, __iob, __fl, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, unsigned long __v) const { return do_put(__s, __iob, __fl, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, unsigned long long __v) const { return do_put(__s, __iob, __fl, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, double __v) const { return do_put(__s, __iob, __fl, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, long double __v) const { return do_put(__s, __iob, __fl, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, const void* __v) const { @@ -1267,7 +1267,7 @@ static locale::id id; protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~num_put() {} virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, @@ -1693,52 +1693,52 @@ typedef time_base::dateorder dateorder; typedef basic_string string_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit time_get(size_t __refs = 0) : locale::facet(__refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY dateorder date_order() const { return this->do_date_order(); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get_time(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, tm* __tm) const { return do_get_time(__b, __e, __iob, __err, __tm); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get_date(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, tm* __tm) const { return do_get_date(__b, __e, __iob, __err, __tm); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get_weekday(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, tm* __tm) const { return do_get_weekday(__b, __e, __iob, __err, __tm); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get_monthname(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, tm* __tm) const { return do_get_monthname(__b, __e, __iob, __err, __tm); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get_year(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, tm* __tm) const { return do_get_year(__b, __e, __iob, __err, __tm); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, ios_base& __iob, ios_base::iostate& __err, tm *__tm, char __fmt, char __mod = 0) const @@ -1753,7 +1753,7 @@ static locale::id id; protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~time_get() {} virtual dateorder do_date_order() const; @@ -2342,35 +2342,35 @@ typedef _CharT char_type; typedef basic_string string_type; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit time_get_byname(const char* __nm, size_t __refs = 0) : time_get<_CharT, _InputIterator>(__refs), __time_get_storage<_CharT>(__nm) {} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit time_get_byname(const string& __nm, size_t __refs = 0) : time_get<_CharT, _InputIterator>(__refs), __time_get_storage<_CharT>(__nm) {} protected: - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~time_get_byname() {} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY virtual dateorder do_date_order() const {return this->__do_date_order();} private: - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY virtual const string_type* __weeks() const {return this->__weeks_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY virtual const string_type* __months() const {return this->__months_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY virtual const string_type* __am_pm() const {return this->__am_pm_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY virtual const string_type& __c() const {return this->__c_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY virtual const string_type& __r() const {return this->__r_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY virtual const string_type& __x() const {return this->__x_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY virtual const string_type& __X() const {return this->__X_;} }; @@ -2400,14 +2400,14 @@ typedef _CharT char_type; typedef _OutputIterator iter_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit time_put(size_t __refs = 0) : locale::facet(__refs) {} iter_type put(iter_type __s, ios_base& __iob, char_type __fl, const tm* __tm, const char_type* __pb, const char_type* __pe) const; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, ios_base& __iob, char_type __fl, const tm* __tm, char __fmt, char __mod = 0) const { @@ -2417,16 +2417,16 @@ static locale::id id; protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~time_put() {} virtual iter_type do_put(iter_type __s, ios_base&, char_type, const tm* __tm, char __fmt, char __mod) const; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit time_put(const char* __nm, size_t __refs) : locale::facet(__refs), __time_put(__nm) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit time_put(const string& __nm, size_t __refs) : locale::facet(__refs), __time_put(__nm) {} @@ -2495,16 +2495,16 @@ : public time_put<_CharT, _OutputIterator> { public: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit time_put_byname(const char* __nm, size_t __refs = 0) : time_put<_CharT, _OutputIterator>(__nm, __refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit time_put_byname(const string& __nm, size_t __refs = 0) : time_put<_CharT, _OutputIterator>(__nm, __refs) {} protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~time_put_byname() {} }; @@ -2533,25 +2533,25 @@ typedef _CharT char_type; typedef basic_string string_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit moneypunct(size_t __refs = 0) : locale::facet(__refs) {} - _LIBCPP_ALWAYS_INLINE char_type decimal_point() const {return do_decimal_point();} - _LIBCPP_ALWAYS_INLINE char_type thousands_sep() const {return do_thousands_sep();} - _LIBCPP_ALWAYS_INLINE string grouping() const {return do_grouping();} - _LIBCPP_ALWAYS_INLINE string_type curr_symbol() const {return do_curr_symbol();} - _LIBCPP_ALWAYS_INLINE string_type positive_sign() const {return do_positive_sign();} - _LIBCPP_ALWAYS_INLINE string_type negative_sign() const {return do_negative_sign();} - _LIBCPP_ALWAYS_INLINE int frac_digits() const {return do_frac_digits();} - _LIBCPP_ALWAYS_INLINE pattern pos_format() const {return do_pos_format();} - _LIBCPP_ALWAYS_INLINE pattern neg_format() const {return do_neg_format();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type decimal_point() const {return do_decimal_point();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type thousands_sep() const {return do_thousands_sep();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY string grouping() const {return do_grouping();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY string_type curr_symbol() const {return do_curr_symbol();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY string_type positive_sign() const {return do_positive_sign();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY string_type negative_sign() const {return do_negative_sign();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int frac_digits() const {return do_frac_digits();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY pattern pos_format() const {return do_pos_format();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY pattern neg_format() const {return do_neg_format();} static locale::id id; static const bool intl = _International; protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~moneypunct() {} virtual char_type do_decimal_point() const {return numeric_limits::max();} @@ -2591,16 +2591,16 @@ typedef _CharT char_type; typedef basic_string string_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit moneypunct_byname(const char* __nm, size_t __refs = 0) : moneypunct<_CharT, _International>(__refs) {init(__nm);} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit moneypunct_byname(const string& __nm, size_t __refs = 0) : moneypunct<_CharT, _International>(__refs) {init(__nm.c_str());} protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~moneypunct_byname() {} virtual char_type do_decimal_point() const {return __decimal_point_;} @@ -2646,7 +2646,7 @@ typedef _CharT char_type; typedef basic_string string_type; - _LIBCPP_ALWAYS_INLINE __money_get() {} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __money_get() {} static void __gather_info(bool __intl, const locale& __loc, money_base::pattern& __pat, char_type& __dp, @@ -2704,18 +2704,18 @@ typedef _InputIterator iter_type; typedef basic_string string_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit money_get(size_t __refs = 0) : locale::facet(__refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, bool __intl, ios_base& __iob, ios_base::iostate& __err, long double& __v) const { return do_get(__b, __e, __intl, __iob, __err, __v); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type get(iter_type __b, iter_type __e, bool __intl, ios_base& __iob, ios_base::iostate& __err, string_type& __v) const { @@ -2726,7 +2726,7 @@ protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~money_get() {} virtual iter_type do_get(iter_type __b, iter_type __e, bool __intl, @@ -3086,7 +3086,7 @@ typedef _CharT char_type; typedef basic_string string_type; - _LIBCPP_ALWAYS_INLINE __money_put() {} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __money_put() {} static void __gather_info(bool __intl, bool __neg, const locale& __loc, money_base::pattern& __pat, char_type& __dp, @@ -3262,18 +3262,18 @@ typedef _OutputIterator iter_type; typedef basic_string string_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit money_put(size_t __refs = 0) : locale::facet(__refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, bool __intl, ios_base& __iob, char_type __fl, long double __units) const { return do_put(__s, __intl, __iob, __fl, __units); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iter_type put(iter_type __s, bool __intl, ios_base& __iob, char_type __fl, const string_type& __digits) const { @@ -3283,7 +3283,7 @@ static locale::id id; protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~money_put() {} virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __iob, @@ -3424,24 +3424,24 @@ typedef _CharT char_type; typedef basic_string<_CharT> string_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit messages(size_t __refs = 0) : locale::facet(__refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY catalog open(const basic_string& __nm, const locale& __loc) const { return do_open(__nm, __loc); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY string_type get(catalog __c, int __set, int __msgid, const string_type& __dflt) const { return do_get(__c, __set, __msgid, __dflt); } - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void close(catalog __c) const { do_close(__c); @@ -3450,7 +3450,7 @@ static locale::id id; protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~messages() {} virtual catalog do_open(const basic_string&, const locale&) const; @@ -3523,16 +3523,16 @@ typedef messages_base::catalog catalog; typedef basic_string<_CharT> string_type; - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit messages_byname(const char*, size_t __refs = 0) : messages<_CharT>(__refs) {} - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit messages_byname(const string&, size_t __refs = 0) : messages<_CharT>(__refs) {} protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY ~messages_byname() {} }; Index: include/ostream =================================================================== --- include/ostream +++ include/ostream @@ -166,13 +166,13 @@ virtual ~basic_ostream(); protected: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - inline _LIBCPP_INLINE_VISIBILITY + inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ostream(basic_ostream&& __rhs); #endif // 27.7.2.3 Assign/swap #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - inline _LIBCPP_INLINE_VISIBILITY + inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ostream& operator=(basic_ostream&& __rhs); #endif inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY @@ -234,7 +234,7 @@ basic_ostream& seekp(off_type __off, ios_base::seekdir __dir); protected: - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_ostream() {} // extension, intentially does not initialize }; @@ -251,7 +251,7 @@ explicit sentry(basic_ostream<_CharT, _Traits>& __os); ~sentry(); - _LIBCPP_ALWAYS_INLINE + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY _LIBCPP_EXPLICIT operator bool() const {return __ok_;} }; Index: include/streambuf =================================================================== --- include/streambuf +++ include/streambuf @@ -230,9 +230,9 @@ void swap(basic_streambuf& __rhs); // 27.6.2.3.2 Get area: - _LIBCPP_ALWAYS_INLINE char_type* eback() const {return __binp_;} - _LIBCPP_ALWAYS_INLINE char_type* gptr() const {return __ninp_;} - _LIBCPP_ALWAYS_INLINE char_type* egptr() const {return __einp_;} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type* eback() const {return __binp_;} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type* gptr() const {return __ninp_;} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type* egptr() const {return __einp_;} inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void gbump(int __n) { __ninp_ += __n; } @@ -245,9 +245,9 @@ } // 27.6.2.3.3 Put area: - _LIBCPP_ALWAYS_INLINE char_type* pbase() const {return __bout_;} - _LIBCPP_ALWAYS_INLINE char_type* pptr() const {return __nout_;} - _LIBCPP_ALWAYS_INLINE char_type* epptr() const {return __eout_;} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type* pbase() const {return __bout_;} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type* pptr() const {return __nout_;} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY char_type* epptr() const {return __eout_;} inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void pbump(int __n) { __nout_ += __n; } Index: include/string =================================================================== --- include/string +++ include/string @@ -748,10 +748,10 @@ public: static const size_type npos = -1; - _LIBCPP_INLINE_VISIBILITY basic_string() + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string() _NOEXCEPT_(is_nothrow_default_constructible::value); - _LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a) + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a) #if _LIBCPP_STD_VER <= 14 _NOEXCEPT_(is_nothrow_copy_constructible::value); #else @@ -762,7 +762,7 @@ basic_string(const basic_string& __str, const allocator_type& __a); #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(basic_string&& __str) #if _LIBCPP_STD_VER <= 14 _NOEXCEPT_(is_nothrow_move_constructible::value); @@ -770,28 +770,28 @@ _NOEXCEPT; #endif - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(basic_string&& __str, const allocator_type& __a); #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY basic_string(const value_type* __s); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(const value_type* __s); + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(const value_type* __s, const allocator_type& __a); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(const value_type* __s, size_type __n); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(const value_type* __s, size_type __n, const allocator_type& __a); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(size_type __n, value_type __c); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(size_type __n, value_type __c, const allocator_type& __a); basic_string(const basic_string& __str, size_type __pos, size_type __n, const allocator_type& __a = allocator_type()); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(const basic_string& __str, size_type __pos, const allocator_type& __a = allocator_type()); - _LIBCPP_INLINE_VISIBILITY explicit + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY explicit basic_string(__self_view __sv); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(__self_view __sv, const allocator_type& __a); template _LIBCPP_INLINE_VISIBILITY @@ -800,29 +800,29 @@ _LIBCPP_INLINE_VISIBILITY basic_string(_InputIterator __first, _InputIterator __last, const allocator_type& __a); #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(initializer_list __il); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string(initializer_list __il, const allocator_type& __a); #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS inline ~basic_string(); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY operator __self_view() const _NOEXCEPT { return __self_view(data(), size()); } basic_string& operator=(const basic_string& __str); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator=(__self_view __sv) {return assign(__sv);} #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator=(basic_string&& __str) _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); #endif - _LIBCPP_INLINE_VISIBILITY basic_string& operator=(const value_type* __s) {return assign(__s);} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator=(const value_type* __s) {return assign(__s);} basic_string& operator=(value_type __c); #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator=(initializer_list __il) {return assign(__il.begin(), __il.size());} #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS @@ -840,80 +840,80 @@ const_iterator end() const _NOEXCEPT {return const_iterator(this, __get_pointer() + size());} #else - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iterator begin() _NOEXCEPT {return iterator(__get_pointer());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_iterator begin() const _NOEXCEPT {return const_iterator(__get_pointer());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iterator end() _NOEXCEPT {return iterator(__get_pointer() + size());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_iterator end() const _NOEXCEPT {return const_iterator(__get_pointer() + size());} #endif // _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY reverse_iterator rbegin() _NOEXCEPT {return reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_reverse_iterator rbegin() const _NOEXCEPT {return const_reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY reverse_iterator rend() _NOEXCEPT {return reverse_iterator(begin());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_reverse_iterator rend() const _NOEXCEPT {return const_reverse_iterator(begin());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_iterator cbegin() const _NOEXCEPT {return begin();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_iterator cend() const _NOEXCEPT {return end();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_reverse_iterator crbegin() const _NOEXCEPT {return rbegin();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_reverse_iterator crend() const _NOEXCEPT {return rend();} - _LIBCPP_INLINE_VISIBILITY size_type size() const _NOEXCEPT + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type size() const _NOEXCEPT {return __is_long() ? __get_long_size() : __get_short_size();} - _LIBCPP_INLINE_VISIBILITY size_type length() const _NOEXCEPT {return size();} - _LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY size_type capacity() const _NOEXCEPT + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type length() const _NOEXCEPT {return size();} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT; + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type capacity() const _NOEXCEPT {return (__is_long() ? __get_long_cap() : static_cast(__min_cap)) - 1;} void resize(size_type __n, value_type __c); - _LIBCPP_INLINE_VISIBILITY void resize(size_type __n) {resize(__n, value_type());} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void resize(size_type __n) {resize(__n, value_type());} void reserve(size_type res_arg = 0); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void shrink_to_fit() _NOEXCEPT {reserve();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void clear() _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY bool empty() const _NOEXCEPT {return size() == 0;} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool empty() const _NOEXCEPT {return size() == 0;} - _LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __pos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY reference operator[](size_type __pos) _NOEXCEPT; + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_reference operator[](size_type __pos) const _NOEXCEPT; + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY reference operator[](size_type __pos) _NOEXCEPT; const_reference at(size_type __n) const; reference at(size_type __n); - _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(const basic_string& __str) {return append(__str);} - _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(__self_view __sv) {return append(__sv);} - _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(const value_type* __s) {return append(__s);} - _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(value_type __c) {push_back(__c); return *this;} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator+=(const basic_string& __str) {return append(__str);} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator+=(__self_view __sv) {return append(__sv);} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator+=(const value_type* __s) {return append(__s);} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator+=(value_type __c) {push_back(__c); return *this;} #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(initializer_list __il) {return append(__il);} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& operator+=(initializer_list __il) {return append(__il);} #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& append(const basic_string& __str); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& append(__self_view __sv) { return append(__sv.data(), __sv.size()); } basic_string& append(const basic_string& __str, size_type __pos, size_type __n=npos); template @@ -954,24 +954,24 @@ } #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& append(initializer_list __il) {return append(__il.begin(), __il.size());} #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS void push_back(value_type __c); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void pop_back(); - _LIBCPP_INLINE_VISIBILITY reference front(); - _LIBCPP_INLINE_VISIBILITY const_reference front() const; - _LIBCPP_INLINE_VISIBILITY reference back(); - _LIBCPP_INLINE_VISIBILITY const_reference back() const; + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY reference front(); + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_reference front() const; + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY reference back(); + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_reference back() const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& assign(__self_view __sv) { return assign(__sv.data(), __sv.size()); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& assign(const basic_string& __str) { return *this = __str; } #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& assign(basic_string&& str) _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)) {*this = _VSTD::move(str); return *this;} @@ -1004,13 +1004,13 @@ >::type assign(_ForwardIterator __first, _ForwardIterator __last); #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& assign(initializer_list __il) {return assign(__il.begin(), __il.size());} #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& insert(size_type __pos1, const basic_string& __str); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& insert(size_type __pos1, __self_view __sv) { return insert(__pos1, __sv.data(), __sv.size()); } template typename enable_if @@ -1024,7 +1024,7 @@ basic_string& insert(size_type __pos, const value_type* __s); basic_string& insert(size_type __pos, size_type __n, value_type __c); iterator insert(const_iterator __pos, value_type __c); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iterator insert(const_iterator __pos, size_type __n, value_type __c); template typename enable_if @@ -1043,20 +1043,20 @@ >::type insert(const_iterator __pos, _ForwardIterator __first, _ForwardIterator __last); #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iterator insert(const_iterator __pos, initializer_list __il) {return insert(__pos, __il.begin(), __il.end());} #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS basic_string& erase(size_type __pos = 0, size_type __n = npos); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iterator erase(const_iterator __pos); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY iterator erase(const_iterator __first, const_iterator __last); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& replace(size_type __pos1, size_type __n1, __self_view __sv) { return replace(__pos1, __n1, __sv.data(), __sv.size()); } basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2=npos); template @@ -1069,15 +1069,15 @@ basic_string& replace(size_type __pos, size_type __n1, const value_type* __s, size_type __n2); basic_string& replace(size_type __pos, size_type __n1, const value_type* __s); basic_string& replace(size_type __pos, size_type __n1, size_type __n2, value_type __c); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& replace(const_iterator __i1, const_iterator __i2, const basic_string& __str); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& replace(const_iterator __i1, const_iterator __i2, __self_view __sv) { return replace(__i1 - begin(), __i2 - __i1, __sv); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& replace(const_iterator __i1, const_iterator __i2, const value_type* __s, size_type __n); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& replace(const_iterator __i1, const_iterator __i2, const value_type* __s); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& replace(const_iterator __i1, const_iterator __i2, size_type __n, value_type __c); template typename enable_if @@ -1087,16 +1087,16 @@ >::type replace(const_iterator __i1, const_iterator __i2, _InputIterator __j1, _InputIterator __j2); #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string& replace(const_iterator __i1, const_iterator __i2, initializer_list __il) {return replace(__i1, __i2, __il.begin(), __il.end());} #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS size_type copy(value_type* __s, size_type __n, size_type __pos = 0) const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string substr(size_type __pos = 0, size_type __n = npos) const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void swap(basic_string& __str) #if _LIBCPP_STD_VER >= 14 _NOEXCEPT; @@ -1105,83 +1105,83 @@ __is_nothrow_swappable::value); #endif - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const value_type* c_str() const _NOEXCEPT {return data();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const value_type* data() const _NOEXCEPT {return _VSTD::__to_raw_pointer(__get_pointer());} #if _LIBCPP_STD_VER > 14 - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY value_type* data() _NOEXCEPT {return _VSTD::__to_raw_pointer(__get_pointer());} #endif - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY allocator_type get_allocator() const _NOEXCEPT {return __alloc();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find(const basic_string& __str, size_type __pos = 0) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find(__self_view __sv, size_type __pos = 0) const _NOEXCEPT; size_type find(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find(const value_type* __s, size_type __pos = 0) const _NOEXCEPT; size_type find(value_type __c, size_type __pos = 0) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type rfind(const basic_string& __str, size_type __pos = npos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type rfind(__self_view __sv, size_type __pos = 0) const _NOEXCEPT; size_type rfind(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type rfind(const value_type* __s, size_type __pos = npos) const _NOEXCEPT; size_type rfind(value_type __c, size_type __pos = npos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_first_of(const basic_string& __str, size_type __pos = 0) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_first_of(__self_view __sv, size_type __pos = 0) const _NOEXCEPT; size_type find_first_of(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_first_of(const value_type* __s, size_type __pos = 0) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_first_of(value_type __c, size_type __pos = 0) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_last_of(const basic_string& __str, size_type __pos = npos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_last_of(__self_view __sv, size_type __pos = 0) const _NOEXCEPT; size_type find_last_of(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_last_of(const value_type* __s, size_type __pos = npos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_last_of(value_type __c, size_type __pos = npos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_first_not_of(const basic_string& __str, size_type __pos = 0) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_first_not_of(__self_view __sv, size_type __pos = 0) const _NOEXCEPT; size_type find_first_not_of(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_first_not_of(const value_type* __s, size_type __pos = 0) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_first_not_of(value_type __c, size_type __pos = 0) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_last_not_of(const basic_string& __str, size_type __pos = npos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_last_not_of(__self_view __sv, size_type __pos = 0) const _NOEXCEPT; size_type find_last_not_of(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_last_not_of(const value_type* __s, size_type __pos = npos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type find_last_not_of(value_type __c, size_type __pos = npos) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int compare(const basic_string& __str) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int compare(__self_view __sv) const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int compare(size_type __pos1, size_type __n1, __self_view __sv) const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int compare(size_type __pos1, size_type __n1, const basic_string& __str) const; int compare(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2=npos) const; template @@ -1196,9 +1196,9 @@ int compare(size_type __pos1, size_type __n1, const value_type* __s) const; int compare(size_type __pos1, size_type __n1, const value_type* __s, size_type __n2) const; - _LIBCPP_INLINE_VISIBILITY bool __invariants() const; + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool __invariants() const; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool __is_long() const _NOEXCEPT {return bool(__r_.first().__s.__size_ & __short_mask);} @@ -1212,10 +1212,10 @@ #endif // _LIBCPP_DEBUG_LEVEL >= 2 private: - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY allocator_type& __alloc() _NOEXCEPT {return __r_.second();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const allocator_type& __alloc() const _NOEXCEPT {return __r_.second();} @@ -1239,7 +1239,7 @@ #else // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __set_short_size(size_type __s) _NOEXCEPT # if _LIBCPP_BIG_ENDIAN {__r_.first().__s.__size_ = (unsigned char)(__s);} @@ -1247,7 +1247,7 @@ {__r_.first().__s.__size_ = (unsigned char)(__s << 1);} # endif - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type __get_short_size() const _NOEXCEPT # if _LIBCPP_BIG_ENDIAN {return __r_.first().__s.__size_;} @@ -1257,46 +1257,46 @@ #endif // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __set_long_size(size_type __s) _NOEXCEPT {__r_.first().__l.__size_ = __s;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type __get_long_size() const _NOEXCEPT {return __r_.first().__l.__size_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __set_size(size_type __s) _NOEXCEPT {if (__is_long()) __set_long_size(__s); else __set_short_size(__s);} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __set_long_cap(size_type __s) _NOEXCEPT {__r_.first().__l.__cap_ = __long_mask | __s;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type __get_long_cap() const _NOEXCEPT {return __r_.first().__l.__cap_ & size_type(~__long_mask);} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __set_long_pointer(pointer __p) _NOEXCEPT {__r_.first().__l.__data_ = __p;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY pointer __get_long_pointer() _NOEXCEPT {return __r_.first().__l.__data_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_pointer __get_long_pointer() const _NOEXCEPT {return __r_.first().__l.__data_;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY pointer __get_short_pointer() _NOEXCEPT {return pointer_traits::pointer_to(__r_.first().__s.__data_[0]);} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_pointer __get_short_pointer() const _NOEXCEPT {return pointer_traits::pointer_to(__r_.first().__s.__data_[0]);} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY pointer __get_pointer() _NOEXCEPT {return __is_long() ? __get_long_pointer() : __get_short_pointer();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY const_pointer __get_pointer() const _NOEXCEPT {return __is_long() ? __get_long_pointer() : __get_short_pointer();} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __zero() _NOEXCEPT { size_type (&__a)[__n_words] = __r_.first().__r.__words; @@ -1309,7 +1309,7 @@ size_type __align_it(size_type __s) _NOEXCEPT {return (__s + (__a-1)) & ~(__a-1);} enum {__alignment = 16}; - static _LIBCPP_INLINE_VISIBILITY + static _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY size_type __recommend(size_type __s) _NOEXCEPT {return (__s < __min_cap ? static_cast(__min_cap) : __align_it());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __copy_assign_alloc(const basic_string& __str, true_type) { if (__alloc() != __str.__alloc()) @@ -1365,15 +1365,15 @@ __alloc() = __str.__alloc(); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __copy_assign_alloc(const basic_string&, false_type) _NOEXCEPT {} #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __move_assign(basic_string& __str, false_type) _NOEXCEPT_(__alloc_traits::is_always_equal::value); - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __move_assign(basic_string& __str, true_type) #if _LIBCPP_STD_VER > 14 _NOEXCEPT; @@ -1382,7 +1382,7 @@ #endif #endif - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __move_assign_alloc(basic_string& __str) _NOEXCEPT_( @@ -1391,20 +1391,20 @@ {__move_assign_alloc(__str, integral_constant());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __move_assign_alloc(basic_string& __c, true_type) _NOEXCEPT_(is_nothrow_move_assignable::value) { __alloc() = _VSTD::move(__c.__alloc()); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __move_assign_alloc(basic_string&, false_type) _NOEXCEPT {} - _LIBCPP_INLINE_VISIBILITY void __invalidate_all_iterators(); - _LIBCPP_INLINE_VISIBILITY void __invalidate_iterators_past(size_type); + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __invalidate_all_iterators(); + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void __invalidate_iterators_past(size_type); friend basic_string operator+<>(const basic_string&, const basic_string&); friend basic_string operator+<>(const value_type*, const basic_string&); @@ -1414,7 +1414,7 @@ }; template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_string<_CharT, _Traits, _Allocator>::__invalidate_all_iterators() { @@ -1424,7 +1424,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_string<_CharT, _Traits, _Allocator>::__invalidate_iterators_past(size_type #if _LIBCPP_DEBUG_LEVEL >= 2 @@ -1454,7 +1454,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string() _NOEXCEPT_(is_nothrow_default_constructible::value) { @@ -1465,7 +1465,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a) #if _LIBCPP_STD_VER <= 14 _NOEXCEPT_(is_nothrow_copy_constructible::value) @@ -1530,7 +1530,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(const value_type* __s) { _LIBCPP_ASSERT(__s != nullptr, "basic_string(const char*) detected nullptr"); @@ -1541,7 +1541,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(const value_type* __s, const allocator_type& __a) : __r_(__a) { @@ -1553,7 +1553,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(const value_type* __s, size_type __n) { _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "basic_string(const char*, n) detected nullptr"); @@ -1564,7 +1564,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(const value_type* __s, size_type __n, const allocator_type& __a) : __r_(__a) { @@ -1604,7 +1604,7 @@ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(basic_string&& __str) #if _LIBCPP_STD_VER <= 14 _NOEXCEPT_(is_nothrow_move_constructible::value) @@ -1622,7 +1622,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(basic_string&& __str, const allocator_type& __a) : __r_(__a) { @@ -1667,7 +1667,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(size_type __n, value_type __c) { __init(__n, __c); @@ -1677,7 +1677,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(size_type __n, value_type __c, const allocator_type& __a) : __r_(__a) { @@ -1702,7 +1702,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(const basic_string& __str, size_type __pos, const allocator_type& __a) : __r_(__a) @@ -1717,7 +1717,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(__self_view __sv) { __init(__sv.data(), __sv.size()); @@ -1727,7 +1727,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(__self_view __sv, const allocator_type& __a) : __r_(__a) { @@ -1822,7 +1822,7 @@ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(initializer_list __il) { __init(__il.begin(), __il.end()); @@ -1832,7 +1832,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>::basic_string(initializer_list __il, const allocator_type& __a) : __r_(__a) { @@ -1994,7 +1994,7 @@ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_string<_CharT, _Traits, _Allocator>::__move_assign(basic_string& __str, false_type) _NOEXCEPT_(__alloc_traits::is_always_equal::value) @@ -2006,7 +2006,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_string<_CharT, _Traits, _Allocator>::__move_assign(basic_string& __str, true_type) #if _LIBCPP_STD_VER > 14 @@ -2023,7 +2023,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>& basic_string<_CharT, _Traits, _Allocator>::operator=(basic_string&& __str) _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)) @@ -2238,7 +2238,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>& basic_string<_CharT, _Traits, _Allocator>::append(const basic_string& __str) { @@ -2413,7 +2413,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>& basic_string<_CharT, _Traits, _Allocator>::insert(size_type __pos1, const basic_string& __str) { @@ -2483,7 +2483,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::iterator basic_string<_CharT, _Traits, _Allocator>::insert(const_iterator __pos, size_type __n, value_type __c) { @@ -2599,7 +2599,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>& basic_string<_CharT, _Traits, _Allocator>::replace(size_type __pos1, size_type __n1, const basic_string& __str) { @@ -2643,7 +2643,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>& basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const basic_string& __str) { @@ -2652,7 +2652,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>& basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const value_type* __s, size_type __n) { @@ -2660,7 +2660,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>& basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const value_type* __s) { @@ -2668,7 +2668,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator>& basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, size_type __n, value_type __c) { @@ -2700,7 +2700,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::iterator basic_string<_CharT, _Traits, _Allocator>::erase(const_iterator __pos) { @@ -2718,7 +2718,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::iterator basic_string<_CharT, _Traits, _Allocator>::erase(const_iterator __first, const_iterator __last) { @@ -2735,7 +2735,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_string<_CharT, _Traits, _Allocator>::pop_back() { @@ -2757,7 +2757,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_string<_CharT, _Traits, _Allocator>::clear() _NOEXCEPT { @@ -2775,7 +2775,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_string<_CharT, _Traits, _Allocator>::__erase_to_end(size_type __pos) { @@ -2804,7 +2804,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::max_size() const _NOEXCEPT { @@ -2880,7 +2880,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::const_reference basic_string<_CharT, _Traits, _Allocator>::operator[](size_type __pos) const _NOEXCEPT { @@ -2889,7 +2889,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::reference basic_string<_CharT, _Traits, _Allocator>::operator[](size_type __pos) _NOEXCEPT { @@ -2916,7 +2916,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::reference basic_string<_CharT, _Traits, _Allocator>::front() { @@ -2925,7 +2925,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::const_reference basic_string<_CharT, _Traits, _Allocator>::front() const { @@ -2934,7 +2934,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::reference basic_string<_CharT, _Traits, _Allocator>::back() { @@ -2943,7 +2943,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::const_reference basic_string<_CharT, _Traits, _Allocator>::back() const { @@ -2964,7 +2964,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY basic_string<_CharT, _Traits, _Allocator> basic_string<_CharT, _Traits, _Allocator>::substr(size_type __pos, size_type __n) const { @@ -2972,7 +2972,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY void basic_string<_CharT, _Traits, _Allocator>::swap(basic_string& __str) #if _LIBCPP_STD_VER >= 14 @@ -3016,7 +3016,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find(const basic_string& __str, size_type __pos) const _NOEXCEPT @@ -3026,7 +3026,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find(__self_view __sv, size_type __pos) const _NOEXCEPT @@ -3036,7 +3036,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find(const value_type* __s, size_type __pos) const _NOEXCEPT @@ -3069,7 +3069,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::rfind(const basic_string& __str, size_type __pos) const _NOEXCEPT @@ -3079,7 +3079,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::rfind(__self_view __sv, size_type __pos) const _NOEXCEPT @@ -3089,7 +3089,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::rfind(const value_type* __s, size_type __pos) const _NOEXCEPT @@ -3122,7 +3122,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_first_of(const basic_string& __str, size_type __pos) const _NOEXCEPT @@ -3132,7 +3132,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_first_of(__self_view __sv, size_type __pos) const _NOEXCEPT @@ -3142,7 +3142,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_first_of(const value_type* __s, size_type __pos) const _NOEXCEPT @@ -3153,7 +3153,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_first_of(value_type __c, size_type __pos) const _NOEXCEPT @@ -3175,7 +3175,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_last_of(const basic_string& __str, size_type __pos) const _NOEXCEPT @@ -3185,7 +3185,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_last_of(__self_view __sv, size_type __pos) const _NOEXCEPT @@ -3195,7 +3195,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_last_of(const value_type* __s, size_type __pos) const _NOEXCEPT @@ -3206,7 +3206,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_last_of(value_type __c, size_type __pos) const _NOEXCEPT @@ -3228,7 +3228,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(const basic_string& __str, size_type __pos) const _NOEXCEPT @@ -3238,7 +3238,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(__self_view __sv, size_type __pos) const _NOEXCEPT @@ -3248,7 +3248,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(const value_type* __s, size_type __pos) const _NOEXCEPT @@ -3259,7 +3259,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(value_type __c, size_type __pos) const _NOEXCEPT @@ -3282,7 +3282,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(const basic_string& __str, size_type __pos) const _NOEXCEPT @@ -3292,7 +3292,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(__self_view __sv, size_type __pos) const _NOEXCEPT @@ -3302,7 +3302,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(const value_type* __s, size_type __pos) const _NOEXCEPT @@ -3313,7 +3313,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY typename basic_string<_CharT, _Traits, _Allocator>::size_type basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(value_type __c, size_type __pos) const _NOEXCEPT @@ -3325,7 +3325,7 @@ // compare template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int basic_string<_CharT, _Traits, _Allocator>::compare(__self_view __sv) const _NOEXCEPT { @@ -3343,7 +3343,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int basic_string<_CharT, _Traits, _Allocator>::compare(const basic_string& __str) const _NOEXCEPT { @@ -3374,7 +3374,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1, size_type __n1, @@ -3384,7 +3384,7 @@ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY int basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1, size_type __n1, @@ -3442,7 +3442,7 @@ // __invariants template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY bool basic_string<_CharT, _Traits, _Allocator>::__invariants() const { Index: include/vector =================================================================== --- include/vector +++ include/vector @@ -289,7 +289,7 @@ class __vector_base_common { protected: - _LIBCPP_ALWAYS_INLINE __vector_base_common() {} + _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __vector_base_common() {} _LIBCPP_NORETURN void __throw_length_error() const; _LIBCPP_NORETURN void __throw_out_of_range() const; };