Commit Graph

5085 Commits

Author SHA1 Message Date
Jonathan Wakely 48e968a720 gnu.ver: Adjust basic_ostream exports.
* config/abi/pre/gnu.ver: Adjust basic_ostream exports.
	* include/std/istream (basic_iostream(basic_iostream&&)): Pass *this
	to ostream constructor.
	* include/std/ostream (basic_ostream(basic_iostream*)): Change to take
	parameter by reference, to avoid ambiguity.
	* testsuite/27_io/basic_ostream/cons/char/null.cc: New.

From-SVN: r215510
2014-09-23 14:17:42 +01:00
Jonathan Wakely 7666d649f8 Include <bits/uses_allocator.h> in <stack> and <queue>.
* include/bits/stl_queue.h: Include missing header.
	* include/bits/stl_stack.h: Likewise.
	* testsuite/23_containers/priority_queue/requirements/
	uses_allocator.cc: New.
	* testsuite/23_containers/queue/requirements/uses_allocator.cc: New.
	* testsuite/23_containers/stack/requirements/uses_allocator.cc: New.

From-SVN: r215470
2014-09-22 17:01:53 +01:00
Jonathan Wakely 726d31362a mutex (try_lock): Do not swallow exceptions.
* include/std/mutex (try_lock): Do not swallow exceptions.
	* testsuite/30_threads/try_lock/4.cc: Fix test.

From-SVN: r215467
2014-09-22 15:54:35 +01:00
Jonathan Wakely 9b81754858 Make streams movable and swappable.
PR libstdc++/54316
	PR libstdc++/53626
	* config/abi/pre/gnu.ver: Add new exports.
	* config/io/basic_file_stdio.h (__basic_file): Support moving and
	swapping.
	* include/bits/basic_ios.h (basic_ios::move, basic_ios::swap):
	Likewise.
	* include/bits/ios_base.h (ios_base::_M_move, ios_base::_M_swap):
	Likewise.
	* include/bits/fstream.tcc (basic_filebuf): Likewise.
	* include/bits/move.h (__exchange): Define for C++11 mode.
	* include/ext/stdio_filebuf.h (stdio_filebuf): Support moving and
	swapping.
	* include/ext/stdio_sync_filebuf.h (stdio_sync_filebuf): Likewise.
	* include/std/fstream (basic_filebuf, basic_ifstream, basic_ofstream,
	basic_fstream): Likewise.
	* include/std/ios: Remove whitespace.
	* include/std/istream (basic_istream, basic_iostream): Support moving
	and swapping.
	* include/std/ostream (basic_ostream): Likewise.
	* include/std/sstream (basic_stringbuf, basic_istringstream,
	basic_ostringstream, basic_stringstream): Likewise.
	* include/std/streambuf (basic_streambuf): Do not default copy
	constructor and assignment on first declaration.
	* include/std/utility (exchange): Forward to __exchange.
	* testsuite/27_io/basic_filebuf/cons/char/copy_neg.cc: New.
	* src/c++11/Makefile.am: Add stream-related files.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++11/ext11-inst.cc (stdio_filebuf, stdio_sync_filebuf):
	New file for explicit instantiation definitions.
	* src/c++11/ios.cc: Move from src/c++98 to here.
	(ios_base::_M_move, ios_base::_M_swap): Define.
	* src/c++11/ios-inst.cc: Move from src/c++98 to here.
	* src/c++11/iostream-inst.cc: Likewise.
	* src/c++11/istream-inst.cc: Likewise.
	* src/c++11/ostream-inst.cc: Likewise.
	* src/c++11/sstream-inst.cc: Likewise.
	* src/c++11/streambuf-inst.cc: Likewise.
	* src/c++98/Makefile.am: Remove stream-related files.
	* src/c++98/Makefile.in: Regenerate.
	* src/c++98/ext-inst.cc (stdio_filebuf): Remove explicit
	instantiations.
	* src/c++98/misc-inst.cc (stdio_sync_filebuf): Likewise.
	* src/c++98/ios-inst.cc: Move to src/c++11/.
	* src/c++98/ios.cc: Move to src/c++11/.
	* src/c++98/iostream-inst.cc: Likewise.
	* src/c++98/istream-inst.cc: Likewise.
	* src/c++98/ostream-inst.cc: Likewise.
	* src/c++98/sstream-inst.cc: Likewise.
	* src/c++98/streambuf-inst.cc: Likewise.
	* testsuite/27_io/basic_filebuf/cons/char/copy_neg.cc: New.
	* testsuite/27_io/basic_fstream/cons/move.cc: New.
	* testsuite/27_io/basic_fstream/assign/1.cc: New.
	* testsuite/27_io/basic_ifstream/cons/move.cc: New.
	* testsuite/27_io/basic_ifstream/assign/1.cc: New.
	* testsuite/27_io/basic_istringstream/assign/1.cc: New.
	* testsuite/27_io/basic_istringstream/cons/move.cc: New.
	* testsuite/27_io/basic_ofstream/cons/move.cc: New.
	* testsuite/27_io/basic_ofstream/assign/1.cc: New.
	* testsuite/27_io/basic_ostringstream/assign/1.cc: New.
	* testsuite/27_io/basic_ostringstream/cons/move.cc: New.
	* testsuite/27_io/basic_stringstream/assign/1.cc: New.
	* testsuite/27_io/basic_stringstream/cons/move.cc: New.

From-SVN: r215463
2014-09-22 14:34:09 +01:00
Jonathan Wakely 4564acc36f regex.h (basic_regex): Rename _Ch_typeraits template parameters to _Ch_traits.
* include/bits/regex.h (basic_regex): Rename _Ch_typeraits template
	parameters to _Ch_traits.

From-SVN: r215261
2014-09-15 11:57:51 +01:00
Jonathan Wakely b6f866946b deque (__gnu_debug::deque): Make base class C++11 allocator aware.
* include/debug/deque (__gnu_debug::deque): Make base class C++11
	allocator aware.

From-SVN: r215223
2014-09-12 15:06:50 +01:00
Jonathan Wakely bc5022d011 re PR libstdc++/59603 (std::random_shuffle tries to swap element with itself)
PR libstdc++/59603
	* include/bits/stl_algo.h (random_shuffle): Prevent self-swapping.
	* testsuite/25_algorithms/random_shuffle/59603.cc: New.

From-SVN: r215219
2014-09-12 14:30:35 +01:00
Jonathan Wakely 8aed2f2f63 re PR libstdc++/63219 (Superfluous template parameter in match_result::format overload)
PR libstdc++/63219
	* include/bits/regex.h (match_results::format): Remove stray template
	parameter.
	* include/bits/regex_compiler.h (_RegexTranslator::_RegexTranslator):
	Remove parameter name to avoid -Wunused-parameter warning.
	* include/bits/regex_executor.h (_State_info::_State_info): Reorder
	mem-initializers to avoid -Wreorder warning.
	* include/bits/regex_executor.tcc (_Executor::_M_word_boundary):
	Remove parameter name to avoid -Wunused-parameter warning.
	* include/bits/regex_scanner.tcc (_Scanner::_M_advance): Add braces
	to avoid -Wempty-body warning when not in debug mode.

From-SVN: r215160
2014-09-11 11:01:20 +01:00
Jonathan Wakely fd18c76ac8 Make std::deque meet C++11 allocator requirements.
* include/bits/deque.tcc (deque::operator=(const deque&)): Handle
	allocator propagation.
	(deque::emplace_front, deque::emplace_back): Use allocator traits.
	(deque::_M_push_back_aux, deque::_M_push_front_aux): Likewise.
	(deque::_M_pop_back_aux, deque::_M_pop_front_aux): Likewise.
	* include/bits/stl_deque.h (__deque_buf_size): Add constexpr.
	(_Deque_iterator): Handle allocators with custom pointers.
	(_Deque_base): Likewise. Use allocator traits.
	(deque): Likewise. Add allocator-extended constructors.
	(deque::_M_move_assign1, deque::_M_move_assign2): Implement move
	assignment via tag dispatching.
	(deque::_M_replace_map): Replace existing data.
	* include/debug/deque (deque): Add allocator-extended constructors.
	* include/profile/deque (deque): Likewise.
	* testsuite/23_containers/deque/allocator/copy.cc: New.
	* testsuite/23_containers/deque/allocator/copy_assign.cc: New.
	* testsuite/23_containers/deque/allocator/ext_ptr.cc: New.
	* testsuite/23_containers/deque/allocator/minimal.cc: New.
	* testsuite/23_containers/deque/allocator/move.cc: New.
	* testsuite/23_containers/deque/allocator/move_assign-2.cc: New.
	* testsuite/23_containers/deque/allocator/move_assign.cc: New.
	* testsuite/23_containers/deque/allocator/noexcept.cc: New.
	* testsuite/23_containers/deque/allocator/swap.cc: New.
	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/deque/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/52591.cc: Test both the propagating
	and always-equal cases.

