# __gnu_cxx Namespace Reference

This namespace serves two purposes. More...

## Classes
struct | __gnu_cxx::Char_types< CharT >
| Mapping from character type to associated types. More...
struct | __gnu_cxx::char_traits< CharT >
| Base class used to implement std::char_traits. More...
class | __gnu_cxx::debug_allocator< Alloc >
| A meta-allocator with debugging bits, as per [20.4]. More...
class | __gnu_cxx::unary_compose< Operation1, Operation2 >
| An SGI extension . More...
class | __gnu_cxx::binary_compose< Operation1, Operation2, Operation3 >
| An SGI extension . More...
struct | __gnu_cxx::select1st< Pair >
| An SGI extension . More...
struct | __gnu_cxx::select2nd< Pair >
| An SGI extension . More...
struct | __gnu_cxx::project1st< Arg1, Arg2 >
| An SGI extension . More...
struct | __gnu_cxx::project2nd< Arg1, Arg2 >
| An SGI extension . More...
struct | __gnu_cxx::constant_void_fun< Result >
| An SGI extension . More...
struct | __gnu_cxx::constant_unary_fun< Result, Argument >
| An SGI extension . More...
struct | __gnu_cxx::constant_binary_fun< Result, Arg1, Arg2 >
| An SGI extension . More...
class | __gnu_cxx::subtractive_rng
class | __gnu_cxx::hash_map< Key, Type, HashFcn, EqualKey, Alloc >
class | __gnu_cxx::hash_multimap< Key, Type, HashFcn, EqualKey, Alloc >
class | __gnu_cxx::hash_set< Value, HashFcn, EqualKey, Alloc >
class | __gnu_cxx::hash_multiset< Value, HashFcn, EqualKey, Alloc >
class | __gnu_cxx::malloc_allocator< Type >
| An allocator that uses malloc. More...
struct | __gnu_cxx::temporary_buffer< ForwardIterator, Type >
class | __gnu_cxx::__mt_alloc< Type >
class | __gnu_cxx::new_allocator< Type >
| An allocator that uses global new, as per [20.4]. More...
struct | __gnu_cxx::__pool_base< __threads >
struct | __gnu_cxx::rb_tree< Key, Value, KeyOfValue, Compare, Alloc >
class | __gnu_cxx::rope< CharT, Alloc >
class | __gnu_cxx::slist< Type, Alloc >
class | __gnu_cxx::stdio_filebuf< CharT, Traits >
| Provides a layer of compatibility for C/POSIX. More...
## Functions
void | __verbose_terminate_handler ()
template<typename InputIterator, typename Size, typename OutputIterator> pair< InputIterator, OutputIterator > | copy_n (InputIterator first, Size count, OutputIterator __result)
| Copies the range [first,first+count) into [result,result+count).
template<typename InputIterator1, typename InputIterator2> int | lexicographical_compare_3way (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2)
| `memcmp` on steroids.
template<typename ForwardIterator, typename OutputIterator, typename Distance> OutputIterator | random_sample_n (ForwardIterator first, ForwardIterator last, OutputIterator out, const Distance n)
template<typename ForwardIterator, typename OutputIterator, typename Distance, typename RandomNumberGenerator> OutputIterator | random_sample_n (ForwardIterator first, ForwardIterator last, OutputIterator out, const Distance n, RandomNumberGenerator &__rand)
template<typename InputIterator, typename RandomAccessIterator> RandomAccessIterator | random_sample (InputIterator first, InputIterator last, RandomAccessIterator out_first, RandomAccessIterator out_last)
template<typename InputIterator, typename RandomAccessIterator, typename RandomNumberGenerator> RandomAccessIterator | random_sample (InputIterator first, InputIterator last, RandomAccessIterator out_first, RandomAccessIterator out_last, RandomNumberGenerator &__rand)
template<typename RandomAccessIterator> bool | is_heap (RandomAccessIterator first, RandomAccessIterator last)
template<typename RandomAccessIterator, typename StrictWeakOrdering> bool | is_heap (RandomAccessIterator first, RandomAccessIterator last, StrictWeakOrdering comp)
template<typename ForwardIterator> bool | is_sorted (ForwardIterator first, ForwardIterator last)
template<typename ForwardIterator, typename StrictWeakOrdering> bool | is_sorted (ForwardIterator first, ForwardIterator last, StrictWeakOrdering comp)
template<class Type> Type | identity_element (std::plus< Type >)
| An SGI extension .
template<class Type> Type | identity_element (std::multiplies< Type >)
| An SGI extension .
template<class Operation1, class Operation2> unary_compose< Operation1, Operation2 > | compose1 (const Operation1 &__fn1, const Operation2 &__fn2)
| An SGI extension .
template<class Operation1, class Operation2, class Operation3> binary_compose< Operation1, Operation2, Operation3 > | compose2 (const Operation1 &__fn1, const Operation2 &__fn2, const Operation3 &__fn3)
| An SGI extension .
template<class Result> constant_void_fun< Result > | constant0 (const Result &__val)
| An SGI extension .
template<class Result> constant_unary_fun< Result, Result > | constant1 (const Result &__val)
| An SGI extension .
template<class Result> constant_binary_fun< Result, Result, Result > | constant2 (const Result &__val)
| An SGI extension .
template<typename InputIterator, typename Distance> void | distance (InputIterator first, InputIterator last, Distance &n)
template<typename InputIter, typename Size, typename ForwardIter> pair< InputIter, ForwardIter > | uninitialized_copy_n (InputIter first, Size count, ForwardIter __result)
| Copies the range [first,last) into result.
template<typename Type, typename Integer, typename MonoidOperation> Type | power (Type x, Integer n, MonoidOperation __monoid_op)
template<typename Type, typename Integer> Type | power (Type x, Integer n)
template<typename ForwardIter, typename Type> void | iota (ForwardIter first, ForwardIter last, Type value)

## Detailed Description

This namespace serves two purposes.

This namespace is used for two things:

- sequestering internal (implementation-only) names away from the global namespace; these are details of the implementation and should not be touched by users
- GNU extensions for public use

This is still fluid and changing rapidly. Currently the rule is: if an entitity is found in the user-level documentation, it falls into the second category.

## Function Documentation

void __verbose_terminate_handler | ( |  | ) |

| A replacement for the standard terminate_handler which prints more information about the terminating exception (if any) on stderr. Call
            std::set_terminate (__gnu_cxx::__verbose_terminate_handler)
to use. For more info, see http://gcc.gnu.org/onlinedocs/libstdc++/19_diagnostics/howto.html#4 In 3.4 and later, this is on by default.