#endif // C++2a
- // @} group atomics
+ /// @} group atomics
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
class basic_ios : public ios_base
{
public:
- //@{
+ ///@{
/**
* These are standard types. They permit a standardized way of
* referring to names of (or names dependent on) the template
typedef typename _Traits::pos_type pos_type;
typedef typename _Traits::off_type off_type;
typedef _Traits traits_type;
- //@}
+ ///@}
- //@{
+ ///@{
/**
* These are non-standard types.
*/
__num_put_type;
typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
__num_get_type;
- //@}
+ ///@}
// Data members:
protected:
const __num_get_type* _M_num_get;
public:
- //@{
+ ///@{
/**
* @brief The quick-and-easy status check.
*
bool
operator!() const
{ return this->fail(); }
- //@}
+ ///@}
/**
* @brief Returns the error state of the stream buffer.
splice_after(const_iterator __pos, forward_list&,
const_iterator __before, const_iterator __last) noexcept
{ _M_splice_after(__pos, __before, __last); }
- // @}
+ /// @}
private:
#if __cplusplus > 201703L
inline directory_iterator
end(directory_iterator) noexcept
{ return directory_iterator(); }
- // @}
+ /// @}
/// Iterator type for recursively traversing a directory hierarchy.
class recursive_directory_iterator
inline recursive_directory_iterator
end(recursive_directory_iterator) noexcept
{ return recursive_directory_iterator(); }
- // @}
+ /// @}
_GLIBCXX_END_NAMESPACE_CXX11
- // @} group filesystem
+ /// @} group filesystem
} // namespace filesystem
// Use explicit instantiations of these types. Any inconsistency in the
path weakly_canonical(const path& __p);
path weakly_canonical(const path& __p, error_code& __ec);
- // @} group filesystem
+ /// @} group filesystem
} // namespace filesystem
_GLIBCXX_END_NAMESPACE_VERSION
return _M_at_end == __rhs._M_at_end;
}
- // @} group filesystem
+ /// @} group filesystem
_GLIBCXX_END_NAMESPACE_CXX11
} // namespace filesystem
};
#endif
- // @} group hashes
+ /// @} group hashes
// Hint about performance of hash functor. If not fast the hash-based
// containers will cache the hash code.
return *this;
}
- // @} group numeric_arrays
+ /// @} group numeric_arrays
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#undef _DEFINE_VALARRAY_OPERATOR
- // @} group numeric_arrays
+ /// @} group numeric_arrays
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
__buckets_alloc_traits::deallocate(__alloc, __ptr, __bkt_count);
}
- //@} hashtable-detail
+ ///@} hashtable-detail
} // namespace __detail
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#undef _DEFINE_VALARRAY_OPERATOR
- // @} group numeric_arrays
+ /// @} group numeric_arrays
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
template<typename _Cache>
friend struct __use_cache;
- //@{
+ ///@{
/**
* @brief Category values.
*
static const category messages = 1L << 5;
static const category all = (ctype | numeric | collate |
time | monetary | messages);
- //@}
+ ///@}
// Construct/copy/destroy:
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef basic_string<_CharT> string_type;
- //@}
+ ///@}
protected:
// Underlying "C" library locale information saved from
class _GLIBCXX_NAMESPACE_CXX11 collate_byname : public collate<_CharT>
{
public:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef basic_string<_CharT> string_type;
- //@}
+ ///@}
explicit
collate_byname(const char* __s, size_t __refs = 0)
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef basic_string<_CharT> string_type;
- //@}
+ ///@}
typedef __numpunct_cache<_CharT> __cache_type;
protected:
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef _InIter iter_type;
- //@}
+ ///@}
/// Numpunct facet id.
static locale::id id;
ios_base::iostate& __err, bool& __v) const
{ return this->do_get(__in, __end, __io, __err, __v); }
- //@{
+ ///@{
/**
* @brief Numeric parsing.
*
ios_base::iostate& __err, unsigned long long& __v) const
{ return this->do_get(__in, __end, __io, __err, __v); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Numeric parsing.
*
get(iter_type __in, iter_type __end, ios_base& __io,
ios_base::iostate& __err, long double& __v) const
{ return this->do_get(__in, __end, __io, __err, __v); }
- //@}
+ ///@}
/**
* @brief Numeric parsing.
return __ret;
}
- //@{
+ ///@{
/**
* @brief Numeric parsing.
*
do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
long double&) const;
#endif
- //@}
+ ///@}
};
template<typename _CharT, typename _InIter>
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef _OutIter iter_type;
- //@}
+ ///@}
/// Numpunct facet id.
static locale::id id;
put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
{ return this->do_put(__s, __io, __fill, __v); }
- //@{
+ ///@{
/**
* @brief Numeric formatting.
*
unsigned long long __v) const
{ return this->do_put(__s, __io, __fill, __v); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Numeric formatting.
*
put(iter_type __s, ios_base& __io, char_type __fill,
long double __v) const
{ return this->do_put(__s, __io, __fill, __v); }
- //@}
+ ///@}
/**
* @brief Numeric formatting.
virtual
~num_put() { }
- //@{
+ ///@{
/**
* @brief Numeric formatting.
*
virtual iter_type
do_put(iter_type, ios_base&, char_type, long double) const;
#endif
- //@}
+ ///@}
};
template <typename _CharT, typename _OutIter>
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef _InIter iter_type;
- //@}
+ ///@}
/// Numpunct facet id.
static locale::id id;
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef _OutIter iter_type;
- //@}
+ ///@}
/// Numpunct facet id.
static locale::id id;
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef basic_string<_CharT> string_type;
- //@}
+ ///@}
typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
private:
frac_digits() const
{ return this->do_frac_digits(); }
- //@{
+ ///@{
/**
* @brief Return pattern for money values.
*
pattern
neg_format() const
{ return this->do_neg_format(); }
- //@}
+ ///@}
protected:
/// Destructor.
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef _InIter iter_type;
typedef basic_string<_CharT> string_type;
- //@}
+ ///@}
/// Numpunct facet id.
static locale::id id;
class money_put : public locale::facet
{
public:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef _OutIter iter_type;
typedef basic_string<_CharT> string_type;
- //@}
+ ///@}
/// Numpunct facet id.
static locale::id id;
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
typedef _CharT char_type;
typedef basic_string<_CharT> string_type;
- //@}
+ ///@}
protected:
// Underlying "C" library locale information saved from
#undef _DEFINE_VALARRAY_OPERATOR
- // @} group numeric_arrays
+ /// @} group numeric_arrays
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
cref(reference_wrapper<_Tp> __t) noexcept
{ return { __t.get() }; }
- // @}
+ /// @}
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
* @name Constants
* std [28.8.1](1)
*/
- //@{
+ ///@{
static constexpr flag_type icase = regex_constants::icase;
static constexpr flag_type nosubs = regex_constants::nosubs;
static constexpr flag_type optimize = regex_constants::optimize;
static constexpr flag_type awk = regex_constants::awk;
static constexpr flag_type grep = regex_constants::grep;
static constexpr flag_type egrep = regex_constants::egrep;
- //@}
+ ///@}
// [7.8.2] construct/copy/destroy
/**
int
compare(const value_type* __s) const
{ return this->_M_str().compare(__s); }
- // @}
+ /// @}
/// @cond undocumented
// Non-standard, used by comparison operators
const sub_match<_Bi_iter>& __m)
{ return __os << __m.str(); }
- // @} relates sub_match
+ /// @} relates sub_match
// [7.10] Class template match_results
/**
* @name 28.10 Public Types
*/
- //@{
+ ///@{
typedef sub_match<_Bi_iter> value_type;
typedef const value_type& const_reference;
typedef value_type& reference;
typedef _Alloc allocator_type;
typedef typename __iter_traits::value_type char_type;
typedef std::basic_string<char_type> string_type;
- //@}
+ ///@}
public:
/**
* @name 28.10.1 Construction, Copying, and Destruction
*/
- //@{
+ ///@{
/**
* @brief Constructs a default %match_results container.
*/
~match_results() = default;
- //@}
+ ///@}
// 28.10.2, state:
/**
/**
* @name 28.10.2 Size
*/
- //@{
+ ///@{
/**
* @brief Gets the number of matches and submatches.
empty() const noexcept
{ return size() == 0; }
- //@}
+ ///@}
/**
* @name 28.10.4 Element Access
*/
- //@{
+ ///@{
/**
* @brief Gets the length of the indicated submatch.
cend() const noexcept
{ return this->end(); }
- //@}
+ ///@}
/**
* @name 28.10.5 Formatting
* escape sequences accepted by these functions are determined by
* their @p flags parameter as documented above.
*/
- //@{
+ ///@{
/**
* @pre ready() == true
return __result;
}
- //@}
+ ///@}
/**
* @name 28.10.6 Allocator
*/
- //@{
+ ///@{
/**
* @brief Gets a copy of the allocator.
get_allocator() const noexcept
{ return _Base_type::get_allocator(); }
- //@}
+ ///@}
/**
* @name 28.10.7 Swap
*/
- //@{
+ ///@{
/**
* @brief Swaps the contents of two match_results.
_Base_type::swap(__that);
swap(_M_begin, __that._M_begin);
}
- //@}
+ ///@}
private:
template<typename, typename, typename>
/**
* @name Matching, Searching, and Replacing
*/
- //@{
+ ///@{
/**
* @brief Determines if there is a match between the regular expression @p e
return __result;
}
- //@}
+ ///@}
_GLIBCXX_BEGIN_NAMESPACE_CXX11
typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
#endif
- //@} // group regex
+ ///@} // group regex
_GLIBCXX_END_NAMESPACE_CXX11
_GLIBCXX_END_NAMESPACE_VERSION
_StateIdT _M_end;
};
- //@} regex-detail
+ ///@} regex-detail
} // namespace __detail
_GLIBCXX_END_NAMESPACE_VERSION
#endif
};
- //@} regex-detail
+ ///@} regex-detail
} // namespace __detail
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
/**
* @name 5.1 Regular Expression Syntax Options
*/
- //@{
+ ///@{
enum __syntax_option
{
_S_icase,
operator^=(syntax_option_type& __a, syntax_option_type __b)
{ return __a = __a ^ __b; }
- //@}
+ ///@}
/**
* @name 5.2 Matching Rules
* below for any bitmask elements set.
*
*/
- //@{
+ ///@{
enum __match_flag
{
operator^=(match_flag_type& __a, match_flag_type __b)
{ return __a = __a ^ __b; }
- //@}
+ ///@}
} // namespace regex_constants
/* @} */ // group regex
/**
* @name 5.3 Error Types
*/
- //@{
+ ///@{
enum error_type
{
*/
constexpr error_type error_stack(_S_error_stack);
- //@}
+ ///@}
} // namespace regex_constants
// [7.8] Class regex_error
friend void __throw_regex_error(regex_constants::error_type, const char*);
};
- //@} // group regex
+ ///@} // group regex
void
__throw_regex_error(regex_constants::error_type __ecode);
bool _M_has_sol;
};
- //@} regex-detail
+ ///@} regex-detail
} // namespace __detail
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
void (_Scanner::* _M_eat_escape)();
};
- //@} regex-detail
+ ///@} regex-detail
} // namespace __detail
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#endif // C++20
#endif // C++17
- // @}
+ /// @}
/**
* @brief A non-owning observer for a pointer owned by a shared_ptr
}
};
- // @} relates shared_ptr
- // @} group pointer_abstractions
+ /// @} relates shared_ptr
+ /// @} group pointer_abstractions
#if __cplusplus >= 201703L
namespace __detail::__variant
atomic_is_lock_free(const shared_ptr<_Tp>* __p)
{ return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); }
- // @}
+ /// @}
/**
* @brief Atomic load for shared_ptr objects.
inline __shared_ptr<_Tp, _Lp>
atomic_load(const __shared_ptr<_Tp, _Lp>* __p)
{ return std::atomic_load_explicit(__p, memory_order_seq_cst); }
- // @}
+ /// @}
/**
* @brief Atomic store for shared_ptr objects.
inline void
atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r)
{ std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); }
- // @}
+ /// @}
/**
* @brief Atomic exchange for shared_ptr objects.
return std::atomic_exchange_explicit(__p, std::move(__r),
memory_order_seq_cst);
}
- // @}
+ /// @}
/**
* @brief Atomic compare-and-swap for shared_ptr objects.
return std::atomic_compare_exchange_weak_explicit(__p, __v,
std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
}
- // @}
+ /// @}
- // @} relates shared_ptr
- // @} group pointer_abstractions
+ /// @} relates shared_ptr
+ /// @} group pointer_abstractions
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
bool
owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept
{ return _M_refcount._M_less(__rhs._M_refcount); }
- // @}
+ /// @}
protected:
// This constructor is non-standard, it is used by allocate_shared.
#undef _DEFINE_VALARRAY_OPERATOR
- // @} group numeric_arrays
+ /// @} group numeric_arrays
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
return __detail::__sph_neumann<__type>(__n, __x);
}
- // @} group mathsf
+ /// @} group mathsf
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
return std::__detail::__hyperg<__type>(__a, __b, __c, __x);
}
- // @}
+ /// @}
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __gnu_cxx
#endif // __STRICT_ANSI__
}
return nullptr;
}
- // @}
+ /// @}
private:
using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...);
mutex_type& _M_device;
};
- // @} group mutexes
+ /// @} group mutexes
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#endif // C++11
}
// called by the second initialize_dispatch above
- //@{
+ ///@{
/**
* @brief Fills the deque with whatever is in [first,last).
* @param __first An input iterator.
void
_M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
std::forward_iterator_tag);
- //@}
+ ///@}
/**
* @brief Fills the %deque with copies of value.
}
}
- //@{
+ ///@{
/// Helper functions for push_* and pop_*.
#if __cplusplus < 201103L
void _M_push_back_aux(const value_type&);
void _M_pop_back_aux();
void _M_pop_front_aux();
- //@}
+ ///@}
// Internal insert functions follow. The *_aux functions do the actual
// insertion work when all shortcuts fail.
_M_shrink_to_fit();
#endif
- //@{
+ ///@{
/// Memory-handling helpers for the previous internal insert functions.
iterator
_M_reserve_elements_at_front(size_type __n)
void
_M_new_elements_at_back(size_type __new_elements);
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Memory-handling helpers for the major %map.
*
void
_M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
- //@}
+ ///@}
#if __cplusplus >= 201103L
// Constant-time, nothrow move assignment when source object's memory
{ return __t.operator->(); }
};
- //@{
+ ///@{
/**
* @param __x A %reverse_iterator.
* @param __y A %reverse_iterator.
const reverse_iterator<_IteratorR>& __y)
{ return __y.base() <=> __x.base(); }
#endif // C++20
- //@}
+ ///@}
#if __cplusplus < 201103L
template<typename _Iterator>
{ return insert_iterator<_Container>(__x, __i); }
#endif
- // @} group iterators
+ /// @} group iterators
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
};
#endif // C++20
- // @} group iterators
+ /// @} group iterators
template<typename _Iterator>
auto
* @defgroup iterators Iterators
* Abstractions for uniform iterating through various underlying types.
*/
- //@{
+ ///@{
/**
* @defgroup iterator_tags Iterator Tags
* are. Different underlying algorithms can then be used based on the
* different operations supported by different iterator types.
*/
- //@{
+ ///@{
/// Marking input iterators.
struct input_iterator_tag { };
/// Contiguous iterators point to objects stored contiguously in memory.
struct contiguous_iterator_tag : public random_access_iterator_tag { };
#endif
- //@}
+ ///@}
/**
* @brief Common %iterator class.
__iterator_category(const _Iter&)
{ return typename iterator_traits<_Iter>::iterator_category(); }
- //@}
+ ///@}
#if __cplusplus >= 201103L
template<typename _Iter>
insert(_Pair&& __x)
{ return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); }
#endif
- // @}
+ /// @}
#if __cplusplus >= 201103L
/**
std::forward<_Pair>(__x));
}
#endif
- // @}
+ /// @}
/**
* @brief Template function that attempts to insert a range of elements.
iterator
erase(iterator __position)
{ return _M_t.erase(__position); }
- // @}
+ /// @}
#else
/**
* @brief Erases an element from a %map.
// [23.3.1.3] map operations
- //@{
+ ///@{
/**
* @brief Tries to locate an element in a %map.
* @param __x Key of (key, value) %pair to be located.
find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
{ return _M_t._M_find_tr(__x); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Tries to locate an element in a %map.
* @param __x Key of (key, value) %pair to be located.
find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
{ return _M_t._M_find_tr(__x); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the number of elements with given key.
* @param __x Key of (key, value) pairs to be located.
count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
{ return _M_t._M_count_tr(__x); }
#endif
- //@}
+ ///@}
#if __cplusplus > 201703L
- //@{
+ ///@{
/**
* @brief Finds whether an element with the given key exists.
* @param __x Key of (key, value) pairs to be located.
contains(const _Kt& __x) const
-> decltype(_M_t._M_find_tr(__x), void(), true)
{ return _M_t._M_find_tr(__x) != _M_t.end(); }
- //@}
+ ///@}
#endif
- //@{
+ ///@{
/**
* @brief Finds the beginning of a subsequence matching given key.
* @param __x Key of (key, value) pair to be located.
-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
{ return iterator(_M_t._M_lower_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the beginning of a subsequence matching given key.
* @param __x Key of (key, value) pair to be located.
-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the end of a subsequence matching given key.
* @param __x Key of (key, value) pair to be located.
-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
{ return iterator(_M_t._M_upper_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the end of a subsequence matching given key.
* @param __x Key of (key, value) pair to be located.
-> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key of (key, value) pairs to be located.
-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key of (key, value) pairs to be located.
_M_t._M_equal_range_tr(__x));
}
#endif
- //@}
+ ///@}
template<typename _K1, typename _T1, typename _C1, typename _A1>
friend bool
insert(_Pair&& __x)
{ return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); }
#endif
- // @}
+ /// @}
/**
* @brief Inserts a std::pair into the %multimap.
std::forward<_Pair>(__x));
}
#endif
- // @}
+ /// @}
/**
* @brief A template function that attempts to insert a range
iterator
erase(iterator __position)
{ return _M_t.erase(__position); }
- // @}
+ /// @}
#else
/**
* @brief Erases an element from a %multimap.
// multimap operations
- //@{
+ ///@{
/**
* @brief Tries to locate an element in a %multimap.
* @param __x Key of (key, value) pair to be located.
find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
{ return _M_t._M_find_tr(__x); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Tries to locate an element in a %multimap.
* @param __x Key of (key, value) pair to be located.
find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
{ return _M_t._M_find_tr(__x); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the number of elements with given key.
* @param __x Key of (key, value) pairs to be located.
count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
{ return _M_t._M_count_tr(__x); }
#endif
- //@}
+ ///@}
#if __cplusplus > 201703L
- //@{
+ ///@{
/**
* @brief Finds whether an element with the given key exists.
* @param __x Key of (key, value) pairs to be located.
contains(const _Kt& __x) const
-> decltype(_M_t._M_find_tr(__x), void(), true)
{ return _M_t._M_find_tr(__x) != _M_t.end(); }
- //@}
+ ///@}
#endif
- //@{
+ ///@{
/**
* @brief Finds the beginning of a subsequence matching given key.
* @param __x Key of (key, value) pair to be located.
-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
{ return iterator(_M_t._M_lower_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the beginning of a subsequence matching given key.
* @param __x Key of (key, value) pair to be located.
-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the end of a subsequence matching given key.
* @param __x Key of (key, value) pair to be located.
-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
{ return iterator(_M_t._M_upper_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the end of a subsequence matching given key.
* @param __x Key of (key, value) pair to be located.
-> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key of (key, value) pairs to be located.
-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key of (key, value) pairs to be located.
_M_t._M_equal_range_tr(__x));
}
#endif
- //@}
+ ///@}
template<typename _K1, typename _T1, typename _C1, typename _A1>
friend bool
// multiset operations:
- //@{
+ ///@{
/**
* @brief Finds the number of elements with given key.
* @param __x Key of elements to be located.
count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
{ return _M_t._M_count_tr(__x); }
#endif
- //@}
+ ///@}
#if __cplusplus > 201703L
- //@{
+ ///@{
/**
* @brief Finds whether an element with the given key exists.
* @param __x Key of elements to be located.
contains(const _Kt& __x) const
-> decltype(_M_t._M_find_tr(__x), void(), true)
{ return _M_t._M_find_tr(__x) != _M_t.end(); }
- //@}
+ ///@}
#endif
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 214. set::find() missing const overload
- //@{
+ ///@{
/**
* @brief Tries to locate an element in a %set.
* @param __x Element to be located.
-> decltype(const_iterator{_M_t._M_find_tr(__x)})
{ return const_iterator{_M_t._M_find_tr(__x)}; }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the beginning of a subsequence matching given key.
* @param __x Key to be located.
-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
{ return iterator(_M_t._M_lower_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the end of a subsequence matching given key.
* @param __x Key to be located.
-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
{ return iterator(_M_t._M_upper_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key to be located.
-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
#endif
- //@}
+ ///@}
template<typename _K1, typename _C1, typename _A1>
friend bool
return ++__result;
}
- // @} group numeric_ops
+ /// @} group numeric_ops
#undef _GLIBCXX_MOVE_IF_20
#endif
#endif // __cplusplus >= 201103L
- // @} relates pair
+ /// @} relates pair
/**
* @brief A convenience wrapper for creating a pair from two objects.
public:
// typedefs:
- //@{
+ ///@{
/// Public typedefs.
typedef _Key key_type;
typedef _Key value_type;
typedef _Compare key_compare;
typedef _Compare value_compare;
typedef _Alloc allocator_type;
- //@}
+ ///@}
private:
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits;
public:
- //@{
+ ///@{
/// Iterator-related typedefs.
typedef typename _Alloc_traits::pointer pointer;
typedef typename _Alloc_traits::const_pointer const_pointer;
typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
typedef typename _Rep_type::size_type size_type;
typedef typename _Rep_type::difference_type difference_type;
- //@}
+ ///@}
#if __cplusplus > 201402L
using node_type = typename _Rep_type::node_type;
// set operations:
- //@{
+ ///@{
/**
* @brief Finds the number of elements.
* @param __x Element to located.
-> decltype(_M_t._M_count_tr(__x))
{ return _M_t._M_count_tr(__x); }
#endif
- //@}
+ ///@}
#if __cplusplus > 201703L
- //@{
+ ///@{
/**
* @brief Finds whether an element with the given key exists.
* @param __x Key of elements to be located.
contains(const _Kt& __x) const
-> decltype(_M_t._M_find_tr(__x), void(), true)
{ return _M_t._M_find_tr(__x) != _M_t.end(); }
- //@}
+ ///@}
#endif
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 214. set::find() missing const overload
- //@{
+ ///@{
/**
* @brief Tries to locate an element in a %set.
* @param __x Element to be located.
-> decltype(const_iterator{_M_t._M_find_tr(__x)})
{ return const_iterator{_M_t._M_find_tr(__x)}; }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the beginning of a subsequence matching given key.
* @param __x Key to be located.
-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the end of a subsequence matching given key.
* @param __x Key to be located.
-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key to be located.
-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
#endif
- //@}
+ ///@}
template<typename _K1, typename _C1, typename _A1>
friend bool
/// @endcond
#endif
- // @} group memory
+ /// @} group memory
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
: public iterator<output_iterator_tag, void, void, void, void>
{
public:
- //@{
+ ///@{
/// Public typedef
#if __cplusplus > 201703L
using difference_type = ptrdiff_t;
typedef _CharT char_type;
typedef _Traits traits_type;
typedef basic_ostream<_CharT, _Traits> ostream_type;
- //@}
+ ///@}
private:
ostream_type* _M_stream;
{ return *this; }
};
- // @} group iterators
+ /// @} group iterators
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
#if __cplusplus < 201103L
typedef _CharT& reference; // Changed to _CharT by LWG 445
typedef typename _Traits::int_type int_type;
typedef basic_streambuf<_CharT, _Traits> streambuf_type;
typedef basic_istream<_CharT, _Traits> istream_type;
- //@}
+ ///@}
template<typename _CharT2>
friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
{
public:
// Types:
- //@{
+ ///@{
/// Public typedefs
#if __cplusplus > 201703L
using difference_type = ptrdiff_t;
typedef _Traits traits_type;
typedef basic_streambuf<_CharT, _Traits> streambuf_type;
typedef basic_ostream<_CharT, _Traits> ostream_type;
- //@}
+ ///@}
template<typename _CharT2>
friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
return compare_three_way()(__x.get(), static_cast<pointer>(nullptr));
}
#endif
- // @} relates unique_ptr
+ /// @} relates unique_ptr
/// @cond undocumented
template<typename _Up, typename _Ptr = typename _Up::pointer,
make_unique_for_overwrite(_Args&&...) = delete;
#endif // C++20
- // @} relates unique_ptr
+ /// @} relates unique_ptr
#endif // C++14
#if __cplusplus > 201703L && __cpp_concepts
}
#endif // C++20
- // @} group pointer_abstractions
+ /// @} group pointer_abstractions
#if __cplusplus >= 201703L
namespace __detail::__variant
public:
// typedefs:
- //@{
+ ///@{
/// Public typedefs.
typedef typename _Hashtable::key_type key_type;
typedef typename _Hashtable::value_type value_type;
typedef typename _Hashtable::hasher hasher;
typedef typename _Hashtable::key_equal key_equal;
typedef typename _Hashtable::allocator_type allocator_type;
- //@}
+ ///@}
- //@{
+ ///@{
/// Iterator-related typedefs.
typedef typename _Hashtable::pointer pointer;
typedef typename _Hashtable::const_pointer const_pointer;
typedef typename _Hashtable::const_local_iterator const_local_iterator;
typedef typename _Hashtable::size_type size_type;
typedef typename _Hashtable::difference_type difference_type;
- //@}
+ ///@}
#if __cplusplus > 201402L
using node_type = typename _Hashtable::node_type;
begin() noexcept
{ return _M_h.begin(); }
- //@{
+ ///@{
/**
* Returns a read-only (constant) iterator that points to the first
* element in the %unordered_map.
const_iterator
cbegin() const noexcept
{ return _M_h.begin(); }
- //@}
+ ///@}
/**
* Returns a read/write iterator that points one past the last element in
end() noexcept
{ return _M_h.end(); }
- //@{
+ ///@{
/**
* Returns a read-only (constant) iterator that points one past the last
* element in the %unordered_map.
const_iterator
cend() const noexcept
{ return _M_h.end(); }
- //@}
+ ///@}
// modifiers.
}
#endif // C++17
- //@{
+ ///@{
/**
* @brief Attempts to insert a std::pair into the %unordered_map.
pair<iterator, bool>>
insert(_Pair&& __x)
{ return _M_h.emplace(std::forward<_Pair>(__x)); }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Attempts to insert a std::pair into the %unordered_map.
* @param __hint An iterator that serves as a hint as to where the
__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
insert(const_iterator __hint, _Pair&& __x)
{ return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
- //@}
+ ///@}
/**
* @brief A template function that attempts to insert a range of
}
#endif
- //@{
+ ///@{
/**
* @brief Erases an element from an %unordered_map.
* @param __position An iterator pointing to the element to be erased.
iterator
erase(iterator __position)
{ return _M_h.erase(__position); }
- //@}
+ ///@}
/**
* @brief Erases elements according to the provided key.
// lookup.
- //@{
+ ///@{
/**
* @brief Tries to locate an element in an %unordered_map.
* @param __x Key to be located.
find(const _Kt& __x) const -> decltype(_M_h._M_find_tr(__x))
{ return _M_h._M_find_tr(__x); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the number of elements.
* @param __x Key to count.
count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
{ return _M_h._M_count_tr(__x); }
#endif
- //@}
+ ///@}
#if __cplusplus > 201703L
- //@{
+ ///@{
/**
* @brief Finds whether an element with the given key exists.
* @param __x Key of elements to be located.
contains(const _Kt& __x) const
-> decltype(_M_h._M_find_tr(__x), void(), true)
{ return _M_h._M_find_tr(__x) != _M_h.end(); }
- //@}
+ ///@}
#endif
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key to be located.
-> decltype(_M_h._M_equal_range_tr(__x))
{ return _M_h._M_equal_range_tr(__x); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Subscript ( @c [] ) access to %unordered_map data.
* @param __k The key for which data should be retrieved.
mapped_type&
operator[](key_type&& __k)
{ return _M_h[std::move(__k)]; }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Access to %unordered_map data.
* @param __k The key for which data should be retrieved.
const mapped_type&
at(const key_type& __k) const
{ return _M_h.at(__k); }
- //@}
+ ///@}
// bucket interface.
begin(size_type __n)
{ return _M_h.begin(__n); }
- //@{
+ ///@{
/**
* @brief Returns a read-only (constant) iterator pointing to the first
* bucket element.
const_local_iterator
cbegin(size_type __n) const
{ return _M_h.cbegin(__n); }
- //@}
+ ///@}
/**
* @brief Returns a read/write iterator pointing to one past the last
end(size_type __n)
{ return _M_h.end(__n); }
- //@{
+ ///@{
/**
* @brief Returns a read-only (constant) iterator pointing to one past
* the last bucket elements.
const_local_iterator
cend(size_type __n) const
{ return _M_h.cend(__n); }
- //@}
+ ///@}
// hash policy.
public:
// typedefs:
- //@{
+ ///@{
/// Public typedefs.
typedef typename _Hashtable::key_type key_type;
typedef typename _Hashtable::value_type value_type;
typedef typename _Hashtable::hasher hasher;
typedef typename _Hashtable::key_equal key_equal;
typedef typename _Hashtable::allocator_type allocator_type;
- //@}
+ ///@}
- //@{
+ ///@{
/// Iterator-related typedefs.
typedef typename _Hashtable::pointer pointer;
typedef typename _Hashtable::const_pointer const_pointer;
typedef typename _Hashtable::const_local_iterator const_local_iterator;
typedef typename _Hashtable::size_type size_type;
typedef typename _Hashtable::difference_type difference_type;
- //@}
+ ///@}
#if __cplusplus > 201402L
using node_type = typename _Hashtable::node_type;
begin() noexcept
{ return _M_h.begin(); }
- //@{
+ ///@{
/**
* Returns a read-only (constant) iterator that points to the first
* element in the %unordered_multimap.
const_iterator
cbegin() const noexcept
{ return _M_h.begin(); }
- //@}
+ ///@}
/**
* Returns a read/write iterator that points one past the last element in
end() noexcept
{ return _M_h.end(); }
- //@{
+ ///@{
/**
* Returns a read-only (constant) iterator that points one past the last
* element in the %unordered_multimap.
const_iterator
cend() const noexcept
{ return _M_h.end(); }
- //@}
+ ///@}
// modifiers.
emplace_hint(const_iterator __pos, _Args&&... __args)
{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
- //@{
+ ///@{
/**
* @brief Inserts a std::pair into the %unordered_multimap.
* @param __x Pair to be inserted (see std::make_pair for easy
__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
insert(_Pair&& __x)
{ return _M_h.emplace(std::forward<_Pair>(__x)); }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Inserts a std::pair into the %unordered_multimap.
* @param __hint An iterator that serves as a hint as to where the
__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
insert(const_iterator __hint, _Pair&& __x)
{ return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
- //@}
+ ///@}
/**
* @brief A template function that attempts to insert a range of
{ return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); }
#endif // C++17
- //@{
+ ///@{
/**
* @brief Erases an element from an %unordered_multimap.
* @param __position An iterator pointing to the element to be erased.
iterator
erase(iterator __position)
{ return _M_h.erase(__position); }
- //@}
+ ///@}
/**
* @brief Erases elements according to the provided key.
// lookup.
- //@{
+ ///@{
/**
* @brief Tries to locate an element in an %unordered_multimap.
* @param __x Key to be located.
find(const _Kt& __x) const -> decltype(_M_h._M_find_tr(__x))
{ return _M_h._M_find_tr(__x); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the number of elements.
* @param __x Key to count.
count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
{ return _M_h._M_count_tr(__x); }
#endif
- //@}
+ ///@}
#if __cplusplus > 201703L
- //@{
+ ///@{
/**
* @brief Finds whether an element with the given key exists.
* @param __x Key of elements to be located.
contains(const _Kt& __x) const
-> decltype(_M_h._M_find_tr(__x), void(), true)
{ return _M_h._M_find_tr(__x) != _M_h.end(); }
- //@}
+ ///@}
#endif
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key to be located.
-> decltype(_M_h._M_equal_range_tr(__x))
{ return _M_h._M_equal_range_tr(__x); }
#endif
- //@}
+ ///@}
// bucket interface.
begin(size_type __n)
{ return _M_h.begin(__n); }
- //@{
+ ///@{
/**
* @brief Returns a read-only (constant) iterator pointing to the first
* bucket element.
const_local_iterator
cbegin(size_type __n) const
{ return _M_h.cbegin(__n); }
- //@}
+ ///@}
/**
* @brief Returns a read/write iterator pointing to one past the last
end(size_type __n)
{ return _M_h.end(__n); }
- //@{
+ ///@{
/**
* @brief Returns a read-only (constant) iterator pointing to one past
* the last bucket elements.
const_local_iterator
cend(size_type __n) const
{ return _M_h.cend(__n); }
- //@}
+ ///@}
// hash policy.
public:
// typedefs:
- //@{
+ ///@{
/// Public typedefs.
typedef typename _Hashtable::key_type key_type;
typedef typename _Hashtable::value_type value_type;
typedef typename _Hashtable::hasher hasher;
typedef typename _Hashtable::key_equal key_equal;
typedef typename _Hashtable::allocator_type allocator_type;
- //@}
+ ///@}
- //@{
+ ///@{
/// Iterator-related typedefs.
typedef typename _Hashtable::pointer pointer;
typedef typename _Hashtable::const_pointer const_pointer;
typedef typename _Hashtable::const_local_iterator const_local_iterator;
typedef typename _Hashtable::size_type size_type;
typedef typename _Hashtable::difference_type difference_type;
- //@}
+ ///@}
#if __cplusplus > 201402L
using node_type = typename _Hashtable::node_type;
// iterators.
- //@{
+ ///@{
/**
* Returns a read-only (constant) iterator that points to the first
* element in the %unordered_set.
const_iterator
begin() const noexcept
{ return _M_h.begin(); }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* Returns a read-only (constant) iterator that points one past the last
* element in the %unordered_set.
const_iterator
end() const noexcept
{ return _M_h.end(); }
- //@}
+ ///@}
/**
* Returns a read-only (constant) iterator that points to the first
emplace_hint(const_iterator __pos, _Args&&... __args)
{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
- //@{
+ ///@{
/**
* @brief Attempts to insert an element into the %unordered_set.
* @param __x Element to be inserted.
std::pair<iterator, bool>
insert(value_type&& __x)
{ return _M_h.insert(std::move(__x)); }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Attempts to insert an element into the %unordered_set.
* @param __hint An iterator that serves as a hint as to where the
iterator
insert(const_iterator __hint, value_type&& __x)
{ return _M_h.insert(__hint, std::move(__x)); }
- //@}
+ ///@}
/**
* @brief A template function that attempts to insert a range of
{ return _M_h._M_reinsert_node(std::move(__nh)).position; }
#endif // C++17
- //@{
+ ///@{
/**
* @brief Erases an element from an %unordered_set.
* @param __position An iterator pointing to the element to be erased.
iterator
erase(iterator __position)
{ return _M_h.erase(__position); }
- //@}
+ ///@}
/**
* @brief Erases elements according to the provided key.
// lookup.
- //@{
+ ///@{
/**
* @brief Tries to locate an element in an %unordered_set.
* @param __x Element to be located.
-> decltype(_M_h._M_find_tr(__k))
{ return _M_h._M_find_tr(__k); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the number of elements.
* @param __x Element to located.
-> decltype(_M_h._M_count_tr(__k))
{ return _M_h._M_count_tr(__k); }
#endif
- //@}
+ ///@}
#if __cplusplus > 201703L
- //@{
+ ///@{
/**
* @brief Finds whether an element with the given key exists.
* @param __x Key of elements to be located.
contains(const _Kt& __k) const
-> decltype(_M_h._M_find_tr(__k), void(), true)
{ return _M_h._M_find_tr(__k) != _M_h.end(); }
- //@}
+ ///@}
#endif
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key to be located.
-> decltype(_M_h._M_equal_range_tr(__k))
{ return _M_h._M_equal_range_tr(__k); }
#endif
- //@}
+ ///@}
// bucket interface.
bucket(const key_type& __key) const
{ return _M_h.bucket(__key); }
- //@{
+ ///@{
/**
* @brief Returns a read-only (constant) iterator pointing to the first
* bucket element.
const_local_iterator
cbegin(size_type __n) const
{ return _M_h.cbegin(__n); }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Returns a read-only (constant) iterator pointing to one past
* the last bucket elements.
const_local_iterator
cend(size_type __n) const
{ return _M_h.cend(__n); }
- //@}
+ ///@}
// hash policy.
public:
// typedefs:
- //@{
+ ///@{
/// Public typedefs.
typedef typename _Hashtable::key_type key_type;
typedef typename _Hashtable::value_type value_type;
typedef typename _Hashtable::hasher hasher;
typedef typename _Hashtable::key_equal key_equal;
typedef typename _Hashtable::allocator_type allocator_type;
- //@}
+ ///@}
- //@{
+ ///@{
/// Iterator-related typedefs.
typedef typename _Hashtable::pointer pointer;
typedef typename _Hashtable::const_pointer const_pointer;
typedef typename _Hashtable::const_local_iterator const_local_iterator;
typedef typename _Hashtable::size_type size_type;
typedef typename _Hashtable::difference_type difference_type;
- //@}
+ ///@}
#if __cplusplus > 201402L
using node_type = typename _Hashtable::node_type;
// iterators.
- //@{
+ ///@{
/**
* Returns a read-only (constant) iterator that points to the first
* element in the %unordered_multiset.
const_iterator
begin() const noexcept
{ return _M_h.begin(); }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* Returns a read-only (constant) iterator that points one past the last
* element in the %unordered_multiset.
const_iterator
end() const noexcept
{ return _M_h.end(); }
- //@}
+ ///@}
/**
* Returns a read-only (constant) iterator that points to the first
emplace_hint(const_iterator __pos, _Args&&... __args)
{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
- //@{
+ ///@{
/**
* @brief Inserts an element into the %unordered_multiset.
* @param __x Element to be inserted.
iterator
insert(value_type&& __x)
{ return _M_h.insert(std::move(__x)); }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Inserts an element into the %unordered_multiset.
* @param __hint An iterator that serves as a hint as to where the
iterator
insert(const_iterator __hint, value_type&& __x)
{ return _M_h.insert(__hint, std::move(__x)); }
- //@}
+ ///@}
/**
* @brief A template function that inserts a range of elements.
{ return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); }
#endif // C++17
- //@{
+ ///@{
/**
* @brief Erases an element from an %unordered_multiset.
* @param __position An iterator pointing to the element to be erased.
iterator
erase(iterator __position)
{ return _M_h.erase(__position); }
- //@}
+ ///@}
/**
// lookup.
- //@{
+ ///@{
/**
* @brief Tries to locate an element in an %unordered_multiset.
* @param __x Element to be located.
-> decltype(_M_h._M_find_tr(__x))
{ return _M_h._M_find_tr(__x); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Finds the number of elements.
* @param __x Element to located.
count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
{ return _M_h._M_count_tr(__x); }
#endif
- //@}
+ ///@}
#if __cplusplus > 201703L
- //@{
+ ///@{
/**
* @brief Finds whether an element with the given key exists.
* @param __x Key of elements to be located.
contains(const _Kt& __x) const
-> decltype(_M_h._M_find_tr(__x), void(), true)
{ return _M_h._M_find_tr(__x) != _M_h.end(); }
- //@}
+ ///@}
#endif
- //@{
+ ///@{
/**
* @brief Finds a subsequence matching given key.
* @param __x Key to be located.
-> decltype(_M_h._M_equal_range_tr(__x))
{ return _M_h._M_equal_range_tr(__x); }
#endif
- //@}
+ ///@}
// bucket interface.
bucket(const key_type& __key) const
{ return _M_h.bucket(__key); }
- //@{
+ ///@{
/**
* @brief Returns a read-only (constant) iterator pointing to the first
* bucket element.
const_local_iterator
cbegin(size_type __n) const
{ return _M_h.cbegin(__n); }
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Returns a read-only (constant) iterator pointing to one past
* the last bucket elements.
const_local_iterator
cend(size_type __n) const
{ return _M_h.cend(__n); }
- //@}
+ ///@}
// hash policy.
#define _GLIBCXX_USE_DECIMAL_ 1
} // namespace decimal
- // @} group decimal
+ /// @} group decimal
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
return std::move(*__p);
__throw_bad_any_cast();
}
- // @}
+ /// @}
/// @cond undocumented
template<typename _Tp>
return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
return nullptr;
}
- // @}
+ /// @}
template<typename _Tp>
void
_S_manage(_Op, const any*, _Arg*) { }
};
- // @} group any
+ /// @} group any
} // namespace fundamentals_v1
} // namespace experimental
return experimental::__to_array(__a, make_index_sequence<_Nm>{});
}
- // @} group make_array
+ /// @} group make_array
} // namespace fundamentals_v2
} // namespace experimental
_GLIBCXX_END_NAMESPACE_CXX11
- // @} group filesystem-ts
+ /// @} group filesystem-ts
} // namespace v1
} // namespace filesystem
} // namespace experimental
bool is_regular_file(file_status) noexcept;
bool is_symlink(file_status) noexcept;
- // @} group filesystem-ts
+ /// @} group filesystem-ts
} // namespace v1
} // namespace filesystem
} // namespace experimental
path temp_directory_path();
path temp_directory_path(error_code& __ec);
- // @} group filesystem-ts
+ /// @} group filesystem-ts
} // namespace v1
} // namespace filesystem
} // namespace experimental
return _M_at_end == __rhs._M_at_end;
}
- // @} group filesystem-ts
+ /// @} group filesystem-ts
_GLIBCXX_END_NAMESPACE_CXX11
} // namespace v1
} // namespace filesystem
buffer_sequence_end(const _Cont& __c) -> decltype(__c.end())
{ return __c.end(); }
- // @}
+ /// @}
/** @brief buffer type traits
template<typename _Tp>
constexpr bool is_dynamic_buffer_v = is_dynamic_buffer<_Tp>::value;
- // @}
+ /// @}
/// buffer size
template<typename _ConstBufferSequence>
return net::read(__stream, __b, __completion_condition, __ec);
}
- // @}
+ /// @}
/** @brief asynchronous read operations
* @{
std::forward<_CompletionToken>(__token));
}
- // @}
+ /// @}
#if 0
/** @brief synchronous write operations:
size_t write(_SyncWriteStream& __stream, _DynamicBuffer&& __b,
_CompletionCondition __completion_condition, error_code& __ec);
- // @}
+ /// @}
/** @brief asynchronous write operations
* @{
_CompletionCondition __completion_condition,
_CompletionToken&& __token);
- // @}
+ /// @}
/** @brief synchronous delimited read operations
* @{
size_t read_until(_SyncReadStream& __s, _DynamicBuffer&& __b,
string_view __delim, error_code& __ec);
- // @}
+ /// @}
/** @brief asynchronous delimited read operations
* @{
_DynamicBuffer&& __b, string_view __delim,
_CompletionToken&& __token);
- // @}
+ /// @}
#endif
/// @}
struct v4_mapped_t {};
constexpr v4_mapped_t v4_mapped;
- // @}
+ /// @}
/// An IPv4 address.
class address_v4
operator>=(const address_v4& __a, const address_v4& __b) noexcept
{ return !(__a < __b); }
- // @}
+ /// @}
/** ip::address_v6 comparisons
* @{
operator>=(const address_v6& __a, const address_v6& __b) noexcept
{ return !(__a < __b); }
- // @}
+ /// @}
/** ip::address comparisons
* @{
operator>=(const address& __a, const address& __b) noexcept
{ return !(__a < __b); }
- // @}
+ /// @}
/** ip::address_v4 creation
* @{
make_address_v4(string_view __str)
{ return make_address_v4(__str, __throw_on_error{"make_address_v4"}); }
- // @}
+ /// @}
/** ip::address_v6 creation
* @{
make_address_v6(string_view __str)
{ return make_address_v6(__str, __throw_on_error{"make_address_v6"}); }
- // @}
+ /// @}
/** ip::address creation
* @{
make_address(string_view __str)
{ return make_address(__str, __throw_on_error{"make_address"}); }
- // @}
+ /// @}
/// ip::address I/O
template<typename _CharT, typename _Traits>
using address_v4_range = basic_address_range<address_v4>;
- // @}
+ /// @}
/** An IPv6 address range.
* @{
using address_v6_range = basic_address_range<address_v6>;
- // @}
+ /// @}
bool
operator==(const network_v4& __a, const network_v4& __b) noexcept;
operator!=(const network_v4& __a, const network_v4& __b) noexcept
{ return !(__a == __b); }
- // @}
+ /// @}
/** ip::network_v6 comparisons
* @{
operator!=(const network_v6& __a, const network_v6& __b) noexcept
{ return !(__a == __b); }
- // @}
+ /// @}
/** ip::network_v4 creation
* @{
make_network_v4(string_view __str)
{ return make_network_v4(__str, __throw_on_error{"make_network_v4"}); }
- // @}
+ /// @}
/** ip::network_v6 creation
* @{
make_network_v6(string_view __str)
{ return make_network_v6(__str, __throw_on_error{"make_network_v6"}); }
- // @}
+ /// @}
/// ip::network_v4 I/O
template<typename _CharT, typename _Traits>
const basic_endpoint<_InternetProtocol>& __b)
{ return !(__a < __b); }
- // @}
+ /// @}
/// basic_endpoint I/O
template<typename _CharT, typename _Traits, typename _InternetProtocol>
const basic_resolver_entry<_InternetProtocol>& __b)
{ return !(__a == __b); }
- // @}
+ /// @}
/** Base class defining flags for name/address resolution.
* @{
// TODO define resolver_base::flags static constants for C++14 mode
- // @}
+ /// @}
/** Container for results of name/address resolution.
* @{
const basic_resolver_results<_InternetProtocol>& __b)
{ return !(__a == __b); }
- // @}
+ /// @}
/// Perform name/address resolution.
template<typename _InternetProtocol>
host_name()
{ return host_name(std::allocator<char>{}, __throw_on_error{"host_name"}); }
- // @}
+ /// @}
/// The TCP byte-stream protocol.
class tcp
operator!=(const tcp& __a, const tcp& __b)
{ return !(__a == __b); }
- // @}
+ /// @}
/// The UDP datagram protocol.
class udp
operator!=(const udp& __a, const udp& __b)
{ return !(__a == __b); }
- // @}
+ /// @}
/// Restrict a socket created for an IPv6 protocol to IPv6 only.
struct v6_only : __sockopt_crtp<v6_only, bool>
} // namespace multicast
- // @}
+ /// @}
} // namespace ip
} // namespace v1
make_optional(_Tp&& __t)
{ return optional<decay_t<_Tp>> { std::forward<_Tp>(__t) }; }
- // @} relates experimental::optional
- // @} group optional
+ /// @} relates experimental::optional
+ /// @} group optional
} // namespace fundamentals_v1
} // namespace experimental
return __pt._M_t;
}
- // @} group propagate_const
+ /// @} group propagate_const
} // namespace fundamentals_v2
} // namespace experimental
protocol_type _M_protocol;
};
- // @}
+ /// @}
/** @brief Socket streams
* @{
__streambuf_type _M_sb;
};
- // @}
+ /// @}
/** @brief synchronous connect operations
* @{
__ec);
}
- // @}
+ /// @}
/** @brief asynchronous connect operations
* @{
forward<_CompletionToken>(__token));
}
- // @}
+ /// @}
#endif // _GLIBCXX_HAVE_UNISTD_H
- // @}
+ /// @}
} // namespace v1
} // namespace net
swap(gp_hash_table& other)
{ base_type::swap(other); }
};
- //@} hash-based
+ ///@} hash-based
#undef PB_DS_GP_HASH_BASE
swap(trie& other)
{ base_type::swap(other); }
};
- //@} branch-based
+ ///@} branch-based
#undef PB_DS_TRIE_BASE
#undef PB_DS_TRIE_NODE_AND_IT_TRAITS
swap(list_update& other)
{ base_type::swap(other); }
};
- //@} list-based
+ ///@} list-based
#undef PB_DS_LU_BASE
- // @} group containers-pbds
+ /// @} group containers-pbds
} // namespace __gnu_pbds
#endif
/// Dispatched type.
typedef thin_heap<_VTp, Cmp_Fn, _Alloc> type;
};
- //@} group pbds
+ ///@} group pbds
} // namespace detail
} // namespace __gnu_pbds
public:
typedef typename tree_metadata_helper<__node_u, null_update>::type type;
};
- //@}
+ ///@}
} // namespace detail
} // namespace __gnu_pbds
public:
typedef typename trie_metadata_helper<__node_u, null_update>::type type;
};
- //@}
+ ///@}
} // namespace detail
} // namespace __gnu_pbds
store_extra m_store_extra_indicator;
no_throw_indicator m_no_throw_copies_indicator;
};
- //@}
+ ///@}
} // namespace detail
} // namespace __gnu_pbds
inline void
__throw_resize_error()
{ _GLIBCXX_THROW_OR_ABORT(resize_error()); }
- //@}
+ ///@}
} // namespace __gnu_pbds
#endif
{ base_type::swap(other); }
};
} // namespace __gnu_pbds
- //@} heap-based
+ ///@} heap-based
#endif
*/
struct range_invalidation_guarantee : public point_invalidation_guarantee
{ };
- //@}
+ ///@}
/**
/// Thin heap.
struct thin_heap_tag : public priority_queue_tag { };
- //@}
- //@}
+ ///@}
+ ///@}
/**
reverse_iteration = base_type::reverse_iteration
};
};
- //@}
+ ///@}
namespace detail
typename Policy_Tl = null_type>
struct container_base_dispatch;
} // namespace detail
- //@}
+ ///@}
} // namespace __gnu_pbds
#endif
_M_ndy(result_type(0), __p.sigma())
{ }
- // @}
+ /// @}
/**
* @brief Resets the distribution state.
_M_gd(__p.mu(), __p.omega() / __p.mu())
{ }
- // @}
+ /// @}
/**
* @brief Resets the distribution state.
_M_ud()
{ }
- // @}
+ /// @}
/**
* @brief Resets the distribution state.
_M_gd2(__p.nu(), __p.mu() / __p.nu())
{ }
- // @}
+ /// @}
/**
* @brief Resets the distribution state.
+1.5707963267948966192313216916397514L)
{ }
- // @}
+ /// @}
/**
* @brief Resets the distribution state.
: _M_param(__p)
{ }
- // @}
+ /// @}
/**
* @brief Resets the distribution state.
: _M_param(__p), _M_uosd()
{ }
- // @}
+ /// @}
/**
* @brief Resets the distribution state.
return static_cast<_ValueType>(std::move(*__p));
__throw_bad_any_cast();
}
- // @}
+ /// @}
/// @cond undocumented
template<typename _Tp>
return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
return nullptr;
}
- // @}
+ /// @}
template<typename _Tp>
void
#endif // C++2a
- // @} group atomics
+ /// @} group atomics
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#endif
// 23.3.5.2 bitset operations:
- //@{
+ ///@{
/**
* Operations on bitsets.
* @param __rhs A same-sized bitset.
this->_M_do_xor(__rhs);
return *this;
}
- //@}
+ ///@}
- //@{
+ ///@{
/**
* Operations on bitsets.
* @param __position The number of places to shift.
this->_M_do_reset();
return *this;
}
- //@}
+ ///@}
- //@{
+ ///@{
/**
* These versions of single-bit set, reset, flip, and test are
* extensions from the SGI version. They do no range checking.
_Unchecked_test(size_t __pos) const _GLIBCXX_NOEXCEPT
{ return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
!= static_cast<_WordT>(0)); }
- //@}
+ ///@}
// Set, reset, and flip.
/**
operator~() const _GLIBCXX_NOEXCEPT
{ return bitset<_Nb>(*this).flip(); }
- //@{
+ ///@{
/**
* @brief Array-indexing support.
* @param __position Index into the %bitset.
_GLIBCXX_CONSTEXPR bool
operator[](size_t __position) const
{ return _Unchecked_test(__position); }
- //@}
+ ///@}
/**
* @brief Returns a numerical interpretation of the %bitset.
size() const _GLIBCXX_NOEXCEPT
{ return _Nb; }
- //@{
+ ///@{
/// These comparisons for equality/inequality are, well, @e bitwise.
bool
operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
{ return !this->_M_is_equal(__rhs); }
#endif
- //@}
+ ///@}
/**
* @brief Tests the value of a bit.
none() const _GLIBCXX_NOEXCEPT
{ return !this->_M_is_any(); }
- //@{
+ ///@{
/// Self-explanatory.
bitset<_Nb>
operator<<(size_t __position) const _GLIBCXX_NOEXCEPT
bitset<_Nb>
operator>>(size_t __position) const _GLIBCXX_NOEXCEPT
{ return bitset<_Nb>(*this) >>= __position; }
- //@}
+ ///@}
/**
* @brief Finds the index of the first "on" bit.
}
// 23.3.5.3 bitset operations:
- //@{
+ ///@{
/**
* @brief Global bitwise operations on bitsets.
* @param __x A bitset.
__result ^= __y;
return __result;
}
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Global I/O operators for bitsets.
*
__x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1'));
return __os << __tmp;
}
- //@}
+ ///@}
_GLIBCXX_END_NAMESPACE_CONTAINER
} // namespace std
struct common_type<chrono::time_point<_Clock, _Duration>>
{ using type = chrono::time_point<_Clock, _Duration>; };
- // @} group chrono
+ /// @} group chrono
namespace chrono
{
const time_point<_Clock, _Dur2>& __rhs)
{ return !(__lhs < __rhs); }
- // @}
+ /// @}
// Clocks.
};
#endif // C++20
- // @}
+ /// @}
} // namespace chrono
#if __cplusplus > 201103L
}
// Operators:
- //@{
+ ///@{
/// Return new complex value @a x plus @a y.
template<typename _Tp>
inline _GLIBCXX20_CONSTEXPR complex<_Tp>
__r += __x;
return __r;
}
- //@}
+ ///@}
- //@{
+ ///@{
/// Return new complex value @a x minus @a y.
template<typename _Tp>
inline _GLIBCXX20_CONSTEXPR complex<_Tp>
__r += __x;
return __r;
}
- //@}
+ ///@}
- //@{
+ ///@{
/// Return new complex value @a x times @a y.
template<typename _Tp>
inline _GLIBCXX20_CONSTEXPR complex<_Tp>
__r *= __x;
return __r;
}
- //@}
+ ///@}
- //@{
+ ///@{
/// Return new complex value @a x divided by @a y.
template<typename _Tp>
inline _GLIBCXX20_CONSTEXPR complex<_Tp>
__r /= __y;
return __r;
}
- //@}
+ ///@}
/// Return @a x.
template<typename _Tp>
operator-(const complex<_Tp>& __x)
{ return complex<_Tp>(-__x.real(), -__x.imag()); }
- //@{
+ ///@{
/// Return true if @a x is equal to @a y.
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR bool
inline _GLIBCXX_CONSTEXPR bool
operator==(const _Tp& __x, const complex<_Tp>& __y)
{ return __x == __y.real() && _Tp() == __y.imag(); }
- //@}
+ ///@}
- //@{
+ ///@{
/// Return false if @a x is equal to @a y.
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR bool
operator!=(const _Tp& __x, const complex<_Tp>& __y)
{ return __x != __y.real() || _Tp() != __y.imag(); }
#endif
- //@}
+ ///@}
/// Extraction operator for complex values.
template<typename _Tp, typename _CharT, class _Traits>
#endif
#endif
- // @} group complex_numbers
+ /// @} group complex_numbers
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // end inline namespace
- // @} group condition_variables
+ /// @} group condition_variables
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
bool _M_reading;
bool _M_writing;
- //@{
+ ///@{
/**
* Necessary bits for putback buffer management.
*
char_type* _M_pback_cur_save;
char_type* _M_pback_end_save;
bool _M_pback_init;
- //@}
+ ///@}
// Cached codecvt facet.
const __codecvt_type* _M_codecvt;
#endif // _GLIBCXX_ASYNC_ABI_COMPAT
#endif // _GLIBCXX_HAS_GTHREADS
- // @} group futures
+ /// @} group futures
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
* startup and termination. For more information, see the section of the
* manual linked to above.
*/
- //@{
+ ///@{
extern istream cin; /// Linked to standard input
extern ostream cout; /// Linked to standard output
extern ostream cerr; /// Linked to standard error (unbuffered)
extern wostream wcerr; /// Linked to standard error (unbuffered)
extern wostream wclog; /// Linked to standard error (buffered)
#endif
- //@}
+ ///@}
// For construction of filebuffers for cout, cin, cerr, clog et. al.
static ios_base::Init __ioinit;
class sentry;
friend class sentry;
- //@{
+ ///@{
/**
* @brief Interface for manipulators.
*
__pf(*this);
return *this;
}
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @name Extractors
*
* be rethrown if badbit is set in the exceptions mask.
*/
- //@{
+ ///@{
/**
* @brief Integer arithmetic extractors
* @param __n A variable of builtin integral type.
operator>>(unsigned long long& __n)
{ return _M_extract(__n); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Floating point arithmetic extractors
* @param __f A variable of builtin floating point type.
__istream_type&
operator>>(long double& __f)
{ return _M_extract(__f); }
- //@}
+ ///@}
/**
* @brief Basic arithmetic extractors
*/
__istream_type&
operator>>(__streambuf_type* __sb);
- //@}
+ ///@}
// [27.6.1.3] unformatted input
/**
gcount() const
{ return _M_gcount; }
- //@{
+ ///@{
/**
* @name Unformatted Input Functions
*
*/
__istream_type&
seekg(off_type, ios_base::seekdir);
- //@}
+ ///@}
protected:
basic_istream()
{ return _M_ok; }
};
- //@{
+ ///@{
/**
* @brief Character extractors
* @param __in An input stream.
inline basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
{ return (__in >> reinterpret_cast<char&>(__c)); }
- //@}
+ ///@}
template<typename _CharT, typename _Traits>
void __istream_extract(istream&, char*, streamsize);
- //@{
+ ///@{
/**
* @brief Character string extractors
* @param __in An input stream.
operator>>(basic_istream<char, _Traits>& __in, signed char (&__s)[_Num])
{ return __in >> reinterpret_cast<char(&)[_Num]>(__s); }
#endif
- //@}
+ ///@}
/**
* @brief Template class basic_iostream
}
#endif // _GLIBCXX_HAS_GTHREADS
- // @} group mutexes
+ /// @} group mutexes
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
return __result;
}
- // @} group numeric_ops
+ /// @} group numeric_ops
#endif // C++17
_GLIBCXX_END_NAMESPACE_VERSION
class sentry;
friend class sentry;
- //@{
+ ///@{
/**
* @brief Interface for manipulators.
*
__pf(*this);
return *this;
}
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @name Inserters
*
* be rethrown.
*/
- //@{
+ ///@{
/**
* @brief Integer arithmetic inserters
* @param __n A variable of builtin integral type.
operator<<(unsigned long long __n)
{ return _M_insert(__n); }
#endif
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Floating point arithmetic inserters
* @param __f A variable of builtin floating point type.
__ostream_type&
operator<<(long double __f)
{ return _M_insert(__f); }
- //@}
+ ///@}
/**
* @brief Pointer arithmetic inserters
*/
__ostream_type&
operator<<(__streambuf_type* __sb);
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @name Unformatted Output Functions
*
*/
__ostream_type&
write(const char_type* __s, streamsize __n);
- //@}
+ ///@}
/**
* @brief Synchronizing the stream buffer.
{ return _M_ok; }
};
- //@{
+ ///@{
/**
* @brief Character inserters
* @param __out An output stream.
operator<<(basic_ostream<wchar_t, _Traits>&, char32_t) = delete;
#endif // _GLIBCXX_USE_WCHAR_T
#endif // C++20
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief String inserters
* @param __out An output stream.
operator<<(basic_ostream<wchar_t, _Traits>&, const char32_t*) = delete;
#endif // _GLIBCXX_USE_WCHAR_T
#endif // C++20
- //@}
+ ///@}
// Standard basic_ostream manipulators
typedef ratio< 1000000000000000, 1> peta;
typedef ratio< 1000000000000000000, 1> exa;
- // @} group ratio
+ /// @} group ratio
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
swap(shared_lock<_Mutex>& __x, shared_lock<_Mutex>& __y) noexcept
{ __x.swap(__y); }
- // @} group mutexes
+ /// @} group mutexes
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
virtual ~underflow_error() _GLIBCXX_NOTHROW;
};
- // @} group exceptions
+ /// @} group exceptions
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
class basic_streambuf
{
public:
- //@{
+ ///@{
/**
* These are standard types. They permit a standardized way of
* referring to names of (or names dependent on) the template
typedef typename traits_type::int_type int_type;
typedef typename traits_type::pos_type pos_type;
typedef typename traits_type::off_type off_type;
- //@}
+ ///@}
- //@{
+ ///@{
/// This is a non-standard type.
typedef basic_streambuf<char_type, traits_type> __streambuf_type;
- //@}
+ ///@}
friend class basic_ios<char_type, traits_type>;
friend class basic_istream<char_type, traits_type>;
{ return _M_buf_locale; }
// [27.5.2.2.2] buffer management and positioning
- //@{
+ ///@{
/**
* @brief Entry points for derived buffer functions.
*
*/
int
pubsync() { return this->sync(); }
- //@}
+ ///@}
// [27.5.2.2.3] get area
/**
{ }
// [27.5.2.3.1] get area access
- //@{
+ ///@{
/**
* @brief Access to the get area.
*
char_type*
egptr() const { return _M_in_end; }
- //@}
+ ///@}
/**
* @brief Moving the read position.
}
// [27.5.2.3.2] put area access
- //@{
+ ///@{
/**
* @brief Access to the put area.
*
char_type*
epptr() const { return _M_out_end; }
- //@}
+ ///@}
/**
* @brief Moving the write position.
operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
{ return (__os << __e.category().name() << ':' << __e.value()); }
- // @}
+ /// @}
error_condition make_error_condition(errc) noexcept;
};
#endif // __cpp_lib_jthread
- // @} group threads
+ /// @} group threads
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
return _M_data[__i];
}
- // @} group numeric_arrays
+ /// @} group numeric_arrays
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
{ return std::__addressof(__va[0]) + __va.size(); }
#endif // C++11
- // @} group numeric_arrays
+ /// @} group numeric_arrays
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
// <http://www.gnu.org/licenses/>.
/** @file variant
- * This is the <variant> C++ Library header.
+ * This is the `<variant>` C++ Library header.
*/
#ifndef _GLIBCXX_VARIANT
#endif // __cplusplus < 201103L
- // @}
+ /// @}
#endif /* _GLIBCXX_USE_C99_MATH_TR1 */
return __detail::__sph_neumann<__type>(__n, __x);
}
- // @} tr1_math_spec_func
+ /// @} tr1_math_spec_func
} // namespace tr1
return __detail::__hyperg<__type>(__a, __b, __c, __x);
}
- // @} tr1_math_spec_func
+ /// @} tr1_math_spec_func
} // namespace tr1
* @defgroup tr1_regex Regular Expressions
* A facility for performing regular expression pattern matching.
*/
- //@{
+ ///@{
/** @namespace std::regex_constants
* @brief ISO C++ 0x entities sub namespace for regex.
/**
* @name 5.1 Regular Expression Syntax Options
*/
- //@{
+ ///@{
enum __syntax_option
{
_S_icase,
*/
static const syntax_option_type egrep = 1 << _S_egrep;
- //@}
+ ///@}
/**
* @name 5.2 Matching Rules
* below for any bitmask elements set.
*
*/
- //@{
+ ///@{
enum __match_flag
{
*/
static const match_flag_type format_first_only = 1 << _S_first_only;
- //@}
+ ///@}
/**
* @name 5.3 Error Types
*/
- //@{
+ ///@{
enum error_type
{
*/
static const error_type error_stack(_S_error_stack);
- //@}
+ ///@}
}
// [7.8] Class regex_error
* @name Constants
* tr1 [7.8.1] std [28.8.1]
*/
- //@{
+ ///@{
static const regex_constants::syntax_option_type icase
= regex_constants::icase;
static const regex_constants::syntax_option_type nosubs
= regex_constants::grep;
static const regex_constants::syntax_option_type egrep
= regex_constants::egrep;
- //@}
+ ///@}
// [7.8.2] construct/copy/destroy
/**
/**
* @name 10.? Public Types
*/
- //@{
+ ///@{
typedef sub_match<_Bi_iter> value_type;
typedef typename _Base_type::const_reference const_reference;
typedef const_reference reference;
typedef _Allocator allocator_type;
typedef typename iterator_traits<_Bi_iter>::value_type char_type;
typedef basic_string<char_type> string_type;
- //@}
+ ///@}
public:
/**
* @name 10.1 Construction, Copying, and Destruction
*/
- //@{
+ ///@{
/**
* @brief Constructs a default %match_results container.
~match_results()
{ }
- //@}
+ ///@}
/**
* @name 10.2 Size
*/
- //@{
+ ///@{
/**
* @brief Gets the number of matches and submatches.
empty() const
{ return size() == 0; }
- //@}
+ ///@}
/**
* @name 10.3 Element Access
*/
- //@{
+ ///@{
/**
* @brief Gets the length of the indicated submatch.
{ return _Base_type::end(); }
#endif
- //@}
+ ///@}
/**
* @name 10.4 Formatting
* and escape sequences accepted by these functions are
* determined by their @p flags parameter as documented above.
*/
- //@{
+ ///@{
/**
* @todo Implement this function.
regex_constants::match_flag_type __flags
= regex_constants::format_default) const;
- //@}
+ ///@}
/**
* @name 10.5 Allocator
*/
- //@{
+ ///@{
/**
* @brief Gets a copy of the allocator.
//get_allocator() const;
using _Base_type::get_allocator;
- //@}
+ ///@}
/**
* @name 10.6 Swap
*/
- //@{
+ ///@{
/**
* @brief Swaps the contents of two match_results.
std::swap(_M_prefix, __that._M_prefix);
std::swap(_M_suffix, __that._M_suffix);
}
- //@}
+ ///@}
private:
bool _M_matched;
/**
* @name Matching, Searching, and Replacing
*/
- //@{
+ ///@{
/**
* @brief Determines if there is a match between the regular expression @p e
return __result;
}
- //@}
+ ///@}
// tr1 [7.12.1] std [28.12] Class template regex_iterator
/**
typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
#endif
- //@}
+ ///@}
}
_GLIBCXX_END_NAMESPACE_VERSION
}
// 23.3.5.2 dynamic_bitset operations:
- //@{
+ ///@{
/**
* @brief Operations on dynamic_bitsets.
* @param __rhs A same-sized dynamic_bitset.
this->_M_do_dif(__rhs);
return *this;
}
- //@}
+ ///@}
- //@{
+ ///@{
/**
* @brief Operations on dynamic_bitsets.
* @param __pos The number of places to shift.
this->_M_do_reset();
return *this;
}
- //@}
+ ///@}
// Set, reset, and flip.
/**
operator~() const
{ return dynamic_bitset<_WordT, _Alloc>(*this).flip(); }
- //@{
+ ///@{
/**
* @brief Array-indexing support.
* @param __pos Index into the %dynamic_bitset.
const_reference
operator[](size_type __pos) const
{ return _M_unchecked_test(__pos); }
- //@}
+ ///@}
/**
* @brief Returns a numerical interpretation of the %dynamic_bitset.
none() const
{ return !this->_M_is_any(); }
- //@{
+ ///@{
/// Self-explanatory.
dynamic_bitset
operator<<(size_type __pos) const
dynamic_bitset
operator>>(size_type __pos) const
{ return dynamic_bitset(*this) >>= __pos; }
- //@}
+ ///@}
/**
* @brief Finds the index of the first "on" bit.
}
- //@{
+ ///@{
/// These comparisons for equality/inequality are, well, @e bitwise.
template<typename _WordT, typename _Alloc>
operator>=(const dynamic_bitset<_WordT, _Alloc>& __lhs,
const dynamic_bitset<_WordT, _Alloc>& __rhs)
{ return !(__lhs < __rhs); }
- //@}
+ ///@}
// 23.3.5.3 bitset operations:
- //@{
+ ///@{
/**
* @brief Global bitwise operations on bitsets.
* @param __x A bitset.
__result -= __y;
return __result;
}
- //@}
+ ///@}
/// Stream output operator for dynamic_bitset.
template <typename _CharT, typename _Traits,
#define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE
#endif
-// @} group atomics
+/// @} group atomics
#endif
int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
#endif
- // @} group exceptions
+ /// @} group exceptions
} // namespace std
namespace __gnu_cxx
* @defgroup exceptions Exceptions
* @ingroup diagnostics
*
- * Classes and functions for reporting errors via exception classes.
+ * Classes and functions for reporting errors via exceptions.
* @{
*/
what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
};
+ /// @}
+
} // namespace std
}
#undef _GLIBCXX_EH_PTR_USED
- // @} group exceptions
+ /// @} group exceptions
} // namespace std
} // extern "C++"
rethrow_if_nested(const _Ex& __ex)
{ std::__rethrow_if_nested_impl(std::__addressof(__ex)); }
- // @} group exceptions
+ /// @} group exceptions
} // namespace std
} // extern "C++"