From-SVN: r215090
2014-09-09 18:29:32 +01:00
François Dumont da27f5567c hashtable_policy.h (_Prime_rehash_policy): Constructor noexcept qualified.
2014-09-06  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (_Prime_rehash_policy): Constructor
	noexcept qualified.
	(_Hash_code_base<>): All specialization default constructible if
	possible.
	(_Hashtable_base<>): Likewise.
	* include/bits/hashtable.h (_Hashtable<>()): Implementation defaulted.
	* include/bits/unordered_map.h (unordered_map<>::unordered_map()): New,
	implementation defaulted.
	(unordered_multimap<>::unordered_multimap()): Likewise.
	* include/bits/unordered_set.h
	(unordered_set<>::unordered_set()): Likewise.
	(unordered_multiset<>::unordered_multiset()): Likewise.
	* include/debug/unordered_map: Likewise.
	* include/debug/unordered_set: Likewise.
	* testsuite/23_containers/unordered_map/allocator/noexcept.cc
	(test04()): New.
	* testsuite/23_containers/unordered_multimap/allocator/noexcept.cc
	(test04()): New.
	* testsuite/23_containers/unordered_set/allocator/noexcept.cc
	(test04()): New.
	* testsuite/23_containers/unordered_multiset/allocator/noexcept.cc
	(test04()): New.

From-SVN: r214986
2014-09-06 07:38:48 +00:00
Jonathan Wakely fa794dc63e complex (complex): Define copy constructor and assignment operator as defaulted.
* include/std/complex (complex): Define copy constructor and
	assignment operator as defaulted. Improve Doxygen comments.

From-SVN: r214736
2014-08-29 17:28:19 +01:00
Jonathan Wakely 3cd4f356e9 re PR libstdc++/62159 (Missing headers for freestanding implementation)
PR libstdc++/62159
	* include/Makefile.am (install-freestanding-headers): Add missing
	C++11 headers.
	* include/Makefile.in: Regenerate.

From-SVN: r214580
2014-08-27 18:33:42 +01:00
Jonathan Wakely c6b3f349f5 re PR libstdc++/61841 (broken std::thread on Hurd)
PR libstdc++/61841
	* include/std/thread (thread::_M_start_thread): Declare new overload.
	(thread::thread<_Callable, _Args...>): Call new overload with an
	explicit reference to pthread_create.
	* src/c++11/thread.cc (thread::_M_start_thread): Add new overload.
	* config/abi/pre/gnu.ver: Export new function.

From-SVN: r213922
2014-08-13 19:40:10 +01:00
Sylvestre Ledru 07ec100911 profiler_hash_func.h: Fix a comment typo
2014-08-12  Sylvestre Ledru  <sylvestre@debian.org>

        * include/profile/impl/profiler_hash_func.h: Fix a comment typo

From-SVN: r213914
2014-08-13 16:28:39 +00:00
Paolo Carlini 429e4fdebf 2014-08-13 Paolo Carlini <paolo.carlini@oracle.com>
* Fix thinko in the last commit.

From-SVN: r213908
2014-08-13 11:56:45 +00:00
Paolo Carlini a3ee88517c re PR libstdc++/62118 (cases under libstdc++-v3/testsuite/ext/ failed on aarch64/arm)
2014-08-13  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/62118
	* include/ext/random.tcc (uniform_on_sphere_helper<2, _RealType>::
	operator()): Use std::hypot only when _GLIBCXX_USE_C99_MATH_TR1.

From-SVN: r213906
2014-08-13 11:24:35 +00:00
Jonathan Wakely caff45a635 * include/bits/basic_string.h (getline): Declare inline.
From-SVN: r213873
2014-08-12 16:48:23 +01:00
Jonathan Wakely 191736612d basic_string.h (getline): Qualify call to prevent ADL and add overloads for rvalue streams.
* include/bits/basic_string.h (getline): Qualify call to prevent ADL
	and add overloads for rvalue streams.
	* testsuite/21_strings/basic_string/inserters_extractors/char/12.cc:
	New.
	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/12.cc:
	New.

From-SVN: r213869
2014-08-12 16:19:53 +01:00
Ulrich Drepper 83a4216dd2 random.tcc (uniform_on_sphere_helper): Define.
* include/ext/random.tcc (uniform_on_sphere_helper): Define.
        (uniform_on_sphere_distribution::operator()): Use the new helper
        class for the implementation.

        * testsuite/ext/random/uniform_on_sphere_distribution/operators/
        equal.cc: Remove bogus part of comment.
        * testsuite/ext/random/uniform_on_sphere_distribution/operators/
        inequal.cc: Likewise.
        * testsuite/ext/random/uniform_on_sphere_distribution/operators/
        serialize.cc: Add check to verify result of serialzation and
        deserialization.
        * testsuite/ext/random/uniform_on_sphere_distribution/operators/
        generate.cc: New file.

From-SVN: r213779
2014-08-09 17:56:57 +00:00
Paolo Carlini 6a6bdc3d09 invoke.texi ([Wnarrowing]): Update for non-constants in C++11.
2014-08-09  Paolo Carlini  <paolo.carlini@oracle.com>

	* doc/invoke.texi ([Wnarrowing]): Update for non-constants in C++11.

gcc/cp
2014-08-09  Paolo Carlini  <paolo.carlini@oracle.com>

	* typeck2.c (check_narrowing): Add tsubst_flags_t parameter, change
	return type to bool; in C++11 for constants give errors, not pedwarns.
	* cp-tree.h (check_narrowing): Adjust declaration.
	* call.c (convert_like_real): Update calls.
	* semantics.c (finish_compound_literal): Likewise.

gcc/testsuite
2014-08-09  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/cpp0x/Wnarrowing1.C: Adjust for errors.
	* g++.dg/cpp0x/enum29.C: Adjust.

/libstdc++-v3
2014-08-09  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/ext/pod_char_traits.h (char_traits<__gnu_cxx::
	character<_Value, _Int, _St> >::eof): Fix vs narrowing conversion.

From-SVN: r213776
2014-08-09 08:58:33 +00:00
François Dumont 013078982d re PR libstdc++/61667 (setting max_load_factor of unordered_map cause buckets shrink)
2014-08-09  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/61667
	* include/bits/hashtable.h (_Hashtable<>::__rehash_policy): Use
	_M_need_rehash to initialize the rehash policy and check if a rehash is
	needed.
	* testsuite/23_containers/unordered_map/modifiers/61667.cc: New.

From-SVN: r213775
2014-08-09 08:00:59 +00:00
Jonathan Wakely db0b7db338 future (__location_invariant): Move specializations after preprocessor condition.
* include/std/future (__location_invariant): Move specializations
	after preprocessor condition.

From-SVN: r213744
2014-08-07 23:54:53 +01:00
Jonathan Wakely 4e48c10968 future (_State_baseV2::_M_set_result): Pass pointers to _M_do_set.
* include/std/future (_State_baseV2::_M_set_result): Pass pointers to
	_M_do_set.
	(_State_baseV2::_M_do_set): Change parameters to pointers.
	(_State_baseV2::_Setter): Change _M_arg from reference to pointer.
	(_State_baseV2::__setter): Initialize _Setter with pointers.
	(_State_baseV2::__setter(promise<void>*)): Remove overload.
	(promise::set_value, promise::set_exception): Pass setter directly
	to _M_set_result.
	(_State_baseV2::_Task_setter): Add template parameter for callable
	type and replace std::function member with pointer to that type.
	Change _M_result member from reference to pointer.
	(_State_baseV2::_S_task_setter): Change parameter to lvalue reference
	and initialize _Task_setter with pointers.
	(__location_invariant): Specialize for _Setter and _Task_setter.

