public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/46134] New: constexpr vs. defaulted ctor
@ 2010-10-22 15:30 bkoz at gcc dot gnu.org
  2010-10-22 15:31 ` [Bug c++/46134] " bkoz at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: bkoz at gcc dot gnu.org @ 2010-10-22 15:30 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46134

           Summary: constexpr vs. defaulted ctor
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: bkoz@gcc.gnu.org


Changing std::chrono::duration's default constructor to "default" from an empty
body causes a new error.

Ie:

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index bbcb0ff..d346049 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -209,7 +209,7 @@ namespace std
        static_assert(_Period::num > 0, "period must be positive");

        // 20.8.3.1 construction / copy / destroy
-       constexpr duration() { }
+       constexpr duration() = default;

        template<typename _Rep2, typename = typename
               enable_if<is_convertible<_Rep2, rep>::value


See attached pre-processed file for simple reproducer. Error message is:

In file included from
/mnt/share/src/gcc.git-constexpr/libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc:22:0:
/mnt/share/src/gcc.git-constexpr/libstdc++-v3/testsuite/util/testsuite_common_types.h:
In member function ‘void
__gnu_test::constexpr_default_constructible::operator()()::_Concept::__constraint()
[with _Tp = std::chrono::duration<long int>]’:
/mnt/share/src/gcc.git-constexpr/libstdc++-v3/testsuite/util/testsuite_common_types.h:629:17:
  instantiated from ‘void
__gnu_test::constexpr_default_constructible::operator()() [with _Tp =
std::chrono::duration<long int>]’
/mnt/share/src/gcc.git-constexpr/libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc:27:48:
  instantiated from here
/mnt/share/src/gcc.git-constexpr/libstdc++-v3/testsuite/util/testsuite_common_types.h:625:20:
error: uninitialized const ‘__v’ [-fpermissive]
/mnt/share/bld/gcc.git-constexpr/x86_64-unknown-linux-gnu/libstdc++-v3/include/chrono:201:14:
note: ‘const struct std::chrono::duration<long int>’ has no user-provided
default constructor
/mnt/share/bld/gcc.git-constexpr/x86_64-unknown-linux-gnu/libstdc++-v3/include/chrono:212:12:
note: constructor is not user-provided because it is explicitly defaulted in
the class body


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/46134] constexpr vs. defaulted ctor
  2010-10-22 15:30 [Bug c++/46134] New: constexpr vs. defaulted ctor bkoz at gcc dot gnu.org
@ 2010-10-22 15:31 ` bkoz at gcc dot gnu.org
  2010-10-22 18:47 ` jason at gcc dot gnu.org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: bkoz at gcc dot gnu.org @ 2010-10-22 15:31 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46134

--- Comment #1 from Benjamin Kosnik <bkoz at gcc dot gnu.org> 2010-10-22 15:31:36 UTC ---
Created attachment 22124
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22124
pre-processed sources


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/46134] constexpr vs. defaulted ctor
  2010-10-22 15:30 [Bug c++/46134] New: constexpr vs. defaulted ctor bkoz at gcc dot gnu.org
  2010-10-22 15:31 ` [Bug c++/46134] " bkoz at gcc dot gnu.org
@ 2010-10-22 18:47 ` jason at gcc dot gnu.org
  2010-11-02  2:36 ` jason at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2010-10-22 18:47 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46134

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |jason at gcc dot gnu.org
         Resolution|                            |INVALID

--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> 2010-10-22 18:47:15 UTC ---
Not a bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/46134] constexpr vs. defaulted ctor
  2010-10-22 15:30 [Bug c++/46134] New: constexpr vs. defaulted ctor bkoz at gcc dot gnu.org
  2010-10-22 15:31 ` [Bug c++/46134] " bkoz at gcc dot gnu.org
  2010-10-22 18:47 ` jason at gcc dot gnu.org
@ 2010-11-02  2:36 ` jason at gcc dot gnu.org
  2010-11-02  9:48 ` redi at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2010-11-02  2:36 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46134

--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> 2010-11-02 02:35:33 UTC ---
Author: jason
Date: Tue Nov  2 02:35:28 2010
New Revision: 166171

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166171
Log:
    * include/std/chrono: Extend constexpr application.
    * testsuite/util/testsuite_common_types.h
    (constexpr_default_constructible, constexpr_single_value_constructible)
    : Add comments about implied constraints.
    * testsuite/20_util/duration/cons/constexpr.cc: Activate all tests.
    * testsuite/20_util/time_point/cons/constexpr.cc: Same.
    * testsuite/20_util/time_point/requirements/constexpr_functions.cc:
    Same.
    * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust line
    numbers.
    * testsuite/20_util/time_point_cast/constexpr.cc: New.

    * include/std/bitset: Use __SIZEOF_* macros to re-create original
    logic instead of slipshod application of
    std::numeric_limits<T>::max() macros.
    * testsuite/util/testsuite_common_types.h
    (constexpr_default_constructible): Modify.

    * include/std/chrono: Tested constexpr.
    * testsuite/20_util/duration_cast/constexpr.cc: New.
    * testsuite/20_util/time_point/cons/constexpr.cc: New.

    * testsuite/20_util/duration/cons/constexpr.cc: Add single_value tests.
    * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
    line numbers.
    * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
    * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
    * testsuite/20_util/time_point/cons/constexpr.cc: Add single_value
    tests.
    * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Add.

    * testsuite/util/testsuite_common_types.h: Adjust init.

    * include/std/chrono (duration): Remove defaulted constructor,
    replace with mem-init list.
    * testsuite/20_util/duration/cons/constexpr.cc: Add single value.
    * testsuite/20_util/duration/requirements/constexpr_functions.cc:
    Add non-static member functions.

    * testsuite/20_util/default_delete/cons/constexpr.cc: New, xfail.
    * testsuite/20_util/enable_shared_from_this/cons/constexpr.cc: Same.
    * testsuite/20_util/shared_ptr/cons/constexpr.cc: Same.
    * testsuite/20_util/time_point/requirements/constexpr_functions.cc:
    Same.
    * testsuite/20_util/unique_ptr/cons/constexpr.cc: Same.
    * testsuite/20_util/weak_ptr/cons/constexpr.cc: Same.

    * include/std/bitset: Add constexpr as per N3126 draft.
    * testsuite/23_containers/bitset/cons/constexpr.cc: New.
    * testsuite/23_containers/bitset/requirements/constexpr_functions.cc:
    New.

    * testsuite/util/testsuite_common_types.h: Reset condition.

    * include/bits/random.h: Remove misleading comments.
    * include/bits/regex.h: Add constexpr.
    * testsuite/28_regex/05_constants/syntax_option_type.cc: Add tests.
    * testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc: New.

    PR libstdc++/46134
    * include/std/chrono: Use default constructor.
    * testsuite/util/testsuite_common_types.h
    (constexpr_default_constructible): Adjust condition.

    PR libstdc++/46133
    * include/std/complex: Adjust complex specialization default
    constructors for constexpr.
    * testsuite/26_numerics/complex/cons/constexpr.cc: Enable tests.

    * include/bits/random.h: Adjust for constexpr as per N3126 draft.
    * testsuite/26_numerics/random/discard_block_engine/requirements/
    constexpr_data.cc: New.
    * testsuite/26_numerics/random/discard_block_engine/requirements/
    constexpr_functions.cc: New.
    * testsuite/26_numerics/random/independent_bits_engine/requirements/
    constexpr_functions.cc: New.
    * testsuite/26_numerics/random/linear_congruential_engine/requirements/
    constexpr_data.cc: New.
    * testsuite/26_numerics/random/linear_congruential_engine/requirements/
    constexpr_functions.cc: New.
    * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
    constexpr_data.cc: New.
    * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
    constexpr_functions.cc: New.
    * testsuite/26_numerics/random/shuffle_order_engine/requirements/
    constexpr_data.cc: New.
    * testsuite/26_numerics/random/shuffle_order_engine/requirements/
    constexpr_functions.cc: New.
    * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
    constexpr_data.cc: New.
    * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
    constexpr_functions.cc: New.

    * include/bits/stream_iterator.h: Add constexpr as per N3126 draft.
    * include/bits/streambuf_iterator.h: Same.
    * include/std/complex: Same.
    * testsuite/24_iterators/istream_iterator/cons/constexpr.cc: New.
    * testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc: New.
    * testsuite/26_numerics/complex/cons/constexpr.cc: New.
    * testsuite/26_numerics/complex/requirements/constexpr_functions.cc:
    New.

    * include/bits/char_traits.h: Add constexpr as per N3126 draft.
    * testsuite/21_strings/char_traits/requirements/constexpr_functions.cc:
    New.

    * include/tr1_impl/array: Add constexpr as per N3126 draft.
    * testsuite/23_containers/array/requirements/
    constexpr_functions.cc: New.

    * include/bits/shared_ptr.h: Revert changes.
    * include/bits/unique_ptr.h: Same.

    * include/std/chrono: Adjust.
    * include/tr1_impl/type_traits: Same.

    * testsuite/util/testsuite_common_types.h: Add test functors.
    * testsuite/20_util/duration/cons/constexpr.cc: New.
    * testsuite/20_util/duration/requirements/constexpr_functions.cc: Same.
    * testsuite/20_util/pair/cons/constexpr.cc: Same.
    * testsuite/20_util/ratio/requirements/constexpr_data.cc: Same.
    * testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc: Same.
    * testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc: Same.
    * testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc: Same.
    * testsuite/30_threads/call_once/constexpr.cc: Same.
    * testsuite/30_threads/mutex/cons/constexpr.cc: Same.
    * testsuite/30_threads/once_flag/cons/constexpr.cc: Same.
    * testsuite/tr1/4_metaprogramming/integral_constant/requirements/
    constexpr_data.cc: Same.

    * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers.
    * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
    * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same.
    * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
    * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same.

    * include/bits/allocator.h: Add constexpr as per N3126 draft.
    * include/bits/ios_base.h: Same.
    * include/bits/shared_ptr.h: Same.
    * include/bits/unique_ptr.h: Same.
    * include/bits/stl_iterator.h: Same.
    * include/bits/stl_pair.h: Same.
    * include/std/tuple: Same.
    * include/tr1_impl/type_traits: Same.
    * include/std/chrono: Same.
    * include/std/ratio: Same.
    * include/std/mutex: Same.
    * src/mutex.cc: Same.
    * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust.
    * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
    * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
    * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
    * testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
    * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.

    * doc/doxygen/user.cfg.in: Replace _GLIBCXX_USE_CONSTEXPR,
    _GLIBCXX_CONSTEXPR for doxygen generation.

    * src/limits.cc: Undef.
    * testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust.
    * testsuite/29_atomics/atomic_address/cons/constexpr.cc: Same.
    * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same.
    * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.c: Same.
    * testsuite/18_support/numeric_limits/constexpr.cc: To...
    * testsuite/18_support/numeric_limits/requirements/
    constexpr_data.cc, constexpr_functions.cc: ...this

    * testsuite/util/testsuite_common_types.h
    (constexpr_single_value_constructible): Add.
    * testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust name.
    * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same.
    * testsuite/29_atomics/atomic_address/cons/constexpr.cc: New.
    * testsuite/18_support/numeric_limits/constexpr.cc: New.

    * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers.
    * testsuite/29_atomics/atomic/cons/constexpr.cc: Same.
    * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
    * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same.
    * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same.
    * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
    * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same.
    * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: Same.
    * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: Same.

    * include/bits/c++config (_GLIBCXX_CONSTEXPR): Add.
    (_GLIBCXX_USE_CONSTEXPR): Add.
    * include/std/limits: Use it.
    * src/limits.cc: Adjust.
    * testsuite/ext/profile/mutex_extensions.cc: Change line number.

    * include/bits/atomic_0.h: Rework for N3126 draft, add constexpr.
    * include/bits/atomic_2.h: Same.
    * include/bits/atomic_base.h: Same.
    * include/std/atomic: Same.
    * src/atomic.cc: Same.
    * include/bits/atomicfwd_c.h: Remove.
    * include/bits/atomicfwd_cxx.h: Remove.
    * include/c_compatibility/stdatomic.h: Remove.
    * include/Makefile.am: Remove atomicfwd_c.h, atomicfwd_cxx.h,
    stdatomic.h.
    * include/Makefile.in: Regenerate.
    * doc/xml/manual/using.xml: Update list of header files for changes.
    * testsuite/util/testsuite_common_types.h
    (constexpr_constructible): Add.
    * testsuite/29_atomics/atomic/cons/constexpr.cc: New.
    * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: New.
    * testsuite/17_intro/headers/c++200x/stdc++.cc: Modify.
    * testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
    * testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same.
    * testsuite/29_atomics/atomic_flag/cons/1.cc: Same.
    * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same.
    * testsuite/29_atomics/headers/atomic/macros.cc: Same.
    * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Same.
    * testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Same.
    * testsuite/29_atomics/atomic_flag/test_and_set/implicit.c: Remove.
    * testsuite/29_atomics/atomic_flag/test_and_set/explicit.c: Same.
    * testsuite/29_atomics/atomic_flag/clear/1.c: Same.
    * testsuite/29_atomics/headers/stdatomic.h/debug_mode.c: Same.
    * testsuite/29_atomics/headers/stdatomic.h/functions.c: Same.
    * testsuite/29_atomics/headers/stdatomic.h/macros.c: Same.
    * testsuite/29_atomics/headers/stdatomic.h/types.c: Same.

    * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16.

Added:
    trunk/libstdc++-v3/testsuite/18_support/numeric_limits/cons/
    trunk/libstdc++-v3/testsuite/18_support/numeric_limits/cons/default.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.c
   
trunk/libstdc++-v3/testsuite/18_support/numeric_limits/cons/default_c++0x.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
   
trunk/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
   
trunk/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc
    trunk/libstdc++-v3/testsuite/20_util/default_delete/
    trunk/libstdc++-v3/testsuite/20_util/default_delete/cons/
    trunk/libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/duration_cast/
    trunk/libstdc++-v3/testsuite/20_util/duration_cast/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/
   
trunk/libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/pair/cons/
    trunk/libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
    trunk/libstdc++-v3/testsuite/20_util/ratio/requirements/
    trunk/libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/time_point/cons/
    trunk/libstdc++-v3/testsuite/20_util/time_point/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/time_point/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/time_point_cast/
    trunk/libstdc++-v3/testsuite/20_util/time_point_cast/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/weak_ptr/cons/
    trunk/libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions.cc
   
trunk/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/bitset/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/23_containers/bitset/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/
   
trunk/libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
    trunk/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/
   
trunk/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/26_numerics/complex/cons/
    trunk/libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/26_numerics/complex/requirements/
   
trunk/libstdc++-v3/testsuite/26_numerics/complex/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_data.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_data.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_data.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_data.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_functions.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
   
trunk/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/debug_mode.c
   
trunk/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
    trunk/libstdc++-v3/testsuite/28_regex/08_basic_regex/requirements/
   
trunk/libstdc++-v3/testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_address/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_address/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
    trunk/libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
    trunk/libstdc++-v3/testsuite/30_threads/once_flag/
    trunk/libstdc++-v3/testsuite/30_threads/once_flag/cons/
    trunk/libstdc++-v3/testsuite/30_threads/once_flag/cons/constexpr.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
   
trunk/libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/constexpr_data.cc
      - copied, changed from r166170,
trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
Removed:
    trunk/libstdc++-v3/include/bits/atomicfwd_c.h
    trunk/libstdc++-v3/include/bits/atomicfwd_cxx.h
    trunk/libstdc++-v3/include/c_compatibility/stdatomic.h
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.c
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.c
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.c
    trunk/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/debug_mode.c
    trunk/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/functions.c
    trunk/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/macros.c
    trunk/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/types.c
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/config/abi/pre/gnu.ver
    trunk/libstdc++-v3/doc/doxygen/user.cfg.in
    trunk/libstdc++-v3/doc/xml/manual/using.xml
    trunk/libstdc++-v3/include/Makefile.am
    trunk/libstdc++-v3/include/Makefile.in
    trunk/libstdc++-v3/include/bits/allocator.h
    trunk/libstdc++-v3/include/bits/atomic_0.h
    trunk/libstdc++-v3/include/bits/atomic_2.h
    trunk/libstdc++-v3/include/bits/atomic_base.h
    trunk/libstdc++-v3/include/bits/c++config
    trunk/libstdc++-v3/include/bits/char_traits.h
    trunk/libstdc++-v3/include/bits/ios_base.h
    trunk/libstdc++-v3/include/bits/random.h
    trunk/libstdc++-v3/include/bits/random.tcc
    trunk/libstdc++-v3/include/bits/regex.h
    trunk/libstdc++-v3/include/bits/stl_iterator.h
    trunk/libstdc++-v3/include/bits/stl_pair.h
    trunk/libstdc++-v3/include/bits/stream_iterator.h
    trunk/libstdc++-v3/include/bits/streambuf_iterator.h
    trunk/libstdc++-v3/include/bits/unique_ptr.h
    trunk/libstdc++-v3/include/std/atomic
    trunk/libstdc++-v3/include/std/bitset
    trunk/libstdc++-v3/include/std/chrono
    trunk/libstdc++-v3/include/std/complex
    trunk/libstdc++-v3/include/std/future
    trunk/libstdc++-v3/include/std/limits
    trunk/libstdc++-v3/include/std/mutex
    trunk/libstdc++-v3/include/std/ratio
    trunk/libstdc++-v3/include/std/tuple
    trunk/libstdc++-v3/include/tr1_impl/array
    trunk/libstdc++-v3/include/tr1_impl/type_traits
    trunk/libstdc++-v3/src/atomic.cc
    trunk/libstdc++-v3/src/future.cc
    trunk/libstdc++-v3/src/limits.cc
    trunk/libstdc++-v3/src/mutex.cc
    trunk/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++.cc
    trunk/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
    trunk/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
    trunk/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
    trunk/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
    trunk/libstdc++-v3/testsuite/27_io/ios_base/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/27_io/ios_base/cons/copy_neg.cc
    trunk/libstdc++-v3/testsuite/28_regex/05_constants/syntax_option_type.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_address/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
   
