Jonathan Wakely
7663cae227
Constrain std::shared_ptr assignment and resetting
...
* include/bits/shared_ptr.h (_Assignable): New alias template.
(shared_ptr::operator=(const shared_ptr<_Tp1>&))
(shared_ptr::operator=(shared_ptr<_Tp1>&&))
(shared_ptr::operator=(unique_ptr<_Tp1>&&)): Constrain with
_Assignable.
* include/bits/shared_ptr_base.h (_Assignable): New alias template.
(__shared_ptr::operator=(const __shared_ptr<_Tp1>&))
(__shared_ptr::operator=(__shared_ptr<_Tp1>&&))
(__shared_ptr::operator=(unique_ptr<_Tp1>&&)): Constrain with
_Assignable.
(__shared_ptr::reset(_Tp1*), __shared_ptr::reset(_Tp1*, _Deleter))
(__shared_ptr::reset(_Tp1*, _Deleter, _Alloc)): Constrain with
_Convertible.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Change dg-error to
match on any line.
* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
* testsuite/20_util/shared_ptr/assign/sfinae.cc: New test.
* testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Update
expected errors. Remove unnecessary code.
* testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc: New test.
From-SVN: r239898
2016-08-31 17:57:20 +01:00
Jonathan Wakely
e46d22a821
Move comparison object in map/set move assignment
...
* include/bits/stl_tree.h (_Rb_tree::operator=(_Rb_tree&&)): Move
comparison object.
* testsuite/23_containers/set/move_comparison.cc: New test.
From-SVN: r239897
2016-08-31 17:57:14 +01:00
Ville Voutilainen
7875b41f1d
re PR libstdc++/77395 (std::is_constructible is false for type constructible via implicit conversion operator affecting std::tuple)
...
PR libstdc++/77395
* include/std/type_traits (is_constructible): Forward-declare...
(__is_base_to_derived_ref): ...and use here.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
* testsuite/20_util/is_constructible/77395.cc: New.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/tuple/77395.cc: New.
From-SVN: r239870
2016-08-30 21:46:11 +03:00
Tim Shen
4aebb4e4a6
re PR libstdc++/77356 (regex error for a ECMAScript syntax string)
...
PR libstdc++/77356
* include/bits/regex_compiler.tcc(_M_insert_bracket_matcher,
_M_expression_term): Modify to support dash literal.
* include/bits/regex_scanner.h: Add dash as a token type to make
a different from the mandated dash literal by escaping.
* include/bits/regex_scanner.tcc(_M_scan_in_bracket): Emit dash
token in bracket expression parsing.
* testsuite/28_regex/regression.cc: Add new testcases.
From-SVN: r239794
2016-08-27 02:03:23 +00:00
Jonathan Wakely
10491e4c04
libstdc++/51960 move-construction for raw_storage_iterator
...
PR libstdc++/51960
* doc/xml/manual/intro.xml: Document DR 2127 change.
* doc/html/*: Regenerate.
* include/bits/stl_raw_storage_iter.h (operator=(_Tp&&)): Add.
(operator++(), operator++(int)): Use injected class name.
* testsuite/20_util/raw_storage_iterator/dr2127.cc: New test.
From-SVN: r239781
2016-08-26 14:11:29 +01:00
Jonathan Wakely
86bbf15b6b
Add new std::basic_string constructor (LWG 2583)
...
* config/abi/pre/gnu.ver (GLIBCXX_3.4, GLIBCXX_3.4.21): Use more
precise patterns for basic_string constructors.
(GLIBCXX_3.4.23): Export new constructors.
* doc/xml/manual/intro.xml: Document LWG 2583 status.
* doc/html/*: Regenerate.
* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
(basic_string(const basic_string&, size_type, const Alloc&)): Add
new constructor for LWG 2583.
(basic_string(const basic_string&, size_type, size_type)): Remove
default argument.
[!_GLIBCXX_USE_CXX11_ABI]: Likewise.
* include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]: Define it.
* testsuite/21_strings/basic_string/cons/char/8.cc: New test.
* testsuite/21_strings/basic_string/cons/wchar_t/8.cc: New test.
From-SVN: r239773
2016-08-26 11:41:37 +01:00
Aditya Kumar
9a38acdfdc
Remove trailing whitespace in C++ headers
...
2016-08-24 Aditya Kumar <hiraditya@msn.com>
* include/bits/algorithmfwd.h: Remove trailing whitespace.
* include/bits/shared_ptr_base.h: Likewise.
From-SVN: r239731
2016-08-24 09:03:01 +01:00
Jonathan Wakely
e90a801017
Add C++17 constexpr to debug and profile mode arrays
...
* include/debug/array (array): Add _GLIBCXX17_CONSTEXPR.
* include/profile/array (array): Likewise.
(array::swap): Fix exception specification for zero-sized arrays.
From-SVN: r239705
2016-08-23 16:54:57 +01:00
Jonathan Wakely
5ea387db6c
libstdc++/77334 move assign RB trees of non-copyable types
...
PR libstdc++/77334
* include/bits/stl_tree.h (_Rb_tree::_M_move_assign): New functions.
(_Rb_tree::operator=(_Rb_tree&&)): Dispatch to _M_move_assign.
* testsuite/23_containers/map/77334.cc: New test.
From-SVN: r239698
2016-08-23 14:15:12 +01:00
Jonathan Wakely
b405d54fcd
Implement resolution of LWG DR 685 precisely
...
PR libstdc++/71771
* include/bits/stl_iterator.h
(operator-(reverse_iterator<Iter>, reverse_iterator<Iter>): Only
define for C++98 mode.
(operator-(move_iterator<Iter>, move_iterator<Iter>): Don't define.
* testsuite/24_iterators/headers/iterator/synopsis.cc: Use
-std=gnu++98.
* testsuite/24_iterators/headers/iterator/synopsis_c++11.cc: New test.
* testsuite/24_iterators/headers/iterator/synopsis_c++14.cc: New test.
* testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: New test.
* testsuite/24_iterators/move_iterator/greedy_ops.cc: Don't test
difference operator.
* testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Only test
difference operator for C++98.
* testsuite/24_iterators/reverse_iterator/71771.cc: New test.
From-SVN: r239691
2016-08-23 11:13:26 +01:00
Jonathan Wakely
06db992005
Add constexpr to <iterator> and <array> for C++17
...
* include/bits/c++config (_GLIBCXX17_CONSTEXPR): Define.
* include/bits/range_access.h (begin, end, rbegin, rend, crbegin)
(crend): Add _GLIBCXX17_CONSTEXPR as per P0031R0.
* include/bits/stl_iterator.h (reverse_iterator, move_iterator)
(__make_reverse_iterator, make_reverse_iterator, make_move_iterator):
Likewise.
* include/bits/stl_iterator_base_funcs.h (__distance, __advance): Add
_GLIBCXX14_CONSTEXPR.
(distance, advance, next, prev): Add _GLIBCXX17_CONSTEXPR.
* include/std/array (array::begin, array::end, array::rbegin)
(array::rend, array::cbegin, array:cend, array::crbegin)
(array::crend, array::operator[], array::at, array::front)
(array::back, array::data): Likewise.
* testsuite/24_iterators/headers/iterator/range_access.cc: Replace
with separate tests for C++11, C++14, and C++17.
* testsuite/24_iterators/headers/iterator/range_access_c++11.cc: New.
* testsuite/24_iterators/headers/iterator/range_access_c++14.cc: New.
* testsuite/24_iterators/headers/iterator/range_access_c++17.cc: New.
From-SVN: r239690
2016-08-23 11:13:12 +01:00
Tim Shen
d79d625275
Split _M_dfs() into smaller functions.
...
* regex_executor.h(_M_handle_repeat, _M_handle_subexpr_begin)
(_M_handle_subexpr_end, _M_handle_line_begin_assertion)
(_M_handle_line_end_assertion, _M_handle_word_boundary)
(_M_handle_subexpr_lookahead, _M_handle_match)
(_M_handle_backref, _M_handle_accept, _M_handle_alternative):
Add separate function declarations.
* regex_executor.tcc: Split _M_dfs() into multiple handler functions.
From-SVN: r239673
2016-08-22 19:50:15 +00:00
Gleb Natapov
27abac2648
libstdc++/68297 avoid throw/catch in make_exception_ptr
...
2016-08-22 Gleb Natapov <gleb@scylladb.com>
PR libstdc++/68297
* config/abi/pre/gnu-versioned-namespace.ver: Export
__cxa_init_primary_exception and std::exception_ptr(void*).
* config/abi/pre/gnu.ver (CXXABI_1.3.11) : Add new symbol version and
export __cxa_init_primary_exception and std::exception_ptr(void*).
* include/Makefile.am: Add new headers.
* include/Makefile.in: Regenerate.
* libsupc++/Makefile.am: Add new headers.
* libsupc++/Makefile.in: Regenerate.
* libsupc++/cxxabi.h (__cxa_allocate_exception): Move to ...
* libsupc++/cxxabi_init_exception.h: New header.
(__cxa_init_primary_exception): Declare.
* libsupc++/eh_throw.cc (__cxa_init_primary_exception): Define.
(__cxa_throw): Use __cxa_init_primary_exception.
* libsupc++/exception (std::exception): Move to ...
* libsupc++/exception.h: New header.
* libsupc++/exception_ptr.h (__exception_ptr::exception_ptr): Add
friend declaration.
(__exception_ptr::__dest_thunk): New function template.
(std::make_exception_ptr) [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]:
Use __cxa_allocate_exception and __cxa_init_primary_exception to
create exception_ptr.
* libsupc++/typeinfo: Include bits/exception.h instead of exception.
* testsuite/util/testsuite_abi.cc: Add CXXABI_1.3.11 version.
From-SVN: r239664
2016-08-22 18:29:31 +01:00
Jonathan Wakely
94f54d47ca
Add noexcept to std::function swap
...
PR libstdc++/77322
* doc/xml/manual/intro.xml: Document DR 2062 change.
* include/std/functional (function::swap): Add noexcept.
(swap(function<Res(Args...)&, function<Res(Args...)&)): Likewise.
* testsuite/20_util/function/77322.cc: New test.
From-SVN: r239662
2016-08-22 17:47:34 +01:00
Jonathan Wakely
e6ee5bfd68
Define std::not_fn for C++17
...
* doc/xml/manual/status_cxx2017.xml: Update status of not_fn.
* doc/html/*: Regenerate.
* include/experimental/functional (_Not_fn, not_fn): Match C++17
semantics.
* include/std/functional (_Not_fn, not_fn): Define for C++17.
* testsuite/20_util/not_fn/1.cc: New.
* testsuite/experimental/functional/not_fn.cc: Test abstract class.
Remove test for volatile-qualified wrapper.
From-SVN: r239623
2016-08-19 16:42:34 +01:00
Jonathan Wakely
387edf83a0
Define std::atomic<T>::is_always_lock_free for C++17
...
* include/std/atomic (atomic::is_always_lock_free): Define.
* testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
* testsuite/29_atomics/atomic/is_always_lock_free.cc: New.
* testsuite/29_atomics/atomic_integral/is_always_lock_free.cc: New.
* doc/xml/manual/status_cxx2017.xml: Update status.
* doc/html/*: Regenerate.
From-SVN: r239622
2016-08-19 16:42:27 +01:00
Jonathan Wakely
285ee2fb11
Fix ambiguities in C++17 mode
...
* include/experimental/tuple (apply): Qualify call to __apply_impl.
* include/std/tuple (apply): Likewise.
* testsuite/experimental/system_error/value.cc: Fix ambiguities in
C++17 mode.
* testsuite/experimental/tuple/tuple_size.cc: Likewise.
* testsuite/experimental/type_traits/value.cc: Likewise.
From-SVN: r239621
2016-08-19 16:42:11 +01:00
Ville Voutilainen
a577f786b6
Implement the latest proposed resolution of LWG 2756.
...
* include/std/optional (Optional_base(const _Tp&))
(Optional_base(_Tp&&), using _Base::_Base): Remove.
(optional(nullopt_t)): New.
(optional(_Up&&)): Invoke base directly with in_place
rather than creating a temporary, add default template
argument, change constraints.
(optional(const optional<_Up>&)): Invoke base directly
with in_place, remove unnecessary constraints.
(optional(optional<_Up>&& __t)): Likewise.
(optional(in_place_t, _Args&&...)): New.
(optional(in_place_t, initializer_list<_Up>, _Args&&...)): Likewise.
(operator=(_Up&&)): Add default template argument, change constraints.
(operator=(const optional<_Up>&)): Put is_same first in the
constraints.
(operator=(optional<_Up>&&)): Likewise.
* testsuite/20_util/optional/assignment/5.cc: Add a test to
verify assignment from something that can't be perfect-forwarded.
* testsuite/20_util/optional/cons/value.cc: Add tests to verify
that a nested optional is disengaged when constructed
from a disengaged element type, and to verify that assignments
from an engaged element type engage the optional.
From-SVN: r239593
2016-08-18 23:33:57 +03:00
Tim Shen
197c757cb1
Implement <variant>
...
* include/Makefile.am: Add new file std/variant.
* include/Makefile.in: Generated from Makefile.am.
* include/bits/enable_special_members.h: Add a tag type to allow
the construction in non-default constructor.
* include/bits/uses_allocator.h: Add convenience traits to
detect constructibility.
* include/std/variant: Implement <variant>.
* testsuite/20_util/variant/compile.cc: Compile-time tests.
* testsuite/20_util/variant/run.cc: Runtime tests.
From-SVN: r239590
2016-08-18 20:31:26 +00:00
Jonathan Wakely
657213f736
PR 77264 constrain new std::basic_string overloads
...
PR libstdc++/77264
* include/bits/basic_string.h (operator=(__sv_type)
(append(__sv_type), assign(__sv_type), insert(size_type, __sv_type))
(replace(size_type, size_type, __sv_type))
(replace(const_iterator, const_iterator, __sv_type))
(find(__sv_type, size_type), rfind(__sv_type, size_type))
(compare(size_type, size_type, __sv_type)): Reformat.
(_If_sv): Define helper for SFINAE constaints.
(append(const _Tp&, size_type, size_type))
(assign(const _Tp&, size_type, size_type))
(insert(size_type, const _Tp&, size_type, size_type))
(replace(size_type, size_type, const _Tp&, size_type, size_type)):
Use _If_sv.
* testsuite/21_strings/basic_string/modifiers/append/char/4.cc: Test
SFINAE constraints.
* testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/compare/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
Likewise.
From-SVN: r239532
2016-08-17 14:38:52 +01:00
Jonathan Wakely
32917686b0
PR 72847 Prevent double-free in std::vector<bool>
...
PR libstdc++/72847
* include/bits/stl_bvector.h (_Bvector_base::_M_deallocate): Zero
pointers to start and end of storage.
* testsuite/23_containers/vector/bool/72847.cc: New test.
* include/bits/vector.tcc (vector<bool>::_M_reallocate): Only update
_M_finish after deallocating.
(vector<bool>::_M_fill_insert): Likewise.
(vector<bool>::_M_insert_range): Likewise.
(vector<bool>::_M_insert_aux): Likewise.
From-SVN: r239497
2016-08-16 12:33:16 +01:00
Ville Voutilainen
5c578ae434
Implement LWG 2744 and LWG 2754.
...
* include/std/any (any(ValueType&&)): Constrain with __is_in_place_type.
(any(in_place_type_t<_ValueType>, _Args&&...)): Use _Decay.
(any(in_place_type_t<_ValueType>, initializer_list<_Up>, _Args&&...)):
Likewise.
(emplace(_Args&&...)): Likewise.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* include/std/utility: (__is_in_place_type_impl): New.
(__is_in_place_type): Likewise.
* testsuite/20_util/any/assign/emplace.cc: Add tests for decaying
emplace.
* testsuite/20_util/any/cons/in_place.cc: Add tests for decaying
in_place constructor.
* testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
* testsuite/20_util/any/requirements.cc: Add a test for
in_place-constructing a non-default-constructible type.
From-SVN: r239482
2016-08-15 18:06:09 +03:00
Ville Voutilainen
24299f6544
Add a feature macro for C++17 make_from_tuple.
...
* include/std/tuple (__cpp_lib_make_from_tuple): New.
* testsuite/20_util/tuple/make_from_tuple/1.cc: Adjust.
From-SVN: r239480
2016-08-15 15:46:47 +03:00
Ville Voutilainen
ca1ab6be3b
Implement C++17 make_from_tuple.
...
* include/std/tuple (__make_from_tuple_impl, make_from_tuple): New.
* testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise.
From-SVN: r239372
2016-08-11 17:51:47 +03:00
Ville Voutilainen
68a51b68bd
Implement LWG 2758.
...
* include/bits/basic_string.h
(append(__sv_type, size_type, size_type)): Turn into a template,
change parameter type, constrain, add a conversion to __sv_type
from the dependent parameter type.
(assign(__sv_type, size_type, size_type)): Likewise.
(insert(size_type, __sv_type, size_type, size_type)): Likewise.
(replace(size_type, size_type, __sv_type, size_type, size_type)):
Likewise.
(compare(size_type, size_type,__sv_type, size_type, size_type)):
Likewise.
* testsuite/21_strings/basic_string/lwg2758.cc: New.
From-SVN: r239370
2016-08-11 17:45:23 +03:00
Jonathan Wakely
6ef835c6c0
Use ::new to avoid finding overloaded operator new
...
PR libstdc++/72820
* include/std/functional (_Function_base::_Base_manager::_M_clone):
Qualify new operator.
* testsuite/20_util/function/cons/72820.cc: New test.
From-SVN: r239191
2016-08-06 11:21:07 +01:00
Jonathan Wakely
3e9f67e6a2
Add std::apply for C++17
...
* doc/xml/manual/status_cxx2017.xml: Add missing LFTSv2 features.
* doc/html/manual/status.html: Regenerate.
* include/Makefile.am: Add new header.
* include/Makefile.in: Regenerate.
* include/bits/invoke.h: New header.
(__invoke): Make constexpr. Add && to types in exception specification.
* include/experimental/tuple (apply, __apply_impl): Fix non-reserved
names. Include <bits/invoke.h> and use std::__invoke.
* include/std/functional (__invfwd, __invoke_impl, __invoke): Move to
new header.
(invoke): Add && to types in exception specification.
* include/std/tuple (apply, __apply_impl): Define for C++17.
* testsuite/20_util/tuple/apply/1.cc: New test.
* testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error
lineno.
From-SVN: r239183
2016-08-06 01:06:02 +01:00
Jonathan Wakely
5f6acdfb0b
Implement C++17 rounding functions for std::chrono (P0092R1)
...
* include/std/chrono (floor, ceil, round, abs): New for C++17.
* testsuite/20_util/duration_cast/rounding.cc: New test.
* testsuite/20_util/time_point_cast/rounding.cc: New test.
* doc/xml/manual/status_cxx2017.xml: Update status table.
* doc/html/manual/status.html: Regenerate.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
dg-error lineno.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
* testsuite/20_util/duration/literals/range.cc: Likewise.
From-SVN: r239170
2016-08-05 14:52:59 +01:00
Jonathan Wakely
98e6e66233
Use __invoke in std::function internals
...
* include/std/functional (__callable_functor): Remove.
(_Function_handler::_M_invoke): Use __invoke instead of
__callable_functor or mem_fn.
(function::_Callable): Use lvalue in result_of expression.
(function): Remove TODO comments about allocators.
* testsuite/20_util/function/cons/refqual.cc: New test.
From-SVN: r239166
2016-08-05 10:00:34 +01:00
Jonathan Wakely
42183d034d
Define std::is_callable and std::is_nothrow_callable
...
* doc/xml/manual/status_cxx2017.xml: Update status table.
* include/std/functional (__inv_unwrap): Move to <type_traits>.
(__invoke_impl): Remove exception specifications.
(__invoke, invoke): Add exception specifications using
__is_nothrow_callable.
* include/std/type_traits (__inv_unwrap): Move from <functional>.
(__is_callable_impl, __call_is_nt, __call_is_nothrow): New helpers.
(__is_callable, __is_nothrow_callable): New traits.
(is_callable, is_callable_v): New C++17 traits.
(is_nothrow_callable, is_nothrow_callable_v): Likewise.
* testsuite/20_util/is_callable/requirements/
explicit_instantiation.cc: New test.
* testsuite/20_util/is_callable/requirements/
explicit_instantiation_ext.cc: New test.
* testsuite/20_util/is_callable/requirements/typedefs.cc: New test.
* testsuite/20_util/is_callable/requirements/typedefs_ext.cc: New
test.
* testsuite/20_util/is_callable/value.cc: New test.
* testsuite/20_util/is_callable/value_ext.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/
explicit_instantiation.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/
explicit_instantiation_ext.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc:
New test.
* testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc:
New test.
* testsuite/20_util/is_nothrow_callable/value.cc: New test.
* testsuite/20_util/is_nothrow_callable/value_ext.cc: New test.
From-SVN: r239145
2016-08-04 19:02:56 +01:00
Jonathan Wakely
9a8e528cf1
Define std::enable_shared_from_this::weak_from_this
...
* testsuite/20_util/enable_shared_from_this/members/reinit.cc: Use
effective target not dg-options. Move check for feature-test macro to:
* testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
New test.
From-SVN: r239121
2016-08-04 13:33:10 +01:00
Jonathan Wakely
7d2035fafe
Simplify std::__invoke_impl definitions
...
* include/std/functional (_Unwrap): Rename to __inv_unwrap.
(__invfwd): Adjust.
(__invoke_impl): Remove unused template parameters.
* testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
parameter.
* testsuite/20_util/function_objects/invoke/ref_ext.cc: Copy 59768.cc
and test __invoke extension for C++11.
From-SVN: r239120
2016-08-04 12:09:29 +01:00
Jonathan Wakely
c7fdbdcdbd
Define feature-test macro for std::enable_shared_from_this
...
* include/bits/shared_ptr_base.h (__cpp_lib_enable_shared_from_this):
Define feature-test macro.
* testsuite/20_util/enable_shared_from_this/members/reinit.cc: Test
for the macro.
From-SVN: r239094
2016-08-03 20:10:06 +01:00
Jonathan Wakely
f21f4463ad
Define std::shared_ptr::weak_type
...
* include/bits/shared_ptr.h (shared_ptr::weak_type): Define.
* include/bits/shared_ptr_base.h (__shared_ptr::weak_type): Define.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error.
* testsuite/20_util/shared_ptr/requirements/weak_type.cc: New test.
* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
From-SVN: r239093
2016-08-03 20:09:57 +01:00
Jonathan Wakely
32eaac9c91
Define std::as_const
...
* include/std/utility (as_const): Define.
* testsuite/20_util/as_const/1.cc: New test.
* testsuite/20_util/as_const/rvalue_neg.cc: New test.
From-SVN: r239090
2016-08-03 19:11:23 +01:00
Jonathan Wakely
b7dabce5f3
Define std::owner_less<void> specialization (P0074R0)
...
* include/bits/shared_ptr.h (owner_less): Add default template
argument.
* include/bits/shared_ptr_base.h (_Sp_owner_less<void, void>): Define
specialization.
(owner_less<void>): Define specialization.
* include/bits/stl_function.h (__cpp_lib_transparent_operators):
Update value.
* testsuite/20_util/owner_less/void.cc: New test.
* testsuite/experimental/feat-cxx14.cc: Update macro value tested.
From-SVN: r239089
2016-08-03 19:11:18 +01:00
Jonathan Wakely
068c8ac17c
Define C++17 feature-test macros
...
* include/bits/allocator.h (__cpp_lib_incomplete_container_elements):
Define feature-test macro.
* include/bits/range_access.h (__cpp_lib_array_constexpr): Likewise.
* include/std/shared_mutex (__cpp_lib_shared_mutex): Uncomment.
* include/std/type_traits (__cpp_lib_logical_traits): Fix value.
(__cpp_lib_type_trait_variable_templates): Define.
From-SVN: r239088
2016-08-03 19:11:10 +01:00
Jonathan Wakely
0bd9bdb4db
Define __cpp_lib_generic_associative_lookup feature-test macro
...
* include/bits/stl_function.h: Remove commented-out macro.
* include/bits/stl_tree.h (__cpp_lib_generic_associative_lookup):
Define feature-test macro.
* testsuite/experimental/feat-cxx14.cc: Add tests for more macros.
From-SVN: r239084
2016-08-03 17:42:31 +01:00
Jonathan Wakely
f8571e5150
Enable Mathematical Special Functions for C++17
...
* include/bits/c++config (_GLIBCXX_USE_STD_SPEC_FUNCS): Define for
C++17, or for C++11/C++14 when __STDCPP_WANT_MATH_SPEC_FUNCS__ is
true.
* include/bits/specfun.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]: Don't
do #error for C++17.
* include/c_global/cmath: Check _GLIBCXX_USE_STD_SPEC_FUNCS instead
of __STDCPP_WANT_MATH_SPEC_FUNCS__.
* include/tr1/bessel_function.tcc: Likewise.
* include/tr1/beta_function.tcc: Likewise.
* include/tr1/cmath: Likewise.
* include/tr1/ell_integral.tcc: Likewise.
* include/tr1/exp_integral.tcc: Likewise.
* include/tr1/gamma.tcc: Likewise.
* include/tr1/hypergeometric.tcc: Likewise.
* include/tr1/legendre_function.tcc: Likewise.
* include/tr1/modified_bessel_func.tcc: Likewise.
* include/tr1/poly_hermite.tcc: Likewise.
* include/tr1/poly_laguerre.tcc: Likewise.
* include/tr1/riemann_zeta.tcc: Likewise.
* include/tr1/special_function_util.h: Likewise.
* testsuite/26_numerics/headers/cmath/functions_std_c++17.cc: New.
From-SVN: r239081
2016-08-03 16:54:13 +01:00
Jonathan Wakely
27631a2542
Remove deprecated has_trivial_xxx traits
...
* include/std/type_traits (has_trivial_default_constructor): Remove.
(has_trivial_copy_constructor, has_trivial_copy_assign): Likewise.
* testsuite/20_util/has_trivial_copy_assign/requirements/
explicit_instantiation.cc: Remove test.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
line number.
* testsuite/20_util/has_trivial_copy_assign/requirements/typedefs.cc:
Likewise.
* testsuite/20_util/has_trivial_copy_assign/value.cc: Likewise.
* testsuite/20_util/has_trivial_copy_constructor/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/20_util/has_trivial_copy_constructor/requirements/
typedefs.cc: Likewise.
* testsuite/20_util/has_trivial_copy_constructor/value.cc: Likewise.
* testsuite/20_util/has_trivial_default_constructor/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/20_util/has_trivial_default_constructor/requirements/
typedefs.cc: Likewise.
* testsuite/20_util/has_trivial_default_constructor/value.cc:
Likewise.
* testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc:
Check has_trivial_default_constructor, has_trivial_copy_constructor,
and has_trivial_copy_assign are not defined.
* testsuite/20_util/pair/requirements/dr801.cc: Remove commented out
tests.
* testsuite/20_util/tuple/requirements/dr801.cc: Likewise.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
dg-error line number.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
From-SVN: r239079
2016-08-03 16:18:30 +01:00
Jonathan Wakely
92d58deefa
Add non-const std::basic_string::data() for C++17
...
* include/bits/basic_string.h (data() const): Update comment.
(data()): Add non-const overload for C++17.
* testsuite/21_strings/basic_string/operations/data/char/2.cc: New.
* testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc: New.
From-SVN: r238963
2016-08-01 21:12:58 +01:00
Jonathan Wakely
0f86525ae0
Disable std::string and std::wstring extern templates for C++17
...
* include/bits/basic_string.tcc: Disable explicit instantiation
declarations for C++17.
From-SVN: r238959
2016-08-01 17:06:03 +01:00
Jonathan Wakely
3c040fa4a2
libstdc++/72745 add static assertion for invalid tuple access
...
PR libstdc++/72745
* include/std/array (get): Use positive message for static assertions.
* include/std/functional (_Safe_tuple_element_t): Fix indentation.
* include/std/tuple (tuple_element<I, tuple<>>): Add partial
specialization for invalid indices, with static assertion.
* testsuite/20_util/tuple/element_access/get_neg.cc: New test.
From-SVN: r238924
2016-07-31 18:08:52 +01:00
Ville Voutilainen
8c9142276b
Add missing variable traits, fix testsuite failures.
...
* include/bits/uses_allocator.h (uses_allocator_v): New.
* include/std/functional (is_bind_expression_v, is_placeholder_v):
Likewise.
* testsuite/20_util/bind/is_placeholder_v.cc: Likewise.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
* testsuite/20_util/duration/literals/range.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
* testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc:
New.
From-SVN: r238921
2016-07-31 17:52:53 +03:00
Ville Voutilainen
137422c80c
Implement C++17 variable templates for type traits.
...
* include/std/chrono (treat_as_floating_point_v): New.
* include/std/ratio (ratio_equal_v, ratio_not_equal_v)
(ratio_less_v, ratio_less_equal_v, ratio_greater_v)
(ratio_greater_equal_v): Likewise.
* include/std/system_error (is_error_code_enum_v)
(is_error_condition_enum_v): Likewise.
* include/std/tuple (tuple_size_v): Likewise.
* type_traits (conjunction_v, disjunction_v, negation_v)
(is_void_v, is_null_pointer_v, is_integral_v, is_floating_point_v)
(is_array_v, is_pointer_v, is_lvalue_reference_v)
(is_rvalue_reference_v, is_member_object_pointer_v)
(is_member_function_pointer_v, is_enum_v, is_union_v)
(is_class_v, is_function_v, is_reference_v, is_arithmetic_v)
(is_fundamental_v, is_object_v, is_scalar_v, is_compound_v)
(is_member_pointer_v, is_const_v, is_volatile_v, is_trivial_v)
(is_trivially_copyable_v, is_standard_layout_v)
(is_pod_v, is_literal_type_v, is_empty_v, is_polymorphic_v)
(is_abstract_v, is_final_v, is_signed_v, is_unsigned_v)
(is_constructible_v, is_default_constructible_v)
(is_copy_constructible_v, is_move_constructible_v)
(is_assignable_v, is_copy_assignable_v, is_move_assignable_v)
(is_destructible_v, is_trivially_constructible_v)
(is_trivially_default_constructible_v)
(is_trivially_copy_constructible_v, is_trivially_move_constructible_v)
(is_trivially_assignable_v, is_trivially_copy_assignable_v)
(is_trivially_move_assignable_v, is_trivially_destructible_v)
(is_nothrow_constructible_v, is_nothrow_default_constructible_v)
(is_nothrow_copy_constructible_v, is_nothrow_move_constructible_v)
(is_nothrow_assignable_v, is_nothrow_copy_assignable_v)
(is_nothrow_move_assignable_v, is_nothrow_destructible_v)
(has_virtual_destructor_v, alignment_of_v, rank_v, extent_v)
(is_same_v, is_base_of_v, is_convertible_v): Likewise.
* testsuite/19_diagnostics/error_code/is_error_code_v.cc: Likewise.
* testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
Likewise.
* testsuite/20_util/ratio/requirements/ratio_equal_v.cc: Likewise.
* testsuite/20_util/tuple/tuple_size_v.cc: Likewise.
* testsuite/20_util/variable_templates_for_traits.cc: Likewise.
From-SVN: r238892
2016-07-29 22:01:39 +03:00
Ville Voutilainen
ca8f2cb137
Implement std::string_view and P0254r2,
...
Integrating std::string_view and std::string.
* include/Makefile.am: Add string_view and string_view.tcc
to the exported headers.
* include/Makefile.in: Likewise.
* include/bits/basic_string.h: Include <string_view> in C++17 mode.
(__sv_type): New.
(basic_string(__sv_type, const _Alloc&)): Likewise.
(operator=(__sv_type)): Likewise.
(operator __sv_type()): Likewise.
(operator+=(__sv_type)): Likewise.
(append(__sv_type __sv)): Likewise.
(append(__sv_type, size_type, size_type)): Likewise.
(assign(__sv_type)): Likewise.
(assign(__sv_type, size_type, size_type)): Likewise.
(insert(size_type, __sv_type)): Likewise.
(insert(size_type, __sv_type, size_type, size_type)): Likewise.
(replace(size_type, size_type, __sv_type)): Likewise.
(replace(size_type, size_type, __sv_type, size_type, size_type)):
Likewise.
(replace(const_iterator, const_iterator, __sv_type)): Likewise.
(find(__sv_type, size_type)): Likewise.
(rfind(__sv_type, size_type)): Likewise.
(find_first_of(__sv_type, size_type)): Likewise.
(find_last_of(__sv_type, size_type)): Likewise.
(find_first_not_of(__sv_type, size_type)): Likewise.
(find_last_not_of(__sv_type, size_type)): Likewise.
(compare(__sv_type)): Likewise.
(compare(size_type, size_type, __sv_type)): Likewise.
(compare(size_type, size_type, __sv_type, size_type, size_type)):
Likewise.
* include/bits/string_view.tcc: New.
* include/std/string_view: Likewise.
* testsuite/21_strings/basic_string/cons/char/7.cc: Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
* testsuite/21_strings/basic_string/modifiers/append/char/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/compare/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/find/char/5.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
Likewise.
* testsuite/21_strings/basic_string/operators/char/5.cc: Likewise.
* testsuite/21_strings/basic_string/operators/wchar_t/5.cc: Likewise.
* testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/char/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/char/2.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/char/3.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc: Likewise.
* testsuite/21_strings/basic_string_view/element_access/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
Likewise.
* testsuite/21_strings/basic_string_view/include.cc: Likewise.
* testsuite/21_strings/basic_string_view/inserters/char/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/inserters/char/2.cc: Likewise.
* testsuite/21_strings/basic_string_view/inserters/char/3.cc: Likewise.
* testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
Likewise.
* testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operators/char/2.cc: Likewise.
* testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/range_access/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
Likewise.
* testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
* testsuite/21_strings/basic_string_view/types/1.cc: Likewise.
From-SVN: r238823
2016-07-28 18:15:26 +03:00
Georeth Chow
a837417c79
Fix missing qualification in <ext/rope>
...
2016-07-25 Georeth Chow <georeth2010@gmail.com>
* include/ext/ropeimpl.h (rope<>::_S_dump(_RopeRep*, int)): Qualify
_S_concat enumerator.
* testsuite/ext/rope/6.cc: New test.
From-SVN: r238711
2016-07-25 13:56:12 +01:00
Jonathan Wakely
8cab3d18f0
Move allocator in std::string and RB tree move constructors
...
PR libstdc++/71964
* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
(basic_string::_Alloc_hider(pointer, _Alloc&&)): Add constructor.
* include/bits/stl_tree.h (_Rb_tree(_Rb_tree&&)): Move allocator.
* testsuite/21_strings/basic_string/allocator/71964.cc: New test.
* testsuite/23_containers/set/allocator/71964.cc: New test.
From-SVN: r238647
2016-07-22 16:03:11 +01:00
Jonathan Wakely
8b649cd3ba
Fix naming, qualification and broken test for propagate_const
...
* include/experimental/propagate_const (propagate_const::__t): Rename
to _M_t and remove comment. Qualify std::move and std::forward.
* testsuite/experimental/propagate_const/cons/default.cc: Fix test.
From-SVN: r238611
2016-07-21 20:39:03 +01:00
Jonathan Wakely
e87b7d52c3
LWG 2441 Provide exact-width atomic typedefs
...
* include/std/atomic (atomic_int8_t, atomic_uint8_t, atomic_int16_t)
(atomic_uint16_t, atomic_int32_t, atomic_uint32_t, atomic_int64_t)
(atomic_uint64_t): Define (LWG 2441).
* testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc: Remove empty
lines.
* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Test for
the new types.
* doc/xml/manual/intro.xml: Document DR 2441 status.
From-SVN: r238534
2016-07-20 19:21:59 +01:00