From-SVN: r213737
2014-08-07 21:13:52 +01:00
Jonathan Wakely d0ef19a0b2 stl_list.h (_List_base::_List_base(_List_base&&)): Optimize.
* include/bits/stl_list.h (_List_base::_List_base(_List_base&&)):
	Optimize.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
	Likewise.

From-SVN: r213716
2014-08-07 18:25:13 +01:00
Jonathan Wakely f4081d133f re PR libstdc++/61947 (Ambiguous calls when constructing std::tuple)
PR libstdc++/61947
	* include/std/tuple (_Head_base): Use allocator_arg_t parameters to
	disambiguate unary constructors.
	(_Tuple_impl): Pass allocator_arg_t arguments.
	* testsuite/20_util/tuple/61947.cc: New.
	* testsuite/20_util/uses_allocator/cons_neg.cc: Adjust dg-error line.

From-SVN: r213221
2014-07-29 18:30:34 +01:00
Jonathan Wakely aec20dcf39 re PR libstdc++/61946 (rope construction, passing allocator referenct without const)
PR libstdc++/61946
	* include/ext/rope (rope::rope(char_producer<_CharT>*, size_t, bool,
	const allocator_type&)): Pass non-const allocator to
	_S_new_RopeFunction.
	* testsuite/ext/rope/61946.cc: New.

From-SVN: r213220
2014-07-29 18:30:25 +01:00
Ed Smith-Rowland 1c4ff014fe PR libstdc++/60037 - SIGFPE in std::generate_canonical<unsigned int...>
2014-07-29  Ed Smith-Rowland  <3dw4rd@verizon.net>

	PR libstdc++/60037 - SIGFPE in std::generate_canonical<unsigned int...>
	* include/bits/random.h (_Adaptor): static_assert for non floating-point
	result type.
	* include/bits/random.tcc (generate_canonical): Ditto.
	* include/ext/random.tcc (hypergeometric_distribution::operator()):
	Use double as a rng result type.
	* testsuite/26_numerics/random/pr60037-neg.cc: New.
	* testsuite/ext/random/hypergeometric_distribution/pr60037.cc: New.

From-SVN: r213207
2014-07-29 14:56:45 +00:00
Ed Smith-Rowland 0a9f0ecb4c string_view: Make the literal operators constexpr like the ctors they call.
2014-07-25  Ed Smith-Rowland  <3dw4rd@verizon.net>

	* include/experimental/string_view: Make the literal operators
	constexpr like the ctors they call.

From-SVN: r213037
2014-07-25 03:47:46 +00:00
Paolo Carlini 026ae646e7 random: Minor formatting and cosmetic tweaks.
2014-07-16  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/ext/random: Minor formatting and cosmetic tweaks.
	(uniform_on_sphere_distribution<>::operator==
	(const uniform_on_sphere_distribution&,
	const uniform_on_sphere_distribution&)): Compare the _M_nds.
	(uniform_on_sphere_distribution<>::reset): Reset _M_nd.
	(operator!=(const uniform_on_sphere_distribution&,
	const uniform_on_sphere_distribution&)): Adjust.
	* include/ext/random.tcc: Minor cosmetc tweaks.

From-SVN: r212674
2014-07-16 15:47:26 +00:00
Tim Shen 4228f9328c re PR libstdc++/61720 (std::regex_search matches incorrectly)
PR libstdc++/61720
	* include/bits/regex_executor.tcc (_Executor<>::_M_main_dispatch):
	Clear match queue for next use.
	* testsuite/28_regex/algorithms/regex_search/61720.cc: New file.

From-SVN: r212539
2014-07-15 04:28:51 +00:00
Ulrich Drepper b40d9361f9 random.tcc: Unfortunately more fixes for operator>> and operator<< for...
* include/ext/random.tcc: Unfortunately more fixes for
	operator>> and operator<< for uniform_on_sphere_distribution.

From-SVN: r212517
2014-07-14 12:09:30 +00:00
Ulrich Drepper 5c8efaf2fb random.tcc: Fix operator>> and operator<< for uniform_on_sphere_distribution.
* include/ext/random.tcc: Fix operator>> and operator<< for
	uniform_on_sphere_distribution.

From-SVN: r212496
2014-07-13 16:43:01 +00:00
Ulrich Drepper 863a2c7ecc random: Add uniform_on_sphere_distribution definition.
2014-07-12  Ulrich Drepper  <drepper@gmail.com>

	* include/ext/random: Add uniform_on_sphere_distribution definition.
	* include/ext/random.tcc: Add out-of-band member function definitions
	for uniform_on_sphere_distribution.
	* testsuite/ext/random/uniform_on_sphere_distribution/
	cons/default.cc: New file.
	* testsuite/ext/random/uniform_on_sphere_distribution/
	operators/equal.cc: New file.
	* testsuite/ext/random/uniform_on_sphere_distribution/
	operators/inequal.cc: New file.
	* testsuite/ext/random/uniform_on_sphere_distribution/
	operators/serialize.cc: New file.

From-SVN: r212492
2014-07-13 11:07:44 +00:00
Edward Smith-Rowland 8daac7749f Add the logistic_distribution as an extension.
2014-07-11  Edward Smith-Rowland  <3dw4rd@verizon.net>

	Add the logistic_distribution as an extension.
	* include/ext/random: Add the logistic_distribution.
	* include/ext/random.tcc: Add the logistic_distribution.
	* testsuite/ext/random/logistic_distribution/cons/parms.cc: New.
	* testsuite/ext/random/logistic_distribution/cons/default.cc: New.
	* testsuite/ext/random/logistic_distribution/requirements/typedefs.cc:
	New.
	* testsuite/ext/random/logistic_distribution/operators/inequal.cc: New.
	* testsuite/ext/random/logistic_distribution/operators/equal.cc: New.
	* testsuite/ext/random/logistic_distribution/operators/serialize.cc:
	New.

From-SVN: r212476
2014-07-12 01:32:20 +00:00
Jonathan Wakely 7757d79bfc any (any::_Manager_alloc::_Data): Reorder tuple members to simplify pretty printing.
* include/experimental/any (any::_Manager_alloc::_Data): Reorder
	tuple members to simplify pretty printing.
	(any::_Manager_alloc::_Data::_M_construct): Fix uses-allocator
	construction.
	* testsuite/experimental/any/cons/4.cc: New.

From-SVN: r212435
2014-07-10 19:08:35 +01:00
Jonathan Wakely b3771d3f6f allocated_ptr.h (__allocated_ptr::operator=): Add missing return.
* include/bits/allocated_ptr.h (__allocated_ptr::operator=): Add
	missing return.
	* include/experimental/any: Remove unused header.
	* include/std/functional (_Maybe_wrap_member_pointer): Fix comments.
	* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
	* testsuite/util/testsuite_regex.h: Move include guard.

From-SVN: r212360
2014-07-08 14:22:14 +01:00
Tim Shen 5bcb66dffa re PR testsuite/61061 (FAIL: g++.dg/inherit/covariant7.C)
PR libstdc++/61061
	PR libstdc++/61582
	* include/bits/regex_automaton.h (_NFA<>::_M_insert_state): Add
	a NFA state limit. If it's exceeded, regex_constants::error_space
	will be throwed.
	* include/bits/regex_automaton.tcc (_StateSeq<>::_M_clone): Use
	map (which is sparse) instead of vector. This reduce n times clones'
	cost from O(n^2) to O(n).
	* include/std/regex: Add map dependency.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/61601.cc: New
	testcase.

From-SVN: r212185
2014-07-01 03:05:45 +00:00
Tim Shen ad9ec7b3c5 re PR libstdc++/61424 (std::regex matches right to left, not leftmost longest)
PR libstdc++/61424
	* include/bits/regex.tcc (__regex_algo_impl<>): Use DFS for ECMAScript,
	not just regex containing back-references.
	* include/bits/regex_compiler.tcc (_Compiler<>::_M_disjunction):
	exchange _M_next and _M_alt for alternative operator,
	making matching from left to right.
	* include/bits/regex_executor.h (_State_info<>::_M_get_sol_pos):
	Add position tracking fom DFS.
	* include/bits/regex_executor.tcc (_Executor<>::_M_main_dispatch,
	_Executor<>::_M_dfs): Likewise.
	* include/bits/regex_scanner.h: Remove unused enum entry.
	* testsuite/28_regex/algorithms/regex_search/61424.cc: New
	testcase from PR.

