[Bug c++/85254] boost::is_final does not work for template types
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85254 --- Comment #8 from ville at gcc dot gnu.org --- Author: ville Date: Sat Oct 26 17:32:24 2019 New Revision: 277474 URL: https://gcc.gnu.org/viewcvs?rev=277474=gcc=rev Log: PR c++/85254 Backport from mainline 2019-06-01 Ville Voutilainen PR c++/85254 * class.c (fixup_type_variants): Handle CLASSTYPE_FINAL. Modified: branches/gcc-9-branch/gcc/cp/ChangeLog branches/gcc-9-branch/gcc/cp/class.c branches/gcc-9-branch/gcc/testsuite/g++.dg/ext/is_final.C
[Bug c++/85254] boost::is_final does not work for template types
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85254 --- Comment #6 from ville at gcc dot gnu.org --- Author: ville Date: Sat Jun 1 10:57:12 2019 New Revision: 271835 URL: https://gcc.gnu.org/viewcvs?rev=271835=gcc=rev Log: PR c++/85254 gcc/cp PR c++/85254 * class.c (fixup_type_variants): Handle CLASSTYPE_FINAL. testsuite/ PR c++/85254 * g++.dg/ext/is_final.C: Amend. Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/class.c trunk/gcc/testsuite/g++.dg/ext/is_final.C
[Bug libstdc++/89825] Jump table for variant visitation could be shortened for never empty variants
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89825 --- Comment #5 from ville at gcc dot gnu.org --- Author: ville Date: Tue Mar 26 15:00:05 2019 New Revision: 269947 URL: https://gcc.gnu.org/viewcvs?rev=269947=gcc=rev Log: PR libstdc++/89825 Fix based on a suggestion by Antony Polukhin. * include/std/variant (_Extra_visit_slot_needed): New. (_Multi_array): Use it. (_S_apply_all_alts): Likewise. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/variant
[Bug libstdc++/89824] Variant jump table reserves space for __variant_cookie twice
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89824 --- Comment #1 from ville at gcc dot gnu.org --- Author: ville Date: Tue Mar 26 12:41:59 2019 New Revision: 269941 URL: https://gcc.gnu.org/viewcvs?rev=269941=gcc=rev Log: PR libstdc++/89824 Fix based on a suggestion by Antony Polukhin. * include/std/variant (__gen_vtable): Don't reserve an additional table slot, _Multi_array already does that. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/variant
[Bug libstdc++/89816] [9 Regression] std::variant move construction regressed since GCC 8.3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89816 --- Comment #11 from ville at gcc dot gnu.org --- Author: ville Date: Tue Mar 26 12:07:26 2019 New Revision: 269940 URL: https://gcc.gnu.org/viewcvs?rev=269940=gcc=rev Log: PR libstdc++/89816 Fix based on a suggestion by Antony Polukhin. * include/std/variant (__variant_construct): Capture a pointer to the storage and visit just one variant. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/variant
[Bug libstdc++/85517] std::variant exception safety problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85517 --- Comment #4 from ville at gcc dot gnu.org --- Author: ville Date: Wed Mar 6 12:56:05 2019 New Revision: 269422 URL: https://gcc.gnu.org/viewcvs?rev=269422=gcc=rev Log: Rewrite variant, also PR libstdc++/85517 * include/std/variant (__do_visit): New. (__variant_cast): Likewise. (__variant_cookie): Likewise. (__erased_*): Remove. (_Variant_storage::_S_vtable): Likewise. (_Variant_storage::__M_reset_impl): Adjust to use __do_visit. (_Variant_storage::__M_reset): Adjust. (__variant_construct): New. (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use __variant_construct. (_Move_ctor_base(_Move_ctor_base&&)): Likewise. (_Move_ctor_base::__M_destructive_copy): New. (_Move_ctor_base::__M_destructive_move): Adjust to use __variant_construct. (_Copy_assign_base::operator=): Adjust to use __do_visit. (_Copy_assign_alias): Adjust to check both copy assignment and copy construction for triviality. (_Move_assign_base::operator=): Adjust to use __do_visit. (_Multi_array): Add support for visitors that accept and return a __variant_cookie. (__gen_vtable_impl::_S_apply_all_alts): Likewise. (__gen_vtable_impl::_S_apply_single_alt): Likewise. (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate a __variant_cookie temporary for a variant that is valueless and.. (__gen_vtable_impl::__visit_invoke): ..adjust here. (__gen_vtable::_Array_type): Conditionally make space for the __variant_cookie visitor case. (__variant_construct_by_index): New. (get_if): Adjust to use std::addressof. (relops): Adjust to use __do_visit. (variant): Add __variant_cast and __variant_construct_by_index as friends. (variant::emplace): Use _M_reset() and __variant_construct_by_index instead of self-destruction. (variant::swap): Adjust to use __do_visit. (visit): Reimplement in terms of __do_visit. (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit. * testsuite/20_util/variant/compile.cc: Adjust. * testsuite/20_util/variant/run.cc: Likewise. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/variant trunk/libstdc++-v3/testsuite/20_util/variant/compile.cc trunk/libstdc++-v3/testsuite/20_util/variant/run.cc
[Bug libstdc++/87855] std::optional only copy-constructible if T is trivially copy-constructible
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87855 --- Comment #17 from ville at gcc dot gnu.org --- Author: ville Date: Mon Nov 19 15:05:18 2018 New Revision: 266278 URL: https://gcc.gnu.org/viewcvs?rev=266278=gcc=rev Log: PR libstdc++/87855 Also implement P0602R4 (variant and optional should propagate copy/move triviality) for std::optional. * include/std/optional (_Optional_payload): Change the main constraints to check constructibility in addition to assignability. (operator=): Make constexpr. (_M_reset): Likewise. (_M_construct): Likewise. (operator->): Likewise. * testsuite/20_util/optional/assignment/8.cc: Adjust. * testsuite/20_util/optional/assignment/9.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/optional/assignment/9.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/optional trunk/libstdc++-v3/testsuite/20_util/optional/assignment/8.cc
[Bug libstdc++/87619] sizeof(std::variant) can be reduced if its variant_size is UCHAR_MAX
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87619 --- Comment #1 from ville at gcc dot gnu.org --- Author: ville Date: Wed Oct 17 19:08:51 2018 New Revision: 265247 URL: https://gcc.gnu.org/viewcvs?rev=265247=gcc=rev Log: PR libstdc++/87619 * include/std/variant (__select_index): Fix an off-by-one. * testsuite/20_util/variant/87619.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/variant/87619.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/variant
[Bug c++/87093] is_constructible (__is_constructible() instrinsic) explicitly instantiates conversion member function of source
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87093 --- Comment #6 from ville at gcc dot gnu.org --- Author: ville Date: Wed Sep 12 21:43:49 2018 New Revision: 264254 URL: https://gcc.gnu.org/viewcvs?rev=264254=gcc=rev Log: PR c++/87093 Backport from mainline 2018-09-13 Ville Voutilainen gcc/cp PR c++/87093 * method.c (constructible_expr): We're in an unevaluated context in all cases, not just for class targets. testsuite/ PR c++/87093 * g++.dg/ext/is_constructible2.C: New. Added: branches/gcc-8-branch/gcc/testsuite/g++.dg/ext/is_constructible2.C Modified: branches/gcc-8-branch/gcc/cp/ChangeLog branches/gcc-8-branch/gcc/cp/method.c
[Bug c++/87093] is_constructible (__is_constructible() instrinsic) explicitly instantiates conversion member function of source
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87093 --- Comment #5 from ville at gcc dot gnu.org --- Author: ville Date: Wed Sep 12 21:10:43 2018 New Revision: 264253 URL: https://gcc.gnu.org/viewcvs?rev=264253=gcc=rev Log: PR c++/87093 gcc/cp PR c++/87093 * method.c (constructible_expr): We're in an unevaluated context in all cases, not just for class targets. testsuite/ PR c++/87093 * g++.dg/ext/is_constructible2.C: New. Added: trunk/gcc/testsuite/g++.dg/ext/is_constructible2.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/method.c
[Bug c++/79133] lambda capture shadowing parameter & decltype confusion
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79133 --- Comment #6 from ville at gcc dot gnu.org --- Author: ville Date: Tue Aug 7 13:46:16 2018 New Revision: 263357 URL: https://gcc.gnu.org/viewcvs?rev=263357=gcc=rev Log: PR c++/79133 gcc/cp/ PR c++/79133 * name-lookup.c (check_local_shadow): Reject captures and parameters with the same name. testsuite/ PR c++/79133 * g++.dg/cpp0x/lambda/lambda-shadow3.C: New. * g++.dg/cpp1y/lambda-generic-variadic18.C: Likewise. Added: trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow3.C trunk/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic18.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/name-lookup.c
[Bug c++/86398] is_trivially_constructible always returns true even when is_constructible returns false
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86398 --- Comment #7 from ville at gcc dot gnu.org --- Author: ville Date: Wed Jul 4 20:56:12 2018 New Revision: 262424 URL: https://gcc.gnu.org/viewcvs?rev=262424=gcc=rev Log: Backport from mainline 2018-07-04 Ville Voutilainen gcc/cp/ PR c++/86398 * method.c (is_trivially_xible): Return false if is_xible_helper returns a NULL_TREE. testsuite/ PR c++/86398 * g++.dg/ext/is_trivially_constructible1.C: Add new tests. Modified: branches/gcc-8-branch/gcc/cp/ChangeLog branches/gcc-8-branch/gcc/cp/method.c branches/gcc-8-branch/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
[Bug c++/86398] is_trivially_constructible always returns true even when is_constructible returns false
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86398 --- Comment #6 from ville at gcc dot gnu.org --- Author: ville Date: Wed Jul 4 19:21:38 2018 New Revision: 262420 URL: https://gcc.gnu.org/viewcvs?rev=262420=gcc=rev Log: PR c++/86398 gcc/cp/ PR c++/86398 * method.c (is_trivially_xible): Return false if is_xible_helper returns a NULL_TREE. testsuite/ PR c++/86398 * g++.dg/ext/is_trivially_constructible1.C: Add new tests. Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/method.c trunk/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
[Bug libstdc++/80165] Constexpr tuple of variant doesn't work
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80165 --- Comment #8 from ville at gcc dot gnu.org --- Author: ville Date: Sun May 13 10:36:12 2018 New Revision: 260209 URL: https://gcc.gnu.org/viewcvs?rev=260209=gcc=rev Log: PR libstdc++/80165 * testsuite/20_util/variant/80165.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/variant/80165.cc Modified: trunk/libstdc++-v3/ChangeLog
[Bug c++/65923] False positive for warning about literal operator suffix and using
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65923 --- Comment #7 from ville at gcc dot gnu.org --- Author: ville Date: Wed Apr 4 16:05:11 2018 New Revision: 259087 URL: https://gcc.gnu.org/viewcvs?rev=259087=gcc=rev Log: PR c++/65923 gcc/cp PR c++/65923 * decl.c (grokfndecl): Handle standard UDL diagnostics here.. * parser.c (cp_parser_unqualified_id): ..not here. testsuite/ PR c++/65923 * g++.dg/diagnostic/pr65923.C: New. Added: trunk/gcc/testsuite/g++.dg/diagnostic/pr65923.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/decl.c trunk/gcc/cp/parser.c
[Bug libstdc++/84601] [8 Regression] std::optional<std::pair<int, int>> is not assignment copyable
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84601 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Tue Mar 6 21:43:03 2018 New Revision: 258304 URL: https://gcc.gnu.org/viewcvs?rev=258304=gcc=rev Log: PR libstdc++/84601 * include/std/optional (_Optional_payload): Split into multiple specializations that can handle different cases of trivial or non-trivial assignment operators. * testsuite/20_util/optional/84601.cc: New. * testsuite/20_util/optional/cons/value_neg.cc: Adjust. Added: trunk/libstdc++-v3/testsuite/20_util/optional/84601.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/optional trunk/libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc
[Bug c++/83895] [8 Regression] -Wparentheses warns about pointer-to-member typedefs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83895 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Mon Jan 22 12:44:33 2018 New Revision: 256942 URL: https://gcc.gnu.org/viewcvs?rev=256942=gcc=rev Log: PR c++/83895 cp/ * decl.c (grokdeclarator): Don't diagnose extra parens on typedefs. testsuite/ * g++.dg/warn/83895.C: New. Added: trunk/gcc/testsuite/g++.dg/warn/83895.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/decl.c
[Bug libstdc++/68430] std::is_constructible::value == true for unconstructible type T
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68430 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Mon Dec 18 18:46:30 2017 New Revision: 255785 URL: https://gcc.gnu.org/viewcvs?rev=255785=gcc=rev Log: PR libstdc++/68430 * testsuite/20_util/is_constructible/68430.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/is_constructible/68430.cc Modified: trunk/libstdc++-v3/ChangeLog
[Bug libstdc++/80675] Incorrect implementation of LWG 2534
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80675 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Wed Jun 21 21:09:46 2017 New Revision: 249471 URL: https://gcc.gnu.org/viewcvs?rev=249471=gcc=rev Log: PR libstdc++/80675, PR libstdc++/80940 Backport from mainline 2017-06-21 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/80675 PR libstdc++/80940 * include/std/istream: (__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New. (__do_is_convertible_to_basic_istream_impl): Likewise. (__is_convertible_to_basic_istream_impl): Likewise. (__is_convertible_to_basic_istream): Use the new base. (__rvalue_istream_type): New. (operator>>(_Istream&&, _Tp&&)): Use the new helper alias for the SFINAE check, convert to the helper alias type before doing the actual extraction. * include/std/ostream: (__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New. (__do_is_convertible_to_basic_ostream_impl): Likewise. (__is_convertible_to_basic_ostream_impl): Likewise. (__is_convertible_to_basic_ostream): Use the new base. (__rvalue_ostream_type): New. (operator<<(_Ostream&&, const _Tp&)): Use the new helper alias for the SFINAE check, convert to the helper alias type before doing the actual insertion. * testsuite/27_io/rvalue_streams-2.cc: Add new tests. Modified: branches/gcc-7-branch/libstdc++-v3/ChangeLog branches/gcc-7-branch/libstdc++-v3/include/std/istream branches/gcc-7-branch/libstdc++-v3/include/std/ostream branches/gcc-7-branch/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
[Bug libstdc++/80940] [7/8 Regression] Private inheritance from std::ostream - compilation error for custom operator <
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80940 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Wed Jun 21 21:09:46 2017 New Revision: 249471 URL: https://gcc.gnu.org/viewcvs?rev=249471=gcc=rev Log: PR libstdc++/80675, PR libstdc++/80940 Backport from mainline 2017-06-21 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/80675 PR libstdc++/80940 * include/std/istream: (__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New. (__do_is_convertible_to_basic_istream_impl): Likewise. (__is_convertible_to_basic_istream_impl): Likewise. (__is_convertible_to_basic_istream): Use the new base. (__rvalue_istream_type): New. (operator>>(_Istream&&, _Tp&&)): Use the new helper alias for the SFINAE check, convert to the helper alias type before doing the actual extraction. * include/std/ostream: (__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New. (__do_is_convertible_to_basic_ostream_impl): Likewise. (__is_convertible_to_basic_ostream_impl): Likewise. (__is_convertible_to_basic_ostream): Use the new base. (__rvalue_ostream_type): New. (operator<<(_Ostream&&, const _Tp&)): Use the new helper alias for the SFINAE check, convert to the helper alias type before doing the actual insertion. * testsuite/27_io/rvalue_streams-2.cc: Add new tests. Modified: branches/gcc-7-branch/libstdc++-v3/ChangeLog branches/gcc-7-branch/libstdc++-v3/include/std/istream branches/gcc-7-branch/libstdc++-v3/include/std/ostream branches/gcc-7-branch/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
[Bug libstdc++/80940] [7/8 Regression] Private inheritance from std::ostream - compilation error for custom operator <
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80940 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Wed Jun 21 19:53:26 2017 New Revision: 249468 URL: https://gcc.gnu.org/viewcvs?rev=249468=gcc=rev Log: PR libstdc++/80675, PR libstdc++/80940 * include/std/istream: (__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New. (__do_is_convertible_to_basic_istream_impl): Likewise. (__is_convertible_to_basic_istream_impl): Likewise. (__is_convertible_to_basic_istream): Use the new base. (__rvalue_istream_type): New. (operator>>(_Istream&&, _Tp&&)): Use the new helper alias for the SFINAE check, convert to the helper alias type before doing the actual extraction. * include/std/ostream: (__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New. (__do_is_convertible_to_basic_ostream_impl): Likewise. (__is_convertible_to_basic_ostream_impl): Likewise. (__is_convertible_to_basic_ostream): Use the new base. (__rvalue_ostream_type): New. (operator<<(_Ostream&&, const _Tp&)): Use the new helper alias for the SFINAE check, convert to the helper alias type before doing the actual insertion. * testsuite/27_io/rvalue_streams-2.cc: Add new tests. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/istream trunk/libstdc++-v3/include/std/ostream trunk/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
[Bug libstdc++/80675] Incorrect implementation of LWG 2534
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80675 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Wed Jun 21 19:53:26 2017 New Revision: 249468 URL: https://gcc.gnu.org/viewcvs?rev=249468=gcc=rev Log: PR libstdc++/80675, PR libstdc++/80940 * include/std/istream: (__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New. (__do_is_convertible_to_basic_istream_impl): Likewise. (__is_convertible_to_basic_istream_impl): Likewise. (__is_convertible_to_basic_istream): Use the new base. (__rvalue_istream_type): New. (operator>>(_Istream&&, _Tp&&)): Use the new helper alias for the SFINAE check, convert to the helper alias type before doing the actual extraction. * include/std/ostream: (__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New. (__do_is_convertible_to_basic_ostream_impl): Likewise. (__is_convertible_to_basic_ostream_impl): Likewise. (__is_convertible_to_basic_ostream): Use the new base. (__rvalue_ostream_type): New. (operator<<(_Ostream&&, const _Tp&)): Use the new helper alias for the SFINAE check, convert to the helper alias type before doing the actual insertion. * testsuite/27_io/rvalue_streams-2.cc: Add new tests. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/istream trunk/libstdc++-v3/include/std/ostream trunk/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
[Bug c++/80812] [8 Regression] ICE: in build_value_init_noctor, at cp/init.c:483
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80812 --- Comment #4 from ville at gcc dot gnu.org --- Author: ville Date: Thu Jun 1 11:09:41 2017 New Revision: 248788 URL: https://gcc.gnu.org/viewcvs?rev=248788=gcc=rev Log: PR c++/80812 cp/ PR c++/80812 * method.c (constructible_expr): Strip array types before calling build_value_init. libstdc++/ PR c++/80812 * testsuite/20_util/is_constructible/80812.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/is_constructible/80812.cc Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/method.c
[Bug c++/80682] __is_trivially_constructible(void, int) returns true.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80682 --- Comment #6 from ville at gcc dot gnu.org --- Author: ville Date: Wed May 17 13:54:23 2017 New Revision: 248153 URL: https://gcc.gnu.org/viewcvs?rev=248153=gcc=rev Log: Implement new C++ intrinsics __is_assignable and __is_constructible. c-family/ Implement new C++ intrinsics __is_assignable and __is_constructible. * c-common.c (__is_assignable, __is_constructible): New. * c-common.h (RID_IS_ASSIGNABLE, RID_IS_CONSTRUCTIBLE): Likewise. cp/ PR c++/80654 PR c++/80682 Implement new C++ intrinsics __is_assignable and __is_constructible. * cp-tree.h (CPTK_IS_ASSIGNABLE, CPTK_IS_CONSTRUCTIBLE): New. (is_xible): New. * cxx-pretty-print.c (pp_cxx_trait_expression): Handle CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE. * method.c (constructible_expr): Set cp_unevaluated. (is_xible_helper): New. (is_trivially_xible): Adjust. (is_xible): New. * parser.c (cp_parser_primary_expression): Handle RID_IS_ASSIGNABLE and RID_IS_CONSTRUCTIBLE. (cp_parser_trait_expr): Likewise. * semantics.c (trait_expr_value): Handle CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE. testsuite/ * g++.dg/ext/80654.C: New. libstdc++-v3/ Implement new C++ intrinsics __is_assignable and __is_constructible. * include/std/type_traits (__do_is_static_castable_impl): Remove. (__is_static_castable_impl, __is_static_castable_safe): Likewise. (__is_static_castable, __do_is_direct_constructible_impl): Likewise. (__is_direct_constructible_impl): Likewise. (__is_direct_constructible_new_safe): Likewise. (__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise. (__is_direct_constructible_ref_cast): Likewise. (__is_direct_constructible_new, __is_direct_constructible): Likewise. (__do_is_nary_constructible_impl): Likewise. (__is_nary_constructible_impl, __is_nary_constructible): Likewise. (__is_constructible_impl): Likewise. (is_constructible): Call the intrinsic. (__is_assignable_helper): Remove. (is_assignable): Call the intrinsic. (is_trivially_constructible): Likewise. (__is_trivially_copy_constructible_impl): New. (is_trivially_copy_constructible): Use it. (__is_trivially_move_constructible_impl): New. (is_trivially_move_constructible): Use it. (is_trivially_assignable): Call the intrinsic. (__is_trivially_copy_assignable_impl): New. (is_trivially_copy_assignable): Use it. (__is_trivially_move_assignable_impl): New. (is_trivially_move_assignable): Use it. (testsuite/20_util/declval/requirements/1_neg.cc): Adjust. (testsuite/20_util/is_trivially_copy_assignable/value.cc): Add test for void. (testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise. (testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise. (testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise. (testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust. (testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc): Likewise. Added: trunk/gcc/testsuite/g++.dg/ext/80654.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c-family/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/cxx-pretty-print.c trunk/gcc/cp/method.c trunk/gcc/cp/parser.c trunk/gcc/cp/semantics.c trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/type_traits trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc trunk/libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc trunk/libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc trunk/libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc trunk/libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc trunk/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc trunk/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
[Bug libstdc++/80654] is_trivially_copy_constructible fails with compiler error with vector of uncopyable objects
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80654 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Wed May 17 13:54:23 2017 New Revision: 248153 URL: https://gcc.gnu.org/viewcvs?rev=248153=gcc=rev Log: Implement new C++ intrinsics __is_assignable and __is_constructible. c-family/ Implement new C++ intrinsics __is_assignable and __is_constructible. * c-common.c (__is_assignable, __is_constructible): New. * c-common.h (RID_IS_ASSIGNABLE, RID_IS_CONSTRUCTIBLE): Likewise. cp/ PR c++/80654 PR c++/80682 Implement new C++ intrinsics __is_assignable and __is_constructible. * cp-tree.h (CPTK_IS_ASSIGNABLE, CPTK_IS_CONSTRUCTIBLE): New. (is_xible): New. * cxx-pretty-print.c (pp_cxx_trait_expression): Handle CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE. * method.c (constructible_expr): Set cp_unevaluated. (is_xible_helper): New. (is_trivially_xible): Adjust. (is_xible): New. * parser.c (cp_parser_primary_expression): Handle RID_IS_ASSIGNABLE and RID_IS_CONSTRUCTIBLE. (cp_parser_trait_expr): Likewise. * semantics.c (trait_expr_value): Handle CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE. testsuite/ * g++.dg/ext/80654.C: New. libstdc++-v3/ Implement new C++ intrinsics __is_assignable and __is_constructible. * include/std/type_traits (__do_is_static_castable_impl): Remove. (__is_static_castable_impl, __is_static_castable_safe): Likewise. (__is_static_castable, __do_is_direct_constructible_impl): Likewise. (__is_direct_constructible_impl): Likewise. (__is_direct_constructible_new_safe): Likewise. (__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise. (__is_direct_constructible_ref_cast): Likewise. (__is_direct_constructible_new, __is_direct_constructible): Likewise. (__do_is_nary_constructible_impl): Likewise. (__is_nary_constructible_impl, __is_nary_constructible): Likewise. (__is_constructible_impl): Likewise. (is_constructible): Call the intrinsic. (__is_assignable_helper): Remove. (is_assignable): Call the intrinsic. (is_trivially_constructible): Likewise. (__is_trivially_copy_constructible_impl): New. (is_trivially_copy_constructible): Use it. (__is_trivially_move_constructible_impl): New. (is_trivially_move_constructible): Use it. (is_trivially_assignable): Call the intrinsic. (__is_trivially_copy_assignable_impl): New. (is_trivially_copy_assignable): Use it. (__is_trivially_move_assignable_impl): New. (is_trivially_move_assignable): Use it. (testsuite/20_util/declval/requirements/1_neg.cc): Adjust. (testsuite/20_util/is_trivially_copy_assignable/value.cc): Add test for void. (testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise. (testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise. (testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise. (testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust. (testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc): Likewise. Added: trunk/gcc/testsuite/g++.dg/ext/80654.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c-family/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/cxx-pretty-print.c trunk/gcc/cp/method.c trunk/gcc/cp/parser.c trunk/gcc/cp/semantics.c trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/type_traits trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc trunk/libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc trunk/libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc trunk/libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc trunk/libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc trunk/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc trunk/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
[Bug c++/80682] __is_trivially_constructible(void, int) returns true.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80682 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Thu May 11 07:44:29 2017 New Revision: 247880 URL: https://gcc.gnu.org/viewcvs?rev=247880=gcc=rev Log: PR c++/80682 cp/ PR c++/80682 * method.c (is_trivially_xible): Reject void types. testsuite/ PR c++/80682 * g++.dg/ext/is_trivially_constructible1.C: Add tests for void target. Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/method.c trunk/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
[Bug libstdc++/79141] [6/7 Regression] std::pair<int,int> p = {}; fails to compile due to ambiguous overload
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79141 --- Comment #5 from ville at gcc dot gnu.org --- Author: ville Date: Mon Apr 3 21:20:23 2017 New Revision: 246663 URL: https://gcc.gnu.org/viewcvs?rev=246663=gcc=rev Log: PR libstdc++/79141 Backport from mainline 2017-04-03 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/79141 * include/bits/stl_pair.h (__nonesuch_no_braces): New. (operator=(typename conditional< __and_<is_copy_assignable<_T1>, is_copy_assignable<_T2>>::value, const pair&, const __nonesuch&>::type)): Change __nonesuch to __nonesuch_no_braces. (operator=(typename conditional< __not_<__and_<is_copy_assignable<_T1>, is_copy_assignable<_T2>>>::value, const pair&, const __nonesuch&>::type)): Likewise. (operator=(typename conditional< __and_<is_move_assignable<_T1>, is_move_assignable<_T2>>::value, pair&&, __nonesuch&&>::type)): Likewise. * testsuite/20_util/pair/79141.cc: New. Added: branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/pair/79141.cc Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/include/bits/stl_pair.h
[Bug libstdc++/79141] [6/7 Regression] std::pair<int,int> p = {}; fails to compile due to ambiguous overload
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79141 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Mon Apr 3 16:30:58 2017 New Revision: 246653 URL: https://gcc.gnu.org/viewcvs?rev=246653=gcc=rev Log: PR libstdc++/79141 * include/bits/stl_pair.h (__nonesuch_no_braces): New. (operator=(typename conditional< __and_<is_copy_assignable<_T1>, is_copy_assignable<_T2>>::value, const pair&, const __nonesuch&>::type)): Change __nonesuch to __nonesuch_no_braces. (operator=(typename conditional< __not_<__and_<is_copy_assignable<_T1>, is_copy_assignable<_T2>>>::value, const pair&, const __nonesuch&>::type)): Likewise. (operator=(typename conditional< __and_<is_move_assignable<_T1>, is_move_assignable<_T2>>::value, pair&&, __nonesuch&&>::type)): Likewise. * testsuite/20_util/pair/79141.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/pair/79141.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_pair.h
[Bug c++/35878] [LWG 2302] Useless NULL pointer check when constructing object
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35878 --- Comment #10 from ville at gcc dot gnu.org --- Author: ville Date: Tue Mar 21 06:36:22 2017 New Revision: 246301 URL: https://gcc.gnu.org/viewcvs?rev=246301=gcc=rev Log: gcc/ PR c++/35878 * cp/init.c (std_placement_new_fn_p): New. (build_new_1): Call it. testsuite/ PR c++/35878 * g++.dg/init/pr35878_1.C: New. * g++.dg/init/pr35878_2.C: Likewise. * g++.dg/init/pr35878_3.C: Likewise. Added: trunk/gcc/testsuite/g++.dg/init/pr35878_1.C trunk/gcc/testsuite/g++.dg/init/pr35878_2.C trunk/gcc/testsuite/g++.dg/init/pr35878_3.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/init.c
[Bug libstdc++/80034] [5/6 Regression] unqualified calls to std::distance in std::list::sort
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80034 --- Comment #4 from ville at gcc dot gnu.org --- Author: ville Date: Mon Mar 13 19:44:42 2017 New Revision: 246109 URL: https://gcc.gnu.org/viewcvs?rev=246109=gcc=rev Log: PR libstdc++/80034 * include/bits/list.tcc (merge(list&&)): Use const for the size_t in the function and in the catch-block, qualify uses of std::distance. (merge(list&&, _StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/80034.cc: New. Added: branches/gcc-5-branch/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc Modified: branches/gcc-5-branch/libstdc++-v3/ChangeLog branches/gcc-5-branch/libstdc++-v3/include/bits/list.tcc
[Bug libstdc++/80034] [5/6 Regression] unqualified calls to std::distance in std::list::sort
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80034 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Mon Mar 13 19:43:27 2017 New Revision: 246108 URL: https://gcc.gnu.org/viewcvs?rev=246108=gcc=rev Log: PR libstdc++/80034 * include/bits/list.tcc (merge(list&&)): Use const for the size_t in the function and in the catch-block, qualify uses of std::distance. (merge(list&&, _StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/80034.cc: New. Added: branches/gcc-6-branch/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/include/bits/list.tcc
[Bug libstdc++/80034] [5/6 Regression] unqualified calls to std::distance in std::list::sort
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80034 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Mon Mar 13 19:41:50 2017 New Revision: 246107 URL: https://gcc.gnu.org/viewcvs?rev=246107=gcc=rev Log: PR libstdc++/80034 * include/bits/list.tcc (merge(list&&)): Use const for the size_t in the catch-block. (merge(list&&, _StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/80034.cc: New. Added: trunk/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/list.tcc
[Bug libstdc++/78389] list::merge and list::sort are not exception safe
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389 --- Comment #8 from ville at gcc dot gnu.org --- Author: ville Date: Mon Jan 16 13:32:39 2017 New Revision: 244493 URL: https://gcc.gnu.org/viewcvs?rev=244493=gcc=rev Log: PR libstdc++/78389 fix backwards size adjustments Backport from mainline 2017-01-16 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/78389 * include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments. (merge(list&&, _StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/78389.cc: Add better test for the sizes. Modified: branches/gcc-5-branch/libstdc++-v3/ChangeLog branches/gcc-5-branch/libstdc++-v3/include/bits/list.tcc branches/gcc-5-branch/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
[Bug libstdc++/78389] list::merge and list::sort are not exception safe
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389 --- Comment #7 from ville at gcc dot gnu.org --- Author: ville Date: Mon Jan 16 13:30:58 2017 New Revision: 244492 URL: https://gcc.gnu.org/viewcvs?rev=244492=gcc=rev Log: PR libstdc++/78389 fix backwards size adjustments Backport from mainline 2017-01-16 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/78389 * include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments. (merge(list&&, _StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/78389.cc: Add better test for the sizes. Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/include/bits/list.tcc branches/gcc-6-branch/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
[Bug libstdc++/78389] list::merge and list::sort are not exception safe
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389 --- Comment #6 from ville at gcc dot gnu.org --- Author: ville Date: Mon Jan 16 11:36:33 2017 New Revision: 244490 URL: https://gcc.gnu.org/viewcvs?rev=244490=gcc=rev Log: PR libstdc++/78389 fix backwards size adjustments. PR libstdc++/78389 * include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments. (merge(list&&, _StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/78389.cc: Add better test for the sizes. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/list.tcc trunk/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
[Bug libstdc++/78389] list::merge and list::sort are not exception safe
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389 --- Comment #4 from ville at gcc dot gnu.org --- Author: ville Date: Sun Jan 15 16:27:08 2017 New Revision: 244475 URL: https://gcc.gnu.org/viewcvs?rev=244475=gcc=rev Log: Backport from mainline 2017-01-13 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/78389 * include/bits/list.tcc (merge(list&&)): Adjust list sizes if the comparator throws. (merge(list&&, _StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/78389.cc: New. Added: branches/gcc-5-branch/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc Modified: branches/gcc-5-branch/libstdc++-v3/ChangeLog branches/gcc-5-branch/libstdc++-v3/include/bits/list.tcc
[Bug libstdc++/78389] list::merge and list::sort are not exception safe
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Sun Jan 15 16:11:46 2017 New Revision: 244474 URL: https://gcc.gnu.org/viewcvs?rev=244474=gcc=rev Log: Backport from mainline 2017-01-13 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/78389 * include/bits/list.tcc (merge(list&&)): Adjust list sizes if the comparator throws. (merge(list&&, _StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/78389.cc: New. Added: branches/gcc-6-branch/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/include/bits/list.tcc
[Bug libstdc++/78389] list::merge and list::sort are not exception safe
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389 --- Comment #1 from ville at gcc dot gnu.org --- Author: ville Date: Fri Jan 13 14:46:25 2017 New Revision: 244439 URL: https://gcc.gnu.org/viewcvs?rev=244439=gcc=rev Log: PR libstdc++/78389 * include/bits/list.tcc (merge(list&&)): Adjust list sizes if the comparator throws. (merge(list&&, _StrictWeakOrdering)): Likewise. (sort()): Splice elements back from the scratch buffers if the comparator throws. (sort(_StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/78389.cc: New. Added: trunk/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/list.tcc
[Bug libstdc++/77727] Unwrapping std::optional constructor is not working for non-transferable object
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77727 --- Comment #6 from ville at gcc dot gnu.org --- Author: ville Date: Mon Oct 24 12:52:31 2016 New Revision: 241477 URL: https://gcc.gnu.org/viewcvs?rev=241477=gcc=rev Log: Backport from mainline: 2016-10-24 Ville Voutilainen <ville.voutilai...@gmail.com> Cross-port the latest resolution of LWG2756 and some bug-fixes to experimental::optional. PR libstdc++/77288 PR libstdc++/77727 * include/experimental/optional (_Optional_base): Remove constructors that take a _Tp. (__is_optional_impl, __is_optional): Remove. (__converts_from_optional): New. (optional(_Up&&)): Fix constraints, call base with in_place. (optional(const optional<_Up>&)): Fix constraints, use emplace. (optional(optional<_Up>&&)): Likewise. (operator=(_Up&&)): Fix constraints. (operator=(const optional<_Up>&)): Likewise. (operator=(optional<_Up>&&)): Likewise. (emplace(_Args&&...)): Constrain. (emplace(initializer_list<_Up>, _Args&&...)): Likewise. * testsuite/experimental/optional/77288.cc: New. * testsuite/experimental/optional/assignment/5.cc: Adjust. * testsuite/experimental/optional/cons/77727.cc: New. * testsuite/experimental/optional/cons/value.cc: Adjust. Added: branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/77288.cc branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/cons/77727.cc - copied, changed from r241461, branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/include/experimental/optional branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/cons/value.cc
[Bug libstdc++/77288] Std::experimental::optional::operator= implementation is broken in gcc 6.1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77288 --- Comment #12 from ville at gcc dot gnu.org --- Author: ville Date: Mon Oct 24 12:52:31 2016 New Revision: 241477 URL: https://gcc.gnu.org/viewcvs?rev=241477=gcc=rev Log: Backport from mainline: 2016-10-24 Ville Voutilainen <ville.voutilai...@gmail.com> Cross-port the latest resolution of LWG2756 and some bug-fixes to experimental::optional. PR libstdc++/77288 PR libstdc++/77727 * include/experimental/optional (_Optional_base): Remove constructors that take a _Tp. (__is_optional_impl, __is_optional): Remove. (__converts_from_optional): New. (optional(_Up&&)): Fix constraints, call base with in_place. (optional(const optional<_Up>&)): Fix constraints, use emplace. (optional(optional<_Up>&&)): Likewise. (operator=(_Up&&)): Fix constraints. (operator=(const optional<_Up>&)): Likewise. (operator=(optional<_Up>&&)): Likewise. (emplace(_Args&&...)): Constrain. (emplace(initializer_list<_Up>, _Args&&...)): Likewise. * testsuite/experimental/optional/77288.cc: New. * testsuite/experimental/optional/assignment/5.cc: Adjust. * testsuite/experimental/optional/cons/77727.cc: New. * testsuite/experimental/optional/cons/value.cc: Adjust. Added: branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/77288.cc branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/cons/77727.cc - copied, changed from r241461, branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/include/experimental/optional branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/cons/value.cc
[Bug libstdc++/77288] Std::experimental::optional::operator= implementation is broken in gcc 6.1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77288 --- Comment #11 from ville at gcc dot gnu.org --- Author: ville Date: Mon Oct 24 12:46:44 2016 New Revision: 241476 URL: https://gcc.gnu.org/viewcvs?rev=241476=gcc=rev Log: Cross-port the latest resolution of LWG2756 and some bug-fixes to experimental::optional. PR libstdc++/77288 PR libstdc++/77727 * include/experimental/optional (_Optional_base): Remove constructors that take a _Tp. (__is_optional_impl, __is_optional): Remove. (__converts_from_optional): New. (optional(_Up&&)): Fix constraints, call base with in_place. (optional(const optional<_Up>&)): Fix constraints, use emplace. (optional(optional<_Up>&&)): Likewise. (operator=(_Up&&)): Fix constraints. (operator=(const optional<_Up>&)): Likewise. (operator=(optional<_Up>&&)): Likewise. (emplace(_Args&&...)): Constrain. (emplace(initializer_list<_Up>, _Args&&...)): Likewise. * testsuite/experimental/optional/77288.cc: New. * testsuite/experimental/optional/assignment/5.cc: Adjust. * testsuite/experimental/optional/cons/77727.cc: New. * testsuite/experimental/optional/cons/value.cc: Adjust. Added: trunk/libstdc++-v3/testsuite/experimental/optional/77288.cc trunk/libstdc++-v3/testsuite/experimental/optional/cons/77727.cc - copied, changed from r241475, trunk/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/experimental/optional trunk/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc trunk/libstdc++-v3/testsuite/experimental/optional/cons/value.cc
[Bug libstdc++/77727] Unwrapping std::optional constructor is not working for non-transferable object
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77727 --- Comment #5 from ville at gcc dot gnu.org --- Author: ville Date: Mon Oct 24 12:46:44 2016 New Revision: 241476 URL: https://gcc.gnu.org/viewcvs?rev=241476=gcc=rev Log: Cross-port the latest resolution of LWG2756 and some bug-fixes to experimental::optional. PR libstdc++/77288 PR libstdc++/77727 * include/experimental/optional (_Optional_base): Remove constructors that take a _Tp. (__is_optional_impl, __is_optional): Remove. (__converts_from_optional): New. (optional(_Up&&)): Fix constraints, call base with in_place. (optional(const optional<_Up>&)): Fix constraints, use emplace. (optional(optional<_Up>&&)): Likewise. (operator=(_Up&&)): Fix constraints. (operator=(const optional<_Up>&)): Likewise. (operator=(optional<_Up>&&)): Likewise. (emplace(_Args&&...)): Constrain. (emplace(initializer_list<_Up>, _Args&&...)): Likewise. * testsuite/experimental/optional/77288.cc: New. * testsuite/experimental/optional/assignment/5.cc: Adjust. * testsuite/experimental/optional/cons/77727.cc: New. * testsuite/experimental/optional/cons/value.cc: Adjust. Added: trunk/libstdc++-v3/testsuite/experimental/optional/77288.cc trunk/libstdc++-v3/testsuite/experimental/optional/cons/77727.cc - copied, changed from r241475, trunk/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/experimental/optional trunk/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc trunk/libstdc++-v3/testsuite/experimental/optional/cons/value.cc
[Bug libstdc++/77802] [7 Regression] Boost Fiber doesn't compile
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77802 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Mon Oct 3 11:06:53 2016 New Revision: 240709 URL: https://gcc.gnu.org/viewcvs?rev=240709=gcc=rev Log: PR libstdc++/77802 * testsuite/20_util/tuple/77802.cc: New. Revert: 2016-09-21 Ville Voutilainen <ville.voutilai...@gmail.com> Implement LWG 2729 for tuple. * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Suppress conditionally. (_Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&&)): Likewise. (__is_tuple_impl_trait_impl, __is_tuple_impl_trait): New. (_Tuple_impl(const _Head&)): Constrain. (_Tuple_impl(_UHead&&)): Likewise. (_Tuple_impl(_Tuple_impl&&)): Suppress conditionally. (_Tuple_impl(const _Tuple_impl<_Idx, _UHead>&)): Constrain. (_Tuple_impl(_Tuple_impl<_Idx, _UHead>&&)): Likewise. (operator=(const tuple&)): Enable conditionally. (operator=(tuple&&)): Suppress conditionally. (operator=(const tuple<_UElements...>&)): Constrain. (operator=(tuple<_UElements...>&&)): Likewise. (operator=(const tuple&)): Enable conditionally (2-param tuple). (operator=(tuple&&)): Suppress conditionally (2-param tuple). (operator=(const tuple<_U1, _U2>&)): Constrain. (operator=(tuple<_U1, _U2>&&)): Likewise. (operator=(const pair<_U1, _U2>&)): Likewise. (operator=(pair<_U1, _U2>&&)): Likewise. * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust. * testsuite/20_util/tuple/tuple_traits.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/tuple/77802.cc Removed: trunk/libstdc++-v3/testsuite/20_util/tuple/tuple_traits.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/tuple trunk/libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
[Bug libstdc++/77727] Unwrapping std::optional constructor is not working for non-transferable object
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77727 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Mon Sep 26 20:51:42 2016 New Revision: 240511 URL: https://gcc.gnu.org/viewcvs?rev=240511=gcc=rev Log: PR libstdc++/77727 * include/std/optional (optional(const optional<_Up>&)): Default-initialize the base and use emplace. (optional(optional<_Up>&&)): Likewise. * testsuite/20_util/optional/cons/77727.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/optional/cons/77727.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/optional
[Bug libstdc++/77537] [6 Regression] pair constructors do not properly SFINAE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77537 --- Comment #9 from ville at gcc dot gnu.org --- Author: ville Date: Mon Sep 26 19:56:14 2016 New Revision: 240507 URL: https://gcc.gnu.org/viewcvs?rev=240507=gcc=rev Log: Backport from mainline 2016-09-21 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/77537 Implement LWG 2729 for pair. * include/bits/stl_pair.h (_PCC): New. (_ConstructiblePair, _ImplicitlyConvertiblePair): Turn into static member functions of _PCC. (_MoveConstructiblePair, _ImplicitlyMoveConvertiblePair): Likewise. (_PCCP): New. (pair(const _T1&, const _T2&)): Adjust. (_PCCFP): New. (pair(const pair<_U1, _U2>&)): Adjust. (pair(_U1&&, const _T2&)): Likewise. (pair(const _T1&, _U2&&)): Likewise. (pair(_U1&&, _U2&&)): Likewise. (pair(pair<_U1, _U2>&&)): Likewise. (operator=(const pair&)): Make conditionally deleted. (operator=(pair&&)): Make conditionally suppressed. (operator=(const pair<_U1, _U2>&)): Constrain. (operator=(pair<_U1, _U2>&&): Likewise. * include/std/type_traits (__nonesuch): New. * testsuite/20_util/pair/traits.cc: New. Added: branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/pair/traits.cc Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/include/bits/stl_pair.h branches/gcc-6-branch/libstdc++-v3/include/std/type_traits
[Bug libstdc++/77717] testsuite/21_strings/basic_string_view/operations/compare/char/1.cc makes undefined memcmp call
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77717 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Mon Sep 26 09:46:19 2016 New Revision: 240486 URL: https://gcc.gnu.org/viewcvs?rev=240486=gcc=rev Log: PR libstdc++/77717 * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc: Fix an out-of-bounds access. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
[Bug libstdc++/77288] Std::experimental::optional::operator= implementation is broken in gcc 6.1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77288 --- Comment #8 from ville at gcc dot gnu.org --- Author: ville Date: Wed Sep 21 17:37:17 2016 New Revision: 240324 URL: https://gcc.gnu.org/viewcvs?rev=240324=gcc=rev Log: PR libstdc++/77288 * include/std/optional (__is_optional_impl, __is_optional): Remove. (__converts_from_optional, __assigns_from_optional): New. (optional(_Up&&)): Use is_same instead of __is_optional. (optional(const optional<_Up>&)): Constrain with __converts_from_optional. (optional(optional<_Up>&&)): Likewise. (operator=(_Up&&)): Use is_same instead of __is_optional, check is_same and is_scalar. (operator=(const optional<_Up>&)): Constrain with __converts_from_optional and __assigns_from_optional. (operator=(optional<_Up>&&)): Likewise. * testsuite/20_util/optional/77288.cc: New. * testsuite/20_util/optional/cons/value.cc: Adjust. Added: trunk/libstdc++-v3/testsuite/20_util/optional/77288.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/optional trunk/libstdc++-v3/testsuite/20_util/optional/cons/value.cc
[Bug libstdc++/77537] pair constructors do not properly SFINAE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77537 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Wed Sep 21 16:48:35 2016 New Revision: 240322 URL: https://gcc.gnu.org/viewcvs?rev=240322=gcc=rev Log: PR libstdc++/77537 Implement LWG 2729 for pair. * include/bits/stl_pair.h (_PCC): New. (_ConstructiblePair, _ImplicitlyConvertiblePair): Turn into static member functions of _PCC. (_MoveConstructiblePair, _ImplicitlyMoveConvertiblePair): Likewise. (_PCCP): New. (pair(const _T1&, const _T2&)): Adjust. (_PCCFP): New. (pair(const pair<_U1, _U2>&)): Adjust. (pair(_U1&&, const _T2&)): Likewise. (pair(const _T1&, _U2&&)): Likewise. (pair(_U1&&, _U2&&)): Likewise. (pair(pair<_U1, _U2>&&)): Likewise. (operator=(const pair&)): Make conditionally deleted. (operator=(pair&&)): Make conditionally suppressed. (operator=(const pair<_U1, _U2>&)): Constrain. (operator=(pair<_U1, _U2>&&): Likewise. * include/std/type_traits (__nonesuch): New. * testsuite/20_util/pair/traits.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/pair/traits.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_pair.h trunk/libstdc++-v3/include/std/type_traits
[Bug libstdc++/77619] uninitialized_meow_construct and friends not exception safe
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77619 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Tue Sep 20 15:15:36 2016 New Revision: 240264 URL: https://gcc.gnu.org/viewcvs?rev=240264=gcc=rev Log: PR libstdc++/77619 * include/bits/stl_construct.h: (_Construct_novalue): New. (_Destroy_n_aux, _Destroy_n): New. * include/bits/stl_uninitialized.h: (type_traits): New include in C++11 mode. (__uninitialized_default_novalue_1): New. (__uninitialized_default_novalue_n_1): Likewise. (__uninitialized_default_novalue): Likewise. (__uninitialized_default_novalue_n): Likewise. (__uninitialized_copy_n_pair): Likewise. (uninitialized_default_construct): Use __uninitialized_default_novalue. (uninitialized_default_construct_n): Use __uninitialized_default_novalue_n. (uninitialized_value_construct): Use __uninitialized_default. (uninitialized_value_construct_n): Use __uninitialized_default_n. (uninitialized_move): Use uninitialized_copy. (uninitialized_move_n): Use __uninitialized_copy_n_pair. (destroy_at): Use _Destroy. (destroy): Likewise. (destroy_n): Likewise. * testsuite/20_util/specialized_algorithms/ memory_management_tools/1.cc: Add tests for exceptions, add tests for trivial cases for construct and move. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_construct.h trunk/libstdc++-v3/include/bits/stl_uninitialized.h trunk/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
[Bug libstdc++/77395] [6/7 Regression] std::is_constructible is false for type constructible via implicit conversion operator affecting std::tuple
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77395 --- Comment #7 from ville at gcc dot gnu.org --- Author: ville Date: Wed Aug 31 12:38:05 2016 New Revision: 239890 URL: https://gcc.gnu.org/viewcvs?rev=239890=gcc=rev Log: 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. Added: branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/is_constructible/77395.cc - copied, changed from r239884, branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/tuple/77395.cc - copied, changed from r239884, branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/include/std/type_traits branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
[Bug libstdc++/77395] [6/7 Regression] std::is_constructible is false for type constructible via implicit conversion operator affecting std::tuple
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77395 --- Comment #5 from ville at gcc dot gnu.org --- Author: ville Date: Tue Aug 30 18:46:11 2016 New Revision: 239870 URL: https://gcc.gnu.org/viewcvs?rev=239870=gcc=rev Log: 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. Added: trunk/libstdc++-v3/testsuite/20_util/is_constructible/77395.cc - copied, changed from r239867, trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc trunk/libstdc++-v3/testsuite/20_util/tuple/77395.cc - copied, changed from r239867, trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/type_traits trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc trunk/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc trunk/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
[Bug libstdc++/71313] [Filesystem TS] remove_all fails to remove directory contents recursively
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71313 --- Comment #5 from ville at gcc dot gnu.org --- Author: ville Date: Mon Jul 4 13:52:21 2016 New Revision: 237981 URL: https://gcc.gnu.org/viewcvs?rev=237981=gcc=rev Log: Backport from mainline 2016-07-04 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/71313 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Call remove_all for children of a directory. * testsuite/experimental/filesystem/operations/create_directories.cc: Adjust. Modified: branches/gcc-5-branch/libstdc++-v3/ChangeLog branches/gcc-5-branch/libstdc++-v3/src/filesystem/ops.cc branches/gcc-5-branch/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
[Bug libstdc++/71313] [Filesystem TS] remove_all fails to remove directory contents recursively
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71313 --- Comment #4 from ville at gcc dot gnu.org --- Author: ville Date: Mon Jul 4 13:15:10 2016 New Revision: 237980 URL: https://gcc.gnu.org/viewcvs?rev=237980=gcc=rev Log: PR libstdc++/71313 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Call remove_all for children of a directory. * testsuite/experimental/filesystem/operations/create_directories.cc: Adjust. Modified: branches/gcc-6-branch/libstdc++-v3/ChangeLog branches/gcc-6-branch/libstdc++-v3/src/filesystem/ops.cc branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
[Bug libstdc++/71313] [Filesystem TS] remove_all fails to remove directory contents recursively
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71313 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Mon Jul 4 12:52:49 2016 New Revision: 237978 URL: https://gcc.gnu.org/viewcvs?rev=237978=gcc=rev Log: PR libstdc++/71313 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Call remove_all for children of a directory. * testsuite/experimental/filesystem/operations/create_directories.cc: Adjust. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/src/filesystem/ops.cc trunk/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
[Bug c++/69855] Missing diagnostic for overload that only differs by return type
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69855 --- Comment #5 from ville at gcc dot gnu.org --- Author: ville Date: Fri May 27 14:59:01 2016 New Revision: 236826 URL: https://gcc.gnu.org/viewcvs?rev=236826=gcc=rev Log: /cp PR c++/69855 * name-lookup.c (pushdecl_maybe_friend_1): Push local function decls into the global scope after stripping template bits and setting DECL_ANTICIPATED. /testsuite PR c++/69855 * g++.dg/overload/69855.C: New. * g++.old-deja/g++.law/missed-error2.C: Adjust. * g++.old-deja/g++.pt/crash3.C: Likewise. Added: trunk/gcc/testsuite/g++.dg/overload/69855.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/name-lookup.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C trunk/gcc/testsuite/g++.old-deja/g++.pt/crash3.C
[Bug libstdc++/66338] std::forward_as_tuple() issue with single argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66338 --- Comment #9 from ville at gcc dot gnu.org --- Author: ville Date: Fri May 27 14:08:37 2016 New Revision: 236822 URL: https://gcc.gnu.org/viewcvs?rev=236822=gcc=rev Log: 2016-05-24 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/66338 * include/std/tuple (_TMC): Add a check for _NotSameTuple. * include/std/tuple (tuple(_UElements&&...)): Remove the separate check for _NotSameTuple. * include/std/tuple (_TMCT): New. * include/std/tuple (tuple(const tuple<_UElements...>&)): Use it. * include/std/tuple (tuple(tuple<_UElements...>&&)): Likewise. * include/std/tuple (tuple(allocator_arg_t, const _Alloc&, const tuple<_UElements...>&)): Likewise. * include/std/tuple (tuple(allocator_arg_t, const _Alloc&, tuple<_UElements...>&&)): Likewise. * testsuite/20_util/tuple/cons/66338.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/tuple
[Bug libstdc++/70437] [6 Regression] Instantiation loop with pair and is_constructible
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70437 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Tue Apr 5 11:31:30 2016 New Revision: 234743 URL: https://gcc.gnu.org/viewcvs?rev=234743=gcc=rev Log: PR libstdc++/70437 * include/bits/stl_pair.h (_ConstructiblePair, _ImplicitlyConvertiblePair, _MoveConstructiblePair, _ImplicitlyMoveConvertiblePair): Add shortcut conditions for same-type cases. * testsuite/20_util/pair/70437.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/pair/70437.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_pair.h
[Bug libstdc++/66693] [C++17] std::tuple_size fails with const std::array
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66693 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Mon Dec 21 11:22:16 2015 New Revision: 231875 URL: https://gcc.gnu.org/viewcvs?rev=231875=gcc=rev Log: PR libstdc++/66693. * include/std/tuple (tuple_element, tuple_size, tuple_element_t, __tuple_element_t): Move to... * include/std/utility: ...here. * testsuite/20_util/pair/astuple/astuple.cc: Adjust. * testsuite/20_util/pair/astuple/astuple_cpp14.cc: New. * testsuite/20_util/tuple/tuple_element.cc: Adjust. * testsuite/20_util/tuple/tuple_element_t.cc: Likewise. * testsuite/20_util/tuple/tuple_size.cc: Likewise. * testsuite/23_containers/array/tuple_interface/tuple_element.cc: Likewise. * testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc: New. * testsuite/23_containers/array/tuple_interface/tuple_size.cc: Adjust. Added: trunk/libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/tuple trunk/libstdc++-v3/include/std/utility trunk/libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc trunk/libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc trunk/libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc trunk/libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc
[Bug libstdc++/68276] ios_base::_M_grow_words should use new (std::nothrow)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68276 --- Comment #2 from ville at gcc dot gnu.org --- Author: ville Date: Fri Dec 18 15:17:09 2015 New Revision: 231819 URL: https://gcc.gnu.org/viewcvs?rev=231819=gcc=rev Log: 2015-12-18 Ville Voutilainen <ville.voutilai...@gmail.com> PR libstdc++/68276 * src/c++11/ios.cc (_M_grow_words): Use nothrow new. * testsuite/27_io/ios_base/storage/11584.cc: Adjust. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/src/c++11/ios.cc trunk/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
[Bug libstdc++/68139] rethrow_if_nested should tolerate overloaded unary operator
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68139 --- Comment #3 from ville at gcc dot gnu.org --- Author: ville Date: Fri Dec 11 12:04:23 2015 New Revision: 231562 URL: https://gcc.gnu.org/viewcvs?rev=231562=gcc=rev Log: PR libstdc++/68139 Added: trunk/libstdc++-v3/testsuite/18_support/nested_exception/68139.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/libsupc++/nested_exception.h
[Bug c++/58566] [c++11] ICE with invalid expression in lambda body
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58566 --- Comment #6 from ville at gcc dot gnu.org --- Author: ville Date: Mon Oct 12 08:55:19 2015 New Revision: 228706 URL: https://gcc.gnu.org/viewcvs?rev=228706=gcc=rev Log: PR c++/58566 /cp 2015-10-12 Ville Voutilainen <ville.voutilai...@gmail.com> PR c++/58566 * lambda.c (lambda_return_type): Return error_mark_node instead of void_type_node for the error cases. /testsuite 2015-10-12 Ville Voutilainen <ville.voutilai...@gmail.com> PR c++/58566 * g++.dg/cpp0x/lambda/lambda-58566.C: New. Added: trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-58566.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/lambda.c trunk/gcc/testsuite/ChangeLog
[Bug c++/67844] [6 Regression] Cannot make tuple of class with template constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67844 --- Comment #5 from ville at gcc dot gnu.org --- Author: ville Date: Mon Oct 5 09:57:20 2015 New Revision: 228468 URL: https://gcc.gnu.org/viewcvs?rev=228468=gcc=rev Log: 2015-10-05 Ville Voutilainen <ville.voutilai...@gmail.com> PR 67844. * include/std/tuple (_TC::_NonNestedTuple): Eagerly reject conversions from tuple types same as the target tuple. * testsuite/20_util/tuple/67844.cc: New. * testsuite/20_util/tuple/cons/nested_tuple_construct.cc: Add a missing copyright header. Added: trunk/libstdc++-v3/testsuite/20_util/tuple/67844.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/tuple trunk/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
[Bug c++/54430] [C++11] For-Loop: Scope of iterating variable begins too early
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54430 --- Comment #8 from ville at gcc dot gnu.org --- Author: ville Date: Thu Oct 1 19:22:08 2015 New Revision: 228354 URL: https://gcc.gnu.org/viewcvs?rev=228354=gcc=rev Log: PR c++/54430 /cp 2015-10-01 Ville Voutilainen <ville.voutilai...@gmail.com> PR c++/54430 * name-lookup.c (push_binding): Make non-static. * name-lookup.h (push_binding): Declare it. * parser.c (cp_parser_range_for): Use it, get the range declaration away from the scope until the range expression has been parsed, then restore the declaration. /testsuite 2015-10-01 Ville Voutilainen <ville.voutilai...@gmail.com> PR c++/54430 * g++.dg/cpp0x/range-for30.C: New. Added: trunk/gcc/testsuite/g++.dg/cpp0x/range-for30.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/name-lookup.c trunk/gcc/cp/name-lookup.h trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog