gcc/libstdc++-v3/include/ext/functional
Paolo Carlini 8fc810787b c++config (std::size_t, [...]): Provide typedefs.
2010-06-03  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/c++config (std::size_t, std::ptrdiff_t,
        std::nullptr_t): Provide typedefs.
	* include/c_std/cstddef: Don't provide std::size_t and
	std::ptrdiff_t here.
	* include/c_global/cstddef: Likewise.
	* src/condition_variable.cc: Don't include <cstddef>,
	don't use NULL, use std::size_t and std::ptrdiff_t.
	* src/mt_allocator.cc: Likewise.
	* src/localename.cc: Likewise.
	* src/chrono.cc: Likewise.
	* src/thread.cc: Likewise.
	* include/debug/formatter.h: Likewise.
	* include/debug/functions.h: Likewise.
	* include/std/valarray: Likewise.
	* include/std/thread: Likewise.
	* include/std/type_traits: Likewise.
	* include/std/atomic: Likewise.
	* include/std/iterator: Likewise.
	* include/std/bitset: Likewise.
	* include/std/fstream: Likewise.
	* include/std/mutex: Likewise.
	* include/c_std/cstdlib: Likewise.
	* include/c_std/cstdio: Likewise.
	* include/c_std/ctime: Likewise.
	* include/c_std/cwchar: Likewise.
	* include/c_std/cstring: Likewise.
	* include/parallel/multiway_merge.h: Likewise.
	* include/parallel/multiseq_selection.h: Likewise.
	* include/parallel/base.h: Likewise.
	* include/parallel/basic_iterator.h: Likewise.
	* include/parallel/multiway_mergesort.h
	* include/parallel/partition.h: Likewise.
	* include/ext/string_conversions.h: Likewise.
	* include/ext/pb_ds/assoc_container.hpp: Likewise.
	* include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp:
	Likewise.
	* include/ext/pb_ds/detail/resize_policy/
	hash_prime_size_policy_imp.hpp: Likewise.
	* include/ext/pb_ds/detail/resize_policy/
	sample_resize_policy.hpp: Likewise.
	* include/ext/pb_ds/detail/resize_policy/
	sample_resize_trigger.hpp: Likewise.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	find_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	constructors_destructor_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/binomial_heap_base_/
	split_join_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	erase_store_hash_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/d: Likewise.etail/cc_hash_table_map_/
	insert_no_store_hash_fn_imps.hpp
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	cmp_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	find_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	insert_store_hash_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	info_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	entry_list_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	trace_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	cc_ht_map_.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	resize_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	constructor_destructor_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/
	erase_no_store_hash_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/unordered_iterator/
	iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/unordered_iterator/
	const_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/unordered_iterator/
	point_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/unordered_iterator/
	const_point_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/
	insert_join_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/
	constructors_destructor_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/
	const_child_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Likewise.
	* include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	find_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	r_erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	constructors_destructor_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	rotate_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	node_iterators.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	point_iterators.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	split_join_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/
	iterators_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	find_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	gp_ht_map_.hpp: Likewise.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	resize_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/gp_hash_table_map_/
	standard_policies.hpp: Likewise.
	* include/ext/pb_ds/detail/tree_policy/
	sample_tree_node_update.hpp: Likewise.
	* include/ext/pb_ds/detail/basic_tree_policy/
	null_node_metadata.hpp: Likewise.
	* include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/binary_heap_/
	const_point_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/binary_heap_/
	split_join_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/trie_policy/
	sample_trie_node_update.hpp: Likewise.
	* include/ext/pb_ds/detail/trie_policy/
	sample_trie_e_access_traits.hpp: Likewise.
	* include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/pairing_heap_/
	split_join_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_policy/
	counter_lu_metadata.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	trace_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	null_metadata.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	const_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	constructors_destructor_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	iterators_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
	const_point_iterator.hpp: Likewise.
	* include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/thin_heap_/
	constructors_destructor_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/thin_heap_/
	split_join_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/ov_tree_map_/
	constructors_destructor_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Likewise.
	* include/ext/pb_ds/detail/ov_tree_map_/
	iterators_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp: Likewise.
	* include/ext/pb_ds/detail/hash_fn/
	sample_ranged_probe_fn.hpp: Likewise.
	* include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp: Likewise.
	* include/ext/pb_ds/detail/hash_fn/
	sample_ranged_hash_fn.hpp: Likewise.
	* include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/splay_tree_/
	split_join_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_map_/
	trace_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_map_/
	erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_map_/
	find_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_map_/
	constructor_destructor_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_map_/
	insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_map_/
	info_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_map_/
	iterators_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/rc_binomial_heap_/
	erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/rc_binomial_heap_/
	insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/rc_binomial_heap_/
	debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/rb_tree_map_/
	split_join_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp: Likewise.
	* include/ext/pb_ds/list_update_policy.hpp: Likewise.
	* include/ext/pb_ds/exception.hpp: Likewise.
	* include/ext/pb_ds/tree_policy.hpp: Likewise.
	* include/ext/pb_ds/tag_and_trait.hpp: Likewise.
	* include/ext/pb_ds/hash_policy.hpp: Likewise.
	* include/ext/pb_ds/trie_policy.hpp: Likewise.
	* include/ext/pb_ds/priority_queue.hpp: Likewise.
	* include/ext/throw_allocator.h: Likewis: Likewise.e.
	* include/ext/bitmap_allocator.h
	* include/ext/rc_string_base.h: Likewise.
	* include/ext/new_allocator.h: Likewise.
	* include/ext/codecvt_specializations.h: Likewise.
	* include/ext/functional: Likewise.: Likewise.
	* include/ext/array_allocator.h: Likewise.
	* include/ext/mt_allocator.h: Likewise.
	* include/ext/sso_string_base.h: Likewise.
	* include/profile/impl/profiler_trace.h: Likewise.
	* include/profile/impl/profiler_node.h: Likewise.
	* include/bits/stl_algobase.h: Likewise.
	* include/bits/functional_hash.h: Likewise.
	* include/bits/locale_facets.tcc: Likewise.
	* include/bits/locale_facets.h: Likewise.
	* include/bits/stl_iterator_base_types.h: Likewise.
	* include/bits/move.h: Likewise.
	* include/bits/boost_concept_check.h: Likewise.
	* include/bits/basic_string.tcc: Likewise.
	* include/bits/locale_facets_nonio.tcc: Likewise.
	* include/bits/fstream.tcc: Likewise.
	* include/bits/locale_facets_nonio.h: Likewise.
	* include/c_global/cstdlib: Likewise.
	* include/c_global/cstdio: Likewise.
	* include/c_global/ctime: Likewise.
	* include/c_global/cwchar: Likewise.
	* include/c_global/cstring
	* include/tr1/type_traits: Likewise.
	* include/backward/hash_fun.h: Likewise.
	* libsupc++/new: Likewise.
	* libsupc++/initializer_list: Likewise.
	* testsuite/27_io/basic_ofstream/pthread2.cc: Likewise.
	* testsuite/27_io/basic_iostream/cons/2020.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sgetn/char/1.cc: Likewise.
	* testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_streambuf/overflow/char/1.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sgetc/char/1.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sputn/char/1057.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sputn/char/1.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc: Likewise.
	* testsuite/27_io/basic_streambuf/sputc/char/1057.cc: Likewise.
	* testsuite/27_io/objects/wchar_t/5268.cc: Likewise.
	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
	* testsuite/27_io/objects/char/5268.cc: Likewise.
	* testsuite/27_io/objects/char/10.cc: Likewise.
	* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
	* testsuite/27_io/basic_ios/copyfmt/char/2.cc: Likewise.
	* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
	* testsuite/27_io/basic_ios/locales/char/1.cc: Likewise.
	* testsuite/27_io/basic_ios/clear/char/1.cc: Likewise.
	* testsuite/27_io/basic_ostringstream/pthread3.cc: Likewise.
	* testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc: Likewise.
	* testsuite/27_io/basic_stringbuf/sputc/char/1057.cc: Likewise.
	* testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc: Likewise.
	* testsuite/27_io/basic_stringbuf/sputn/char/1057.cc: Likewise.
	* testsuite/27_io/basic_istream/get/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_istream/get/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/ignore/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_istream/ignore/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/peek/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_istream/peek/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/getline/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_istream/getline/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
	exceptions_null.cc
	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
	1.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/cons/3.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/
	wchar_t/01.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/
	char/01.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_character/
	wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_character/
	wchar_t/2.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_character/
	wchar_t/3.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_character/
	char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_character/
	char/2.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_character/
	char/3.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_character/
	char/9826.cc: Likewise.
	* testsuite/27_io/basic_istream/read/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_istream/read/char/1.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
	1.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/char/1.cc: Likewise.
	* testsuite/27_io/basic_ostream/cons/2020.cc: Likewise.
	* testsuite/27_io/basic_ostream/sentry/pod/1.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_character/
	wchar_t/8.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_character/
	char/8.cc: Likewise.
	* testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Likewise.
	* testsuite/27_io/basic_filebuf/sputc/char/1057.cc: Likewise.
	* testsuite/27_io/basic_filebuf/open/char/1.cc: Likewise.
	* testsuite/27_io/basic_filebuf/open/char/2.cc: Likewise.
	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: Likewise.
	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc: Likewise.
	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc: Likewise.
	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc: Likewise.
	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc: Likewise.
	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
	* testsuite/27_io/basic_filebuf/close/char/1.cc: Likewise.
	* testsuite/27_io/basic_filebuf/close/char/2.cc: Likewise.
	* testsuite/27_io/basic_filebuf/close/char/12790-3.cc: Likewise.
	* testsuite/27_io/basic_filebuf/sputn/char/1057.cc: Likewise.
	* testsuite/24_iterators/ostreambuf_iterator/2.cc: Likewise.
	* testsuite/18_support/bad_exception/23591_thread-1.c
	* testsuite/18_support/new_delete_placement.cc: Likewise.
	* testsuite/18_support/pthread_guard.cc: Likewise.
	* testsuite/21_strings/basic_string/operations/wchar_t/1.cc: Likewise.
	* testsuite/21_strings/basic_string/operations/char/1.cc: Likewise.
	* testsuite/21_strings/basic_string/pthread4.cc: Likewise.
	* testsuite/21_strings/basic_string/cons/wchar_t/5.cc: Likewise.
	* testsuite/21_strings/basic_string/cons/char/5.cc: Likewise.
	* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
	* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
	* testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
	* testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
	* testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
	* testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/cons/
	assign_neg.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/cons/
	copy_neg.cc: Likewise.
	* testsuite/ext/mt_allocator/22309_thread.cc: Likewise.
	* testsuite/ext/slist/23781.cc: Likewise.
	* testsuite/ext/rope/pthread7-rope.cc: Likewise.
	* testsuite/ext/stdio_filebuf/char/10063-2.cc: Likewise.
	* testsuite/22_locale/ctype/is/wchar_t/1.cc: Likewise.
	* testsuite/22_locale/ctype/is/char/1.cc: Likewise.
	* testsuite/22_locale/time_put/put/char/12439_1.cc: Likewise.
	* testsuite/22_locale/time_put/put/char/12439_3.cc: Likewise.
	* testsuite/22_locale/locale/cons/2.cc: Likewise.
	* testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise.
	* testsuite/22_locale/locale/cons/29217.cc: Likewise.
	* testsuite/22_locale/locale/global_locale_objects/14071.cc: Likewise.
	* testsuite/22_locale/locale/global_locale_objects/2.cc: Likewise.
	* testsuite/tr1/6_containers/unordered_multimap/
	requirements/iterator_null_neg.cc: Likewise.
	* testsuite/tr1/6_containers/unordered_multiset/
	requirements/iterator_null_neg.cc: Likewise.
	* testsuite/29_atomics/atomic_address/cons/single_value.cc: Likewise.
	* testsuite/29_atomics/atomic_address/cons/aggregate.cc: Likewise.
	* testsuite/23_containers/multimap/23781.cc: Likewise.
	* testsuite/23_containers/set/23781.cc: Likewise.
	* testsuite/23_containers/multiset/23781.cc: Likewise.
	* testsuite/23_containers/list/pthread1.cc: Likewise.
	* testsuite/23_containers/list/23781.cc: Likewise.
	* testsuite/23_containers/map/pthread6.cc: Likewise.
	* testsuite/23_containers/map/23781.cc: Likewise.
	* testsuite/util/regression/rand/priority_queue/
	rand_regression_test.hpp: Likewise.
	* testsuite/util/regression/rand/priority_queue/
	container_rand_regression_test.tcc: Likewise.
	* testsuite/util/regression/rand/assoc/
	rand_regression_test.hpp: Likewise.
	* testsuite/util/regression/rand/assoc/
	container_rand_regression_test.tcc: Likewise.
	* testsuite/util/testsuite_hooks.cc: Likewise.
	* testsuite/util/testsuite_io.h: Likewise.
	* testsuite/util/testsuite_iterators.h: Likewise.
	* testsuite/util/replacement_memory_operators.h: Likewise.
	* testsuite/util/testsuite_allocator.h: Likewise.
	* testsuite/util/testsuite_performance.h: Likewise.