From-SVN: r212184
2014-07-01 02:10:31 +00:00
Jonathan Wakely 906314419f shared_ptr_base.h (__shared_ptr::_Deleter): Fix parameter type.
* include/bits/shared_ptr_base.h (__shared_ptr::_Deleter): Fix
	parameter type.

From-SVN: r212027
2014-06-26 13:43:59 +01:00
Jonathan Wakely b925bf594a Makefile.am: Add new header.
* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/bits/allocated_ptr.h (__allocated_ptr, __allocate_guarded):
	New RAII utilities for working with allocators.
	* include/bits/shared_ptr_base.h (_Sp_counted_deleter): Define
	__allocator_type typedef and use new __allocated_ptr type.
	(_Sp_counted_ptr_inplace): Likewise.
	(__shared_count::__shared_count, __shared_ptr::__shared_ptr): Use
	__allocate_guarded to to simplify exception handling.
	* include/experimental/any (any::_Manager_alloc::_S_alloc): Likewise.
	* include/std/future (_Result_alloc::_M_destroy): Likewise.
	(_Result_alloc::_S_allocate_result): Likewise.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line number.
	* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/no_rtti.cc: New.
	* testsuite/20_util/shared_ptr/creation/alloc.cc: Test allocator
	with fancy pointer.
	* testsuite/30_threads/promise/cons/alloc.cc: Likewise.

From-SVN: r211996
2014-06-25 21:54:46 +01:00
Jonathan Wakely 484dc5996f alloc_traits.h (__alloc_rebind): Define alias template.
* include/bits/alloc_traits.h (__alloc_rebind): Define alias template.
	* include/bits/forward_list.h (_Fwd_list_base): Use __alloc_rebind.
	* include/bits/hashtable_policy.h (_Insert_base, _Hashtable_alloc):
	Likewise.
	* include/ext/alloc_traits.h: Fix comment.

From-SVN: r211995
2014-06-25 21:54:34 +01:00
Jonathan Wakely 3fa591d4b4 functexcept.h (__throw_out_of_range_fmt): Change attribute to __gnu_printf__ archetype to prevent warnings for "%zu".
* include/bits/functexcept.h (__throw_out_of_range_fmt): Change
	attribute to __gnu_printf__ archetype to prevent warnings for "%zu".
	* include/bits/locale_facets_nonio.tcc (time_get::do_get_weekday):
	Remove unused typedef.
	(time_get::do_get_monthname): Likewise.
	* include/bits/stl_tree.h: Add system_header pragma.
	* include/ext/stdio_sync_filebuf.h (stdio_sync_filebuf::file): Remove
	redundant const-qualifier.
	* include/std/complex (complex::__rep): Use _GLIBCXX_CONSTEXPR macro
	instead of _GLIBCXX_USE_CONSTEXPR.

From-SVN: r211951
2014-06-24 16:44:17 +01:00
Jonathan Wakely 7ce56fc845 any (any_v1): Rename namespace to fundamentals_v1.
* include/experimental/any (any_v1): Rename namespace to
	fundamentals_v1. Change string returned by bad_any_cast::what().
	* include/experimental/optional (fundamentals_v1): Add namespace.
	* include/experimental/string_view (fundamentals_v1): Likewise.
	* testsuite/experimental/any/typedefs.cc: New.
	* testsuite/experimental/optional/typedefs.cc: New.
	* testsuite/experimental/string_view/typedefs.cc: New.

From-SVN: r211920
2014-06-23 23:12:31 +01:00
Jonathan Wakely 83387bbd28 parse_numbers.h (_Number_help): Fix divide-by-zero.
* include/bits/parse_numbers.h (_Number_help): Fix divide-by-zero.
	* include/std/chrono (_Checked_integral_constant): Allow zero.
	* testsuite/20_util/duration/literals/values.cc: Test non-positive
	values and digit separators.

From-SVN: r211890
2014-06-23 12:30:32 +01:00
Jonathan Wakely fb3bc97798 any (any_cast): Combine duplicate doxygen comments.
* include/experimental/any (any_cast): Combine duplicate doxygen
	comments.
	* include/experimental/string_view (basic_string_view): Update
	doxygen comment.
	* include/std/bitset (bitset): Move to Doxygen 'utilities' group.
	* include/tr2/dynamic_bitset (_Bool2UChar): Remove unused templates.
	(dynamic_bitset): Improve Doxygen comments.
	* include/tr2/dynamic_bitset.tcc (operator>>): Improve Doxygen
	comment.

