Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
libcxx/include/string
Show First 20 Lines • Show All 591 Lines • ▼ Show 20 Lines | |||||
basic_string<_CharT, _Traits, _Allocator> | basic_string<_CharT, _Traits, _Allocator> | ||||
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, const _CharT* __y); | operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, const _CharT* __y); | ||||
template<class _CharT, class _Traits, class _Allocator> | template<class _CharT, class _Traits, class _Allocator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
basic_string<_CharT, _Traits, _Allocator> | basic_string<_CharT, _Traits, _Allocator> | ||||
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, _CharT __y); | operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, _CharT __y); | ||||
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+<char, char_traits<char>, allocator<char> >(char const*, string const&)) | extern template _LIBCPP_FUNC_VIS string operator+<char, char_traits<char>, allocator<char> >(char const*, string const&); | ||||
template <class _Iter> | template <class _Iter> | ||||
struct __string_is_trivial_iterator : public false_type {}; | struct __string_is_trivial_iterator : public false_type {}; | ||||
template <class _Tp> | template <class _Tp> | ||||
struct __string_is_trivial_iterator<_Tp*> | struct __string_is_trivial_iterator<_Tp*> | ||||
: public is_arithmetic<_Tp> {}; | : public is_arithmetic<_Tp> {}; | ||||
▲ Show 20 Lines • Show All 1,180 Lines • ▼ Show 20 Lines | #endif | ||||
friend _LIBCPP_CONSTEXPR_AFTER_CXX17 basic_string operator+<>(const value_type*, const basic_string&); | friend _LIBCPP_CONSTEXPR_AFTER_CXX17 basic_string operator+<>(const value_type*, const basic_string&); | ||||
friend _LIBCPP_CONSTEXPR_AFTER_CXX17 basic_string operator+<>(value_type, const basic_string&); | friend _LIBCPP_CONSTEXPR_AFTER_CXX17 basic_string operator+<>(value_type, const basic_string&); | ||||
friend _LIBCPP_CONSTEXPR_AFTER_CXX17 basic_string operator+<>(const basic_string&, const value_type*); | friend _LIBCPP_CONSTEXPR_AFTER_CXX17 basic_string operator+<>(const basic_string&, const value_type*); | ||||
friend _LIBCPP_CONSTEXPR_AFTER_CXX17 basic_string operator+<>(const basic_string&, value_type); | friend _LIBCPP_CONSTEXPR_AFTER_CXX17 basic_string operator+<>(const basic_string&, value_type); | ||||
}; | }; | ||||
// These declarations must appear before any functions are implicitly used | // These declarations must appear before any functions are implicitly used | ||||
// so that they have the correct visibility specifier. | // so that they have the correct visibility specifier. | ||||
#define _LIBCPP_DECLARE(...) extern template __VA_ARGS__; | |||||
#ifdef _LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION | #ifdef _LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION | ||||
_LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, char) | _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_DECLARE, char) | ||||
# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS | # ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS | ||||
_LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t) | _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_DECLARE, wchar_t) | ||||
# endif | # endif | ||||
#else | #else | ||||
_LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, char) | _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_DECLARE, char) | ||||
# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS | # ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS | ||||
_LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t) | _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_DECLARE, wchar_t) | ||||
# endif | # endif | ||||
#endif | #endif | ||||
#undef _LIBCPP_DECLARE | |||||
#if _LIBCPP_STD_VER >= 17 | #if _LIBCPP_STD_VER >= 17 | ||||
template<class _InputIterator, | template<class _InputIterator, | ||||
class _CharT = __iter_value_type<_InputIterator>, | class _CharT = __iter_value_type<_InputIterator>, | ||||
class _Allocator = allocator<_CharT>, | class _Allocator = allocator<_CharT>, | ||||
class = enable_if_t<__is_cpp17_input_iterator<_InputIterator>::value>, | class = enable_if_t<__is_cpp17_input_iterator<_InputIterator>::value>, | ||||
class = enable_if_t<__is_allocator<_Allocator>::value> | class = enable_if_t<__is_allocator<_Allocator>::value> | ||||
▲ Show 20 Lines • Show All 2,876 Lines • Show Last 20 Lines |