trunk/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
   
trunk/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
   
trunk/libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
    trunk/libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
    trunk/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
   
trunk/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
    trunk/libstdc++-v3/testsuite/ext/profile/mutex_extensions.cc
    trunk/libstdc++-v3/testsuite/util/testsuite_abi.cc
    trunk/libstdc++-v3/testsuite/util/testsuite_common_types.h


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/46134] constexpr vs. defaulted ctor
  2010-10-22 15:30 [Bug c++/46134] New: constexpr vs. defaulted ctor bkoz at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2010-11-02  2:36 ` jason at gcc dot gnu.org
@ 2010-11-02  9:48 ` redi at gcc dot gnu.org
  2010-11-02  9:58 ` redi at gcc dot gnu.org
  2010-11-02 12:33 ` redi at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2010-11-02  9:48 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46134

--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-11-02 09:48:13 UTC ---
the adjusted static assertion in unique_ptr is wrong, it will now reject any
pointer deleters - it should only assert when no initializer is given for a
deleter of pointer (or reference) type


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/46134] constexpr vs. defaulted ctor
  2010-10-22 15:30 [Bug c++/46134] New: constexpr vs. defaulted ctor bkoz at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2010-11-02  9:48 ` redi at gcc dot gnu.org
@ 2010-11-02  9:58 ` redi at gcc dot gnu.org
  2010-11-02 12:33 ` redi at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2010-11-02  9:58 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46134

--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-11-02 09:58:26 UTC ---
I was recently playing with the following trick to remove the static_assert
from the body of the constexpr constructors:

struct _Undefined;
typedef typename std::conditional<is_pointer<_Dp>::value, _Undefined,
_Dp>::type __uninitialized_deleter;

constexpr
unique_ptr() : _M_t(pointer(), __uninitialized_deleter()) { }

If _Dp is a pointer this tries to create a temporary of incomplete type, which
is ill-formed and gives an error about "uninitialized_deleter".  Otherwise, it
value-initializes the deleter.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/46134] constexpr vs. defaulted ctor
  2010-10-22 15:30 [Bug c++/46134] New: constexpr vs. defaulted ctor bkoz at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2010-11-02  9:58 ` redi at gcc dot gnu.org
@ 2010-11-02 12:33 ` redi at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2010-11-02 12:33 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46134

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-11-02 12:33:17 UTC ---
(In reply to comment #5)
> constexpr
> unique_ptr() : _M_t(pointer(), __uninitialized_deleter()) { }

IIUC since that tuple constructor is not constexpr, that makes this unique_ptr
constructor not a constexpr constructor either.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-11-02 12:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-22 15:30 [Bug c++/46134] New: constexpr vs. defaulted ctor bkoz at gcc dot gnu.org
2010-10-22 15:31 ` [Bug c++/46134] " bkoz at gcc dot gnu.org
2010-10-22 18:47 ` jason at gcc dot gnu.org
2010-11-02  2:36 ` jason at gcc dot gnu.org
2010-11-02  9:48 ` redi at gcc dot gnu.org
2010-11-02  9:58 ` redi at gcc dot gnu.org
2010-11-02 12:33 ` redi at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).