From-SVN: r211672
2014-06-14 21:43:07 +01:00
Jonathan Wakely 10d43d2fb4 api.xml: Link to more recent API docs.
* doc/xml/api.xml: Link to more recent API docs.
	* include/bits/allocator.h: Fix link in doxygen comment.
	* include/bits/char_traits.h: Likewise.
	* include/bits/ios_base.h: Likewise.
	* include/bits/stl_map.h: Likewise.
	* include/bits/stl_multimap.h: Likewise.
	* include/bits/stl_multiset.h: Likewise.
	* include/bits/stl_set.h: Likewise.
	* include/bits/unordered_map.h: Likewise.
	* include/bits/unordered_set.h: Likewise.
	* include/ext/mt_allocator.h: Likewise.
	* include/std/fstream: Likewise.
	* include/std/iosfwd: Likewise.
	* include/std/ostream: Likewise.
	* include/std/sstream: Likewise.
	* include/std/streambuf: Likewise.
	* doc/html/*: Regenerate.

From-SVN: r211671
2014-06-14 21:22:10 +01:00
Jonathan Wakely 0054134919 user.cfg.in (INPUT): Add C++14 headers.
* doc/doxygen/user.cfg.in (INPUT): Add C++14 headers.
	* include/bits/random.h (subtract_with_carry_engine): Fix Doxygen
	warnings.
	* include/bits/shared_ptr.h (shared_ptr): Likewise.
	* include/bits/unordered_map.h (unordered_map, unordered_multimap):
	Likewise.
	* include/bits/unordered_set.h (unordered_set, unordered_multiset):
	Likewise.
	* include/parallel/list_partition.h (__parallel::list_partition):
	Likewise.
	* include/std/iomanip (quoted): Likewise.
	* include/tr2/dynamic_bitset (dynamic_bitset): Likewise.

From-SVN: r211670
2014-06-14 17:33:53 +01:00
Jonathan Wakely e8043fa674 status_cxx2014.xml: Update Fundamentals TS status.
* doc/xml/manual/status_cxx2014.xml: Update Fundamentals TS status.
	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/experimental/any: New.
	* include/ext/aligned_buffer.h (__aligned_buffer(nullptr_t)): New
	constructor.
	* testsuite/experimental/any/assign/1.cc: New.
	* testsuite/experimental/any/assign/2.cc: New.
	* testsuite/experimental/any/cons/1.cc: New.
	* testsuite/experimental/any/cons/2.cc: New.
	* testsuite/experimental/any/cons/3.cc: New.
	* testsuite/experimental/any/misc/any_cast.cc: New.
	* testsuite/experimental/any/misc/any_cast_neg.cc: New.
	* testsuite/experimental/any/misc/any_cast_no_rtti.cc: New.
	* testsuite/experimental/any/misc/swap.cc: New.
	* testsuite/experimental/any/modifiers/1.cc: New.
	* testsuite/experimental/any/observers/type.cc: New.

From-SVN: r211669
2014-06-14 17:00:56 +01:00
Jonathan Wakely 060269c481 re PR libstdc++/61390 (error in nested template parameter in ext/pb_ds header file)
PR libstdc++/61390
	* include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
	(bin_search_tree_traits): Do not redeclare template-parameters.
	* testsuite/util/testsuite_iterators.h (test_container): Likewise.

From-SVN: r211421
2014-06-10 19:09:18 +01:00
Jonathan Wakely 45b4a79657 beta_function.tcc: Fix spelling of include guard in comment.
* include/tr1/beta_function.tcc: Fix spelling of include guard in
	comment.

From-SVN: r211373
2014-06-09 12:52:20 +01:00
Ed Smith-Rowland 25608e3a5f DR 2344 - std::quoted doesn't respect padding
2014-06-06  Ed Smith-Rowland  <3dw4rd@verizon.net>

	DR 2344 - std::quoted doesn't respect padding
	* include/std/iomanip: Allow for padding in quoted inserters.
	* testsuite/27_io/manipulators/standard/char/dr2344.cc: New.
	* testsuite/27_io/manipulators/standard/wchar_t/dr2344.cc: New.

From-SVN: r211340
2014-06-07 03:40:30 +00:00
Jonathan Wakely 097f0bcf65 regex_compiler.h (__detail::_BracketMatcher): Reorder members to avoid wasted space when not using a cache.
* include/bits/regex_compiler.h (__detail::_BracketMatcher): Reorder
	members to avoid wasted space when not using a cache.
	(__detail::_BracketMatcher::_M_ready()): Sort and deduplicate set.
	* include/bits/regex_compiler.tcc
	(__detail::_BracketMatcher::_M_apply(_CharT, false_type)): Use binary
	search on set.
	* include/bits/regex_executor.h (__detail::_Executor::_Match_mode):
	New enumeration type to indicate match mode.
	(__detail::_Executor::_State_info): New type holding members only
	needed in BFS-mode. Replace unique_ptr<vector<bool>> with
	unique_ptr<bool[]>.
	(__detail::_Executor::_M_rep_once_more, __detail::_Executor::_M_dfs):
	Replace template parameter with run-time function parameter.
	(__detail::_Executor::_M_main): Likewise. Dispatch to ...
	(__detail::_Executor::_M_main_dispatch): New overloaded functions to
	implement DFS and BFS mode.
	* include/bits/regex_executor.tcc (__detail::_Executor::_M_main):
	Split implementation into ...
	(__detail::_Executor::_M_main_dispatch): New overloaded functions.
	(__detail::_Executor::_M_lookahead): Create nested executor on stack.
	(__detail::_Executor::_M_rep_once_more): Pass match mode as function
	argument instead of template argument.
	(__detail::_Executor::_M_dfs): Likewise.
	* include/bits/regex_scanner.tcc: Fix typos in comments.
	* testsuite/performance/28_regex/range.cc: New.

From-SVN: r211143
2014-06-02 20:36:14 +01:00
Jonathan Wakely 315eb4bb08 condition_variable (condition_variable_any::_Unlock): Do not swallow __forced_unwind.
* include/std/condition_variable (condition_variable_any::_Unlock): Do
	not swallow __forced_unwind.
	* include/std/future (__future_base::_Task_setter): Likewise.
	(__future_base::_Async_state_impl): Turn __forced_unwind into broken
	promise and rethrow.
	* include/std/mutex (try_lock): Likewise.
	* testsuite/30_threads/async/forced_unwind.cc: New.
	* testsuite/30_threads/packaged_task/forced_unwind.cc: New.

From-SVN: r211138
2014-06-02 16:45:09 +01:00
Rüdiger Sonderfeld d371802725 type_traits (__strictest_alignment): New helper struct.
2014-06-02  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
	    Jonathan Wakely  <jwakely@redhat.com>

	* libstdc++-v3/include/std/type_traits (__strictest_alignment): New
	helper struct.
	(aligned_union): New struct (C++11).
	(aligned_union_t): New type alias (C++14).
	* doc/xml/manual/status_cxx2011.xml: Update.
	* libstdc++-v3/testsuite/20_util/aligned_union/1.cc: New file.
	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
	line number.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>

From-SVN: r211137
2014-06-02 14:55:14 +01:00
Jonathan Wakely 314efb66cf uses_allocator.h (__uses_allocator_helper): Simplify.
* include/bits/uses_allocator.h (__uses_allocator_helper): Simplify.
	(__uses_allocator_arg): Remove unused type.
	(__uses_alloc0): Turn into a trivial type.
	(__uses_alloc): Add missing template parameter in primary template.
	(__uses_alloc_impl): Rename to __uses_alloc_t.

From-SVN: r211121
2014-06-01 23:35:42 +01:00
Jonathan Wakely 16545743c6 re PR libstdc++/61374 (string_view::operator string() is buggy)
PR libstdc++/61374
	* include/experimental/string_view (operator basic_string): Correct
	order of arguments.
	(to_string): Replace with member function.
	Add inline specifiers. Remove unused header. Remove _S_empty_rep and
	allow _M_str to be null.
	* testsuite/experimental/string_view/cons/char/1.cc: Adjust to new
	default constructor semantics.
	* testsuite/experimental/string_view/cons/wchar_t/1.cc: Likewise.
	* testsuite/experimental/string_view/operations/copy/char/1.cc: Fix
	copyright dates. Remove unused header.
	* testsuite/experimental/string_view/operations/copy/wchar_t/1.cc:
	Likewise.
	* testsuite/experimental/string_view/operations/data/char/1.cc:
	Fix copyright dates. Adjust to new default constructor semantics.
	* testsuite/experimental/string_view/operations/data/wchar_t/1.cc:
	Likewise.
	* testsuite/experimental/string_view/operations/to_string/1.cc: New.

From-SVN: r211113
2014-06-01 18:23:41 +01:00
Jonathan Wakely 710d672b08 bool_set: Use UTF-8 for accented characters.
* include/tr2/bool_set: Use UTF-8 for accented characters.
	* scripts/run_doxygen: Handle Doxygen 1.8.x change.
	* doc/doxygen/user.cfg.in: Update to Doxygen 1.8.6 format. Set
	QUIET=YES, remove obsolete SYMBOL_CACHE_SIZE tag.

From-SVN: r211053
2014-05-29 15:04:43 +01:00
Jonathan Wakely ecb249ddf2 re PR libstdc++/61329 (#include <regex> and _GLIBCXX_DEBUG causes multiple symbol definition.)
PR libstdc++/61329
	* include/bits/regex_automaton.tcc (_State_base::_M_print): Add
	inline specifier.
	(_State_base::_M_dot): Likewise.

From-SVN: r210968
2014-05-27 12:14:17 +01:00
Paolo Carlini 5a2b79e24d map.h: Fix typo in comment; minor formatting fix.
2014-05-25  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/profile/map.h: Fix typo in comment; minor formatting fix.
	* include/profile/multimap.h: Likewise.
	* include/profile/set.h: Likewise.
	* include/profile/multiset.h: Likewise.

From-SVN: r210912
2014-05-25 08:38:01 +00:00
François Dumont f3de79d43a array: Clean useless white chars.
2014-05-24  François Dumont  <fdumont@gcc.gnu.org>

	* include/profile/array: Clean useless white chars.
	* include/profile/base.h: Likewise.
	* include/profile/iterator_tracker.h: Likewise.
	* include/profile/bitset: Code cleanup and remove not instrumented code.
	* include/profile/deque: Likewise.
	* include/profile/forward_list: Likewise.
	* include/profile/list (std::__profile::_List_profile<>): New.
	(std::__profile::list<>): Inherit from latter and adapt.
	* include/profile/impl/profiler_map_to_unordered_map.h: Generalize
	advise to match any ordered to unordered container conversion.
	* include/profile/ordered_base.h (std::__profile::_Ordered_profile<>):
	New.
	* include/Makefile.am: Add latter.
	* include/Makefile.in: Regenerate.
	* include/profile/map.h (std::__profile::map<>): Inherit from latter,
	remove not instrumented code.
	* include/profile/multimap.h (std::__profile::multimap<>): Likewise.
	* include/profile/set.h (std::__profile::set<>): Likewise.
	* include/profile/multiset.h (std::__profile::multiset<>): Likewise.
	* include/profile/unordered_base.h: Add some line feed.
	* include/profile/unordered_map: Clean useless white chars and replace
	spaces with tabs.
	* include/profile/unordered_set: Likewise.
	* include/profile/vector (std::__profile::_Vector_profile_pre<>): New.
	(std::__profile::_Vector_profile_post<>): New.
	(std::__profile::vector<>): Inherit from latter and adapt.

From-SVN: r210900
2014-05-24 20:59:00 +00:00
François Dumont 95539f21f5 re PR libstdc++/61143 (Arithmetic exception on emplacing into unordered_map moved out)
2014-05-21  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/61143
	* include/bits/hashtable.h: Fix move semantic to leave hashtable in a
	usable state.
	* testsuite/23_containers/unordered_set/61143.cc: New.
	* testsuite/23_containers/unordered_set/modifiers/swap.cc: New.

From-SVN: r210726
2014-05-21 19:51:05 +00:00
Jonathan Wakely 21e2806a8f re PR libstdc++/61269 (<type_traits> includes <cstdint> inside std namespace)
PR libstdc++/61269
	* include/std/type_traits: Move include outside namespace std.
	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
	Likewise.

From-SVN: r210715
2014-05-21 16:09:37 +01:00
Tim Shen 4dae67e090 re PR libstdc++/61227 ([C++11] Regex [\w] does not work)
2014-05-20  Tim Shen  <timshen91@gmail.com>

	PR libstdc++/61227
	* include/bits/regex_compiler.h
	(_BracketMatcher<>::_M_add_character_class): Add negative character
	class support.
	* include/bits/regex_compiler.tcc (_BracketMatcher<>::_M_apply):
	Likewise.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc:
	Add more testcases.

From-SVN: r210630
2014-05-20 04:31:54 +00:00
Jonathan Wakely a0eaa08ceb re PR libstdc++/60966 (std::call_once sometime hangs)
PR libstdc++/60966
	* include/std/future (__future_base::_State_baseV2::_M_set_result):
	Pass lock into _M_do_set and hold it until the function returns.
	Signal condition variable after call_once completes.
	(__future_base::_State_baseV2::_M_do_set): Use lock argument. Do not
	signal here.
	* testsuite/30_threads/promise/60966.cc: New.

From-SVN: r210556
2014-05-17 13:58:46 +01:00
Jonathan Wakely cd1464dbc6 parse_numbers.h (__parse_int::_Number_help): Check for overflow.
* include/bits/parse_numbers.h (__parse_int::_Number_help): Check for
	overflow.
	* include/std/chrono (chrono_literals::__select_type::_Select_type):
	Remove.
	(chrono_literals::_Checked_integral_constant): Define.
	Simplify UDL operator templates and check for overflow.
	* testsuite/20_util/duration/literals/range.cc: New.

From-SVN: r210513
2014-05-16 12:08:49 +01:00
Ed Smith-Rowland a2f4bd2ae1 re PR libstdc++/61166 (overflow when parse number in std::duration operator"")
2014-05-15  Ed Smith-Rowland  <3dw4rd@verizon.net>
	    Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/61166
	* include/bits/parse_numbers.h: Use integral_constant to remove
	duplication and simplify.
	* testsuite/20_util/duration/literals/61166.cc: New.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>

From-SVN: r210511
2014-05-16 10:30:57 +01:00
Jonathan Wakely c0eef1c8f2 re PR libstdc++/60326 (Incorrect type from std::make_unsigned<wchar_t>)
PR libstdc++/60326
	* include/std/type_traits (__make_unsigned, __make_signed): Define
	specializations for wchar_t, char16_t and char32_t.
	* testsuite/20_util/make_signed/requirements/typedefs-4.cc: New.
	* testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Correct
	test for make_unsigned<volatile wchar_t>.
	* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
	Likewise.
	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
	line number.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
	Likewise.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
	Likewise.

From-SVN: r210473
2014-05-15 13:31:05 +01:00
Jonathan Wakely 3a004764ec tuple (tuple_size<cv _Tp>): Implement LWG 2313.
* include/std/tuple (tuple_size<cv _Tp>): Implement LWG 2313.
	* include/std/array (tuple_size, tuple_element): Add Doxygen comments.
	* include/std/utility (tuple_size, tuple_element): Likewise.
	* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
	Adjust dg-error line number.

From-SVN: r210470
2014-05-15 11:35:29 +01:00
Jonathan Wakely af222e7486 tuple (__add_c_ref, [...]): Remove.
* include/std/tuple (__add_c_ref, __add_ref, __add_r_ref): Remove.
	(__tuple_element_t): Define.
	(tuple_element): Use __tuple_element_t.
	(__cv_tuple_size): Define.
	(tuple_size<cv _Tp>): Use __cv_tuple_size.
	(get, __get_helper, __get_helper2): Remove uses of __add_ref etc.
	(get<_Tp>(tuple<_Types...>&&)): Use forward instead of move.
	(__tuple_compare): Remove size check, re-order parameters.
	(operator==, operator<): Use static_assert to check requirements.
	* include/std/functional (__volget): use __tuple_element_t.
	* testsuite/20_util/tuple/element_access/get_by_type.cc: Test rvalues.
	* testsuite/20_util/uses_allocator/cons_neg.cc: Adjust dg-error.

From-SVN: r210447
2014-05-14 23:16:35 +01:00
Jonathan Wakely b82f988e8d re PR libstdc++/60497 (unique_ptr<T> tries to complete its type T even though it's not required to be a complete type)
PR libstdc++/60497
	* include/debug/array (get): Qualify call to other get overload.
	* include/profile/array (get): Likewise.
	* include/std/array (get): Likewise.
	* include/std/functional (_Mu, _Bind, _Bind_result): Qualify std::get.
	* include/std/mutex (unique_lock, call_once): Use __addressof.
	(__unlock_impl): Remove unused template.
	(__try_to_lock): Declare inline.
	(__try_lock_impl::__do_try_lock): Qualify function calls.
	(lock): Avoid narrowing conversion.
	* testsuite/20_util/bind/60497.cc: New.
	* testsuite/23_containers/array/element_access/60497.cc: New.
	* testsuite/30_threads/call_once/60497.cc: New.
	* testsuite/30_threads/unique_lock/cons/60497.cc: New.

From-SVN: r210388
2014-05-13 18:22:08 +01:00
Jonathan Wakely 75e75a087d re PR libstdc++/60497 (unique_ptr<T> tries to complete its type T even though it's not required to be a complete type)
PR libstdc++/60497
	* include/std/tuple (get, __tuple_compare): Qualify more calls to
	prevent ADL. Cast comparison results to bool.
	* testsuite/20_util/tuple/60497.cc: Test accessing rvalues.
	* testsuite/20_util/tuple/comparison_operators/overloaded.cc: New.

From-SVN: r210366
2014-05-13 12:18:01 +01:00
Jonathan Wakely 07e4f10aa6 iostream: Fix URL in comment.
* include/std/iostream: Fix URL in comment.
	* src/c++98/ios_init.cc: Fix path in comment.

From-SVN: r210232
2014-05-08 20:01:51 +01:00
Jonathan Wakely 2735097a55 re PR libstdc++/13860 (Poor error messages on invalid template parameters for basic_filebuf)
PR libstdc++/13860
	* include/std/fstream (basic_filebuf): Enforce requirements on traits.

From-SVN: r210231
2014-05-08 19:30:14 +01:00
Jonathan Wakely f0fd118f53 re PR libstdc++/57394 ([C++11] basic_streambuf incorrect copy constructor / copy assignment access specifier)
PR libstdc++/57394
	* include/bits/ios_base.h (ios_base(const ios_base&)): Define as
	deleted for C++11.
	(operator=(const ios_base&)): Likewise.
	* include/std/streambuf: Remove trailing whitespace.
	(basic_streambuf(const basic_streambuf&)): Fix initializer for
	_M_out_end. Define as defaulted for C++11.
	(operator=(const basic_streambuf&)): Define as defaulted for C++11.
	(swap(basic_streambuf&)): Define for C++11.
	* testsuite/27_io/basic_streambuf/cons/57394.cc: New.

From-SVN: r210228
2014-05-08 18:17:06 +01:00
Jonathan Wakely bbf264c9b2 re PR libstdc++/61086 (ubsan detects undefined behaviour in the standard library)
PR libstdc++/61086
	* include/bits/stl_iterator.h (__normal_iterator::_M_const_cast):
	Remove.
	* include/bits/stl_vector.h (vector::insert, vector::erase): Use
	arithmetic to obtain a mutable iterator from const_iterator.
	* include/bits/vector.tcc (vector::insert): Likewise.
	* include/debug/vector (vector::erase): Likewise.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
	Likewise.

From-SVN: r210162
2014-05-07 15:43:22 +01:00
Jonathan Wakely 2588652e17 re PR libstdc++/61023 (set/map move assignment doesn't move (or copy) the comparator)
PR libstdc++/61023
	* include/bits/stl_tree.h (_Rb_tree::_M_move_assign): Copy the
	comparison function.
	* testsuite/23_containers/set/cons/61023.cc: New.

From-SVN: r210159
2014-05-07 15:12:37 +01:00
Paolo Carlini f03d1bb9cb Makefile.in: Regenerate.
2014-05-06  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/Makefile.in: Regenerate.

From-SVN: r210133
2014-05-07 01:11:19 +00:00
François Dumont 15ee1a7745 macros.h [...]: Add parameter to pass the 2 instances to check allocator equality.
2014-05-06  François Dumont  <fdumont@gcc.gnu.org>

	* include/debug/macros.h [__glibcxx_check_equal_allocs]: Add
	parameter to pass the 2 instances to check allocator equality.
	* include/debug/safe_container.h: New, define _Safe_container<>.
	* include/Makefile.am: Add previous.
	* include/debug/deque (std::__debug::deque<>): Inherit
	_Safe_container<>. Use default implementation for all special
	functions.
	* include/debug/forward_list (std::__debug::forward_list<>):
	Likewise.
	* include/debug/list (std::__debug::list<>): Likewise.
	* include/debug/map.h (std::__debug::map<>): Likewise.
	* include/debug/multimap.h (std::__debug::multimap<>): Likewise.
	* include/debug/set.h (std::__debug::set<>): Likewise.
	* include/debug/multiset.h (std::__debug::multiset<>): Likewise.
	* include/debug/string (std::__debug::basic_string<>): Likewise.
	* include/debug/unordered_map
	(std::__debug::unordered_map<>): Likewise.
	(std::__debug::unordered_multimap<>): Likewise.
	* include/debug/unordered_set
	(std::__debug::unordered_set<>): Likewise.
	(std::__debug::unordered_multiset<>): Likewise.
	* include/debug/vector (std::__debug::vector<>): Likewise.
	* include/debug/safe_base.h (_Safe_sequence_base()): Add
	noexcept.
	(_Safe_sequence_base(_Safe_sequence_base&&): Remove.
	(~_Safe_sequence_base()): Add noexcept.
	* include/debug/safe_sequence.h
	(std::__debug::_Safe_node_sequence<>): New.
	* include/debug/safe_unordered_base.h
	(_Safe_unordered_container_base()): Add noexcept.
	(~_Safe_unordered_container_base()): Likewise.
	(_M_swap(_Safe_unordered_container_base&)): Likewise.
	* include/debug/safe_unordered_container.h:
	(_Safe_unordered_container<>::_M_invalidate_locals()): New.
	(_Safe_unordered_container<>::_M_invalidate_all()): New.
	* src/c++11/debug.cc: Limit includes, adapt methods noexcept
	qualifications.
	* testsuite/util/debug/checks.h (check_construct1): Just implement
	an invalid constructor invocation  and no other operations
	potentially not supported by some types of container.
	(check_construct2): Likewise.
	(check_construct3): Likewise.
	* testsuite/23_containers/forward_list/allocator/move.cc: Add
	check on iterators to make sure they are correctly moved in debug
	mode.
	* testsuite/23_containers/forward_list/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/map/allocator/move.cc: Likewise.
	* testsuite/23_containers/map/allocator/move_assign.cc: Likewise.
	* testsuite/23_containers/multimap/allocator/move.cc: Likewise.
	* testsuite/23_containers/multimap/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/multiset/allocator/move.cc: Likewise.
	* testsuite/23_containers/multiset/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/set/allocator/move.cc: Likewise.
	* testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
	* testsuite/23_containers/unordered_map/allocator/move.cc:
	Likewise.
	* testsuite/23_containers/unordered_map/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/unordered_multimap/allocator/move.cc:
	Likewise.
	* testsuite/23_containers/unordered_multimap/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/unordered_multiset/allocator/move.cc:
	Likewise.
	* testsuite/23_containers/unordered_multiset/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/unordered_set/allocator/move.cc:
	Likewise.
	* testsuite/23_containers/unordered_set/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/forward_list/debug/construct1_neg.cc:
	New.
	* testsuite/23_containers/forward_list/debug/construct2_neg.cc:
	New.
	* testsuite/23_containers/forward_list/debug/construct3_neg.cc:
	New.
	* testsuite/23_containers/forward_list/debug/construct4_neg.cc:
	New.
	* testsuite/23_containers/forward_list/debug/move_assign_neg.cc:
	New.
	* testsuite/23_containers/forward_list/debug/move_neg.cc: New.
	* testsuite/23_containers/map/debug/construct5_neg.cc: New.
	* testsuite/23_containers/map/debug/move_assign_neg.cc: New.
	* testsuite/23_containers/map/debug/move_neg.cc: New.
	* testsuite/23_containers/multimap/debug/construct5_neg.cc: New.
	* testsuite/23_containers/multimap/debug/move_assign_neg.cc: New.
	* testsuite/23_containers/multimap/debug/move_neg.cc: New.
	* testsuite/23_containers/multiset/debug/construct5_neg.cc: New.
	* testsuite/23_containers/multiset/debug/move_assign_neg.cc: New.
	* testsuite/23_containers/multiset/debug/move_neg.cc: New.
	* testsuite/23_containers/set/debug/construct5_neg.cc: New.
	* testsuite/23_containers/set/debug/move_assign_neg.cc: New.
	* testsuite/23_containers/set/debug/move_neg.cc: New.
	* testsuite/23_containers/unordered_map/debug/construct5_neg.cc:
	New.
	* testsuite/23_containers/unordered_map/debug/move_assign_neg.cc:
	New.
	* testsuite/23_containers/unordered_map/debug/move_neg.cc: New.
	* testsuite/23_containers/unordered_multimap/debug/construct5_neg.cc:
	New.
	* testsuite/23_containers/unordered_multimap/debug/move_assign_neg.cc:
	New.
	* testsuite/23_containers/unordered_multimap/debug/move_neg.cc:
	New.
	* testsuite/23_containers/unordered_multiset/debug/construct5_neg.cc:
	New.
	* testsuite/23_containers/unordered_multiset/debug/move_assign_neg.cc:
	New.
	* testsuite/23_containers/unordered_multiset/debug/move_neg.cc:
	New.
	* testsuite/23_containers/unordered_set/debug/construct5_neg.cc:
	New.
	* testsuite/23_containers/unordered_set/debug/move_assign_neg.cc:
	New.
	* testsuite/23_containers/unordered_set/debug/move_neg.cc: New.
	* testsuite/23_containers/vector/debug/move_neg.cc: New.

From-SVN: r210123
2014-05-06 19:59:44 +00:00
Jonathan Wakely 62da5a07b2 re PR libstdc++/61036 (shared_ptr<void>(new T) rejected)
PR libstdc++/61036
	* include/bits/shared_ptr_base.h (__shared_ptr::__shared_ptr(_Tp1*)):
	Check the correct type in the static assertion.
	* testsuite/20_util/shared_ptr/cons/61036.cc: New.

From-SVN: r210015
2014-05-02 19:29:48 +01:00
Tim Shen a670a9bb54 regex_automaton.h (_NFA<>::_M_insert_repeat): Add _S_opcode_repeat support to distingush a loop from _S_opcode_alternative.
2014-04-27  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_automaton.h (_NFA<>::_M_insert_repeat):
	Add _S_opcode_repeat support to distingush a loop from
	_S_opcode_alternative.
	* include/bits/regex_automaton.tcc (_State_base::_M_print,
	_State_base::_M_dot, _NFA<>::_M_eliminate_dummy,
	_StateSeq<>::_M_clone): Likewise.
	* include/bits/regex_compiler.tcc (_Compiler<>::_M_quantifier):
	Likewise.
	* include/bits/regex_executor.tcc (_Executor<>::_M_dfs): Likewise.
	* include/bits/regex_scanner.tcc (_Scanner<>::_M_eat_escape_ecma):
	Uglify local variable __i.
	* include/bits/regex_compiler.h (_BracketMatcher<>::_M_make_cache):
	Use size_t instead of int to compare with vector::size().

2014-04-27  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_executor.h: Add _M_rep_count to track how
	many times this repeat node are visited.
	* include/bits/regex_executor.tcc (_Executor<>::_M_rep_once_more,
	_Executor<>::_M_dfs): Use _M_rep_count to prevent entering
	infinite loop.

2014-04-27  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.tcc (__regex_algo_impl<>): Remove
	_GLIBCXX_REGEX_DFS_QUANTIFIERS_LIMIT and use
	_GLIBCXX_REGEX_USE_THOMPSON_NFA instead.
	* include/bits/regex_automaton.h: Remove quantifier counting variable.
	* include/bits/regex_automaton.tcc (_State_base::_M_dot):
	Adjust debug NFA dump.

From-SVN: r209844
2014-04-27 23:48:47 +00:00
Lars Gullik Bjønnes e2ce9436fb re PR libstdc++/60710 (experimental::optional<T> is using T::operator!=)
2014-04-25  Lars Gullik Bjønnes  <larsbj@gullik.org>

	PR libstdc++/60710
	* include/experimental/optional (operator!=): Implement in terms of
	operator==.
	* testsuite/experimental/optional/relops/1.cc: Remove operator!=.
	* testsuite/experimental/optional/relops/2.cc: Likewise.
	* testsuite/experimental/optional/relops/3.cc: Likewise.
	* testsuite/experimental/optional/relops/4.cc: Likewise.
	* testsuite/experimental/optional/relops/5.cc: Likewise.
	* testsuite/experimental/optional/relops/6.cc: Likewise.

From-SVN: r209810
2014-04-25 20:34:42 +01:00
Jonathan Wakely 4ec21835cb re PR libstdc++/60958 (Initialization of arrays in tr1/regex ill-formed or with undefined behaviour)
PR libstdc++/60958
	* include/tr1/regex (regex_traits::isctype): Comment out broken code.
	* testsuite/util/testsuite_regex.h (regex_match_debug): Improve
	comment.

From-SVN: r209807
2014-04-25 17:10:25 +01:00
Tim Shen 836c42f6ad regex_automaton.tcc (_StateSeq<>::_M_clone()): Do _M_alt before _M_next.
2014-04-24  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_automaton.tcc (_StateSeq<>::_M_clone()):
	Do _M_alt before _M_next.
	* testsuite/28_regex/basic_regex/multiple_quantifiers.cc: Add testcases.

From-SVN: r209756
2014-04-24 18:29:21 +00:00
Jonathan Wakely 6e2d247b1e * include/std/functional (__is_location_invariant): Use __or_ helper.
From-SVN: r209445
2014-04-16 18:46:13 +01:00
Jonathan Wakely 33fbb3584a shared_ptr.h (shared_ptr::shared_ptr(nullptr_t)): Remove name of unused parameter.
* include/bits/shared_ptr.h (shared_ptr::shared_ptr(nullptr_t)):
	Remove name of unused parameter.

From-SVN: r209434
2014-04-15 21:15:38 +01:00
Jonathan Wakely b9de84c92d * include/experimental/string_view: Fix inconsistent exception specs.
From-SVN: r209433
2014-04-15 20:05:57 +01:00
Jonathan Wakely 227df36e33 * include/std/atomic: Uglify parameter names.
From-SVN: r209429
2014-04-15 19:28:57 +01:00
Jonathan Wakely ed39835fdc shared_ptr.h (shared_ptr::shared_ptr(nullptr_t)): Use delegating constructor.
* include/bits/shared_ptr.h (shared_ptr::shared_ptr(nullptr_t)): Use
	delegating constructor.
	* include/bits/shared_ptr_base.h
	(__shared_ptr::__shared_ptr(nullptr_t)): Likewise

From-SVN: r209428
2014-04-15 19:28:50 +01:00
Jonathan Wakely 260d16c8ca atomic_base.h (__atomic_base<_PTp*>::_M_type_size): Add const to constexpr member functions.
* include/bits/atomic_base.h (__atomic_base<_PTp*>::_M_type_size): Add
	const to constexpr member functions.

From-SVN: r209427
2014-04-15 19:28:41 +01:00
Jonathan Wakely 4803acceb2 re PR libstdc++/60594 (std::function of a type with a declared (but not defined) return type fails to compile)
PR libstdc++/60594
	* include/std/functional (function::_Callable): Exclude own type
	from the callable checks.
	* testsuite/20_util/function/60594.cc: New.

From-SVN: r209422
2014-04-15 16:25:52 +01:00
Jonathan Wakely 9ffc6d0bc2 re PR libstdc++/60695 (std::atomic<X> doesn't work when X is of zero size)
PR libstdc++/60695
	* include/std/atomic (atomic<_Tp>): Add static assertion.
	* testsuite/29_atomics/atomic/60695.cc: New.

From-SVN: r209418
2014-04-15 14:48:07 +01:00
Jonathan Wakely 4b3f982994 re PR libstdc++/60734 (Undefined behavior in g++-v4/bits/stl_tree.h)
PR libstdc++/60734
	* include/bits/stl_tree.h (_Rb_tree::_M_end): Fix invalid cast.

From-SVN: r209414
2014-04-15 11:52:06 +01:00
Jonathan Wakely 025eac9b9e N3887 Consistent Metafunction Aliases
* include/std/tuple (tuple_element_t): Define.
	* testsuite/20_util/tuple/tuple_element.cc: Change to compile-only
	test.
	* testsuite/20_util/tuple/tuple_element_t.cc: New.

From-SVN: r209395
2014-04-15 00:17:52 +01:00
Jonathan Wakely 39e6a690ec re PR libstdc++/60497 (unique_ptr<T> tries to complete its type T even though it's not required to be a complete type)
PR libstdc++/60497
	* include/std/tuple (get): Qualify calls to prevent ADL.
	* testsuite/20_util/tuple/60497.cc: New.

From-SVN: r209381
2014-04-14 16:32:58 +01:00
Jonathan Wakely e364673d87 allocator.h (operator==, operator!=): Add exception specifications.
* include/bits/allocator.h (operator==, operator!=): Add exception
	specifications.

From-SVN: r209379
2014-04-14 16:13:02 +01:00
Jonathan Wakely 5b99e0a022 Limit operations on vector::pointer to NullablePointer requirements.
* include/bits/stl_vector.h (_Vector_base::_Vector_impl,
	_Vector_base::_M_allocate): NullablePointer requirements do not
	include initialization from literal zero, use value-initialization.
	* include/bits/vector.tcc (vector::_M_insert_aux,
	vector::_M_explace_back_aux): Likewise for assignment.

From-SVN: r209377
2014-04-14 15:51:35 +01:00
Marc Glisse 4de3afd972 re PR libstdc++/59434 ([lwg/2106] move_iterator is broken for input iterators with an rvalue as reference type)
2014-04-11  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/59434
	* include/bits/stl_iterator.h (move_iterator::reference,
	move_iterator::operator*): Implement LWG 2106.
	* testsuite/24_iterators/move_iterator/dr2106.cc: New file.

From-SVN: r209323
2014-04-11 19:23:49 +00:00
Marc Glisse 742f66e736 complex (__complex_exp, pow): Specify the template parameter in calls to std::polar, for expression templates.
2014-04-11  Marc Glisse  <marc.glisse@inria.fr>

	* include/std/complex (__complex_exp, pow): Specify the template
	parameter in calls to std::polar, for expression templates.

From-SVN: r209321
2014-04-11 18:57:59 +00:00
Lars Gullik Bjønnes 71bdda5625 re PR libstdc++/60270 ([C++1y] std::quoted is too eager to clear the string)
2014-03-31  Lars Gullik Bjønnes  <larsbj@gullik.org>
	    Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/60270
	* include/std/iomanip (_Quoted_string operator>>): Do not clear
	string if input is not quoted.
	* testsuite/27_io/manipulators/standard/char/60270.cc: New.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>

From-SVN: r208966
2014-03-31 19:46:23 +01:00
Jonathan Wakely 5ec16257ca re PR libstdc++/60658 (std::atomic<T*> is unexpectedly not lock-free)
PR libstdc++/60658
	* include/bits/atomic_base.h (__atomic_base<_PTp*>::is_lock_free()):
	Use sizeof pointer type not the element type.
	* testsuite/29_atomics/atomic/60658.cc: New.

From-SVN: r208819
2014-03-25 19:39:52 +00:00