From-SVN: r160231
2010-06-03 19:15:56 +00:00

425 lines
14 KiB
C++

// Functional extensions -*- C++ -*-
// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1996
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
/** @file ext/functional
* This file is a GNU extension to the Standard C++ Library (possibly
* containing extensions from the HP/SGI STL subset).
*/
#ifndef _EXT_FUNCTIONAL
#define _EXT_FUNCTIONAL 1
#pragma GCC system_header
#include <functional>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
using std::size_t;
using std::unary_function;
using std::binary_function;
using std::mem_fun1_t;
using std::const_mem_fun1_t;
using std::mem_fun1_ref_t;
using std::const_mem_fun1_ref_t;
/** The @c identity_element functions are not part of the C++
* standard; SGI provided them as an extension. Its argument is an
* operation, and its return value is the identity element for that
* operation. It is overloaded for addition and multiplication,
* and you can overload it for your own nefarious operations.
*
* @addtogroup SGIextensions
* @{
*/
/// An \link SGIextensions SGI extension \endlink.
template <class _Tp>
inline _Tp
identity_element(std::plus<_Tp>)
{ return _Tp(0); }
/// An \link SGIextensions SGI extension \endlink.
template <class _Tp>
inline _Tp
identity_element(std::multiplies<_Tp>)
{ return _Tp(1); }
/** @} */
/** As an extension to the binders, SGI provided composition functors and
* wrapper functions to aid in their creation. The @c unary_compose
* functor is constructed from two functions/functors, @c f and @c g.
* Calling @c operator() with a single argument @c x returns @c f(g(x)).
* The function @c compose1 takes the two functions and constructs a
* @c unary_compose variable for you.
*
* @c binary_compose is constructed from three functors, @c f, @c g1,
* and @c g2. Its @c operator() returns @c f(g1(x),g2(x)). The function
* @compose2 takes f, g1, and g2, and constructs the @c binary_compose
* instance for you. For example, if @c f returns an int, then
* \code
* int answer = (compose2(f,g1,g2))(x);
* \endcode
* is equivalent to
* \code
* int temp1 = g1(x);
* int temp2 = g2(x);
* int answer = f(temp1,temp2);
* \endcode
* But the first form is more compact, and can be passed around as a
* functor to other algorithms.
*
* @addtogroup SGIextensions
* @{
*/
/// An \link SGIextensions SGI extension \endlink.
template <class _Operation1, class _Operation2>
class unary_compose
: public unary_function<typename _Operation2::argument_type,
typename _Operation1::result_type>
{
protected:
_Operation1 _M_fn1;
_Operation2 _M_fn2;
public:
unary_compose(const _Operation1& __x, const _Operation2& __y)
: _M_fn1(__x), _M_fn2(__y) {}
typename _Operation1::result_type
operator()(const typename _Operation2::argument_type& __x) const
{ return _M_fn1(_M_fn2(__x)); }
};
/// An \link SGIextensions SGI extension \endlink.
template <class _Operation1, class _Operation2>
inline unary_compose<_Operation1, _Operation2>
compose1(const _Operation1& __fn1, const _Operation2& __fn2)
{ return unary_compose<_Operation1,_Operation2>(__fn1, __fn2); }
/// An \link SGIextensions SGI extension \endlink.
template <class _Operation1, class _Operation2, class _Operation3>
class binary_compose
: public unary_function<typename _Operation2::argument_type,
typename _Operation1::result_type>
{
protected:
_Operation1 _M_fn1;
_Operation2 _M_fn2;
_Operation3 _M_fn3;
public:
binary_compose(const _Operation1& __x, const _Operation2& __y,
const _Operation3& __z)
: _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { }
typename _Operation1::result_type
operator()(const typename _Operation2::argument_type& __x) const
{ return _M_fn1(_M_fn2(__x), _M_fn3(__x)); }
};
/// An \link SGIextensions SGI extension \endlink.
template <class _Operation1, class _Operation2, class _Operation3>
inline binary_compose<_Operation1, _Operation2, _Operation3>
compose2(const _Operation1& __fn1, const _Operation2& __fn2,
const _Operation3& __fn3)
{ return binary_compose<_Operation1, _Operation2, _Operation3>
(__fn1, __fn2, __fn3); }
/** @} */
/** As an extension, SGI provided a functor called @c identity. When a
* functor is required but no operations are desired, this can be used as a
* pass-through. Its @c operator() returns its argument unchanged.
*
* @addtogroup SGIextensions
*/
template <class _Tp>
struct identity : public std::_Identity<_Tp> {};
/** @c select1st and @c select2nd are extensions provided by SGI. Their
* @c operator()s
* take a @c std::pair as an argument, and return either the first member
* or the second member, respectively. They can be used (especially with
* the composition functors) to @a strip data from a sequence before
* performing the remainder of an algorithm.
*
* @addtogroup SGIextensions
* @{
*/
/// An \link SGIextensions SGI extension \endlink.
template <class _Pair>
struct select1st : public std::_Select1st<_Pair> {};
/// An \link SGIextensions SGI extension \endlink.
template <class _Pair>
struct select2nd : public std::_Select2nd<_Pair> {};
/** @} */
// extension documented next
template <class _Arg1, class _Arg2>
struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1>
{
_Arg1
operator()(const _Arg1& __x, const _Arg2&) const
{ return __x; }
};
template <class _Arg1, class _Arg2>
struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2>
{
_Arg2
operator()(const _Arg1&, const _Arg2& __y) const
{ return __y; }
};
/** The @c operator() of the @c project1st functor takes two arbitrary
* arguments and returns the first one, while @c project2nd returns the
* second one. They are extensions provided by SGI.
*
* @addtogroup SGIextensions
* @{
*/
/// An \link SGIextensions SGI extension \endlink.
template <class _Arg1, class _Arg2>
struct project1st : public _Project1st<_Arg1, _Arg2> {};
/// An \link SGIextensions SGI extension \endlink.
template <class _Arg1, class _Arg2>
struct project2nd : public _Project2nd<_Arg1, _Arg2> {};
/** @} */
// extension documented next
template <class _Result>
struct _Constant_void_fun
{
typedef _Result result_type;
result_type _M_val;
_Constant_void_fun(const result_type& __v) : _M_val(__v) {}
const result_type&
operator()() const
{ return _M_val; }
};
template <class _Result, class _Argument>
struct _Constant_unary_fun
{
typedef _Argument argument_type;
typedef _Result result_type;
result_type _M_val;
_Constant_unary_fun(const result_type& __v) : _M_val(__v) {}
const result_type&
operator()(const _Argument&) const
{ return _M_val; }
};
template <class _Result, class _Arg1, class _Arg2>
struct _Constant_binary_fun
{
typedef _Arg1 first_argument_type;
typedef _Arg2 second_argument_type;
typedef _Result result_type;
_Result _M_val;
_Constant_binary_fun(const _Result& __v) : _M_val(__v) {}
const result_type&
operator()(const _Arg1&, const _Arg2&) const
{ return _M_val; }
};
/** These three functors are each constructed from a single arbitrary
* variable/value. Later, their @c operator()s completely ignore any
* arguments passed, and return the stored value.
* - @c constant_void_fun's @c operator() takes no arguments
* - @c constant_unary_fun's @c operator() takes one argument (ignored)
* - @c constant_binary_fun's @c operator() takes two arguments (ignored)
*
* The helper creator functions @c constant0, @c constant1, and
* @c constant2 each take a @a result argument and construct variables of
* the appropriate functor type.
*
* @addtogroup SGIextensions
* @{
*/
/// An \link SGIextensions SGI extension \endlink.
template <class _Result>
struct constant_void_fun
: public _Constant_void_fun<_Result>
{
constant_void_fun(const _Result& __v)
: _Constant_void_fun<_Result>(__v) {}
};
/// An \link SGIextensions SGI extension \endlink.
template <class _Result, class _Argument = _Result>
struct constant_unary_fun : public _Constant_unary_fun<_Result, _Argument>
{
constant_unary_fun(const _Result& __v)
: _Constant_unary_fun<_Result, _Argument>(__v) {}
};
/// An \link SGIextensions SGI extension \endlink.
template <class _Result, class _Arg1 = _Result, class _Arg2 = _Arg1>
struct constant_binary_fun
: public _Constant_binary_fun<_Result, _Arg1, _Arg2>
{
constant_binary_fun(const _Result& __v)
: _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {}
};
/// An \link SGIextensions SGI extension \endlink.
template <class _Result>
inline constant_void_fun<_Result>
constant0(const _Result& __val)
{ return constant_void_fun<_Result>(__val); }
/// An \link SGIextensions SGI extension \endlink.
template <class _Result>
inline constant_unary_fun<_Result, _Result>
constant1(const _Result& __val)
{ return constant_unary_fun<_Result, _Result>(__val); }
/// An \link SGIextensions SGI extension \endlink.
template <class _Result>
inline constant_binary_fun<_Result,_Result,_Result>
constant2(const _Result& __val)
{ return constant_binary_fun<_Result, _Result, _Result>(__val); }
/** @} */
/** The @c subtractive_rng class is documented on
* <a href="http://www.sgi.com/tech/stl/">SGI's site</a>.
* Note that this code assumes that @c int is 32 bits.
*
* @ingroup SGIextensions
*/
class subtractive_rng
: public unary_function<unsigned int, unsigned int>
{
private:
unsigned int _M_table[55];
size_t _M_index1;
size_t _M_index2;
public:
/// Returns a number less than the argument.
unsigned int
operator()(unsigned int __limit)
{
_M_index1 = (_M_index1 + 1) % 55;
_M_index2 = (_M_index2 + 1) % 55;
_M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2];
return _M_table[_M_index1] % __limit;
}
void
_M_initialize(unsigned int __seed)
{
unsigned int __k = 1;
_M_table[54] = __seed;
size_t __i;
for (__i = 0; __i < 54; __i++)
{
size_t __ii = (21 * (__i + 1) % 55) - 1;
_M_table[__ii] = __k;
__k = __seed - __k;
__seed = _M_table[__ii];
}
for (int __loop = 0; __loop < 4; __loop++)
{
for (__i = 0; __i < 55; __i++)
_M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55];
}
_M_index1 = 0;
_M_index2 = 31;
}
/// Ctor allowing you to initialize the seed.
subtractive_rng(unsigned int __seed)
{ _M_initialize(__seed); }
/// Default ctor; initializes its state with some number you don't see.
subtractive_rng()
{ _M_initialize(161803398u); }
};
// Mem_fun adaptor helper functions mem_fun1 and mem_fun1_ref,
// provided for backward compatibility, they are no longer part of
// the C++ standard.
template <class _Ret, class _Tp, class _Arg>
inline mem_fun1_t<_Ret, _Tp, _Arg>
mem_fun1(_Ret (_Tp::*__f)(_Arg))
{ return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
template <class _Ret, class _Tp, class _Arg>
inline const_mem_fun1_t<_Ret, _Tp, _Arg>
mem_fun1(_Ret (_Tp::*__f)(_Arg) const)
{ return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
template <class _Ret, class _Tp, class _Arg>
inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
mem_fun1_ref(_Ret (_Tp::*__f)(_Arg))
{ return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
template <class _Ret, class _Tp, class _Arg>
inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const)
{ return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
_GLIBCXX_END_NAMESPACE
#endif