public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/99006] New: make_shared<T[]> silently works
@ 2021-02-08 17:13 Darrell.Wright at gmail dot com
  2021-02-09  8:08 ` [Bug libstdc++/99006] " redi at gcc dot gnu.org
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Darrell.Wright at gmail dot com @ 2021-02-08 17:13 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

            Bug ID: 99006
           Summary: make_shared<T[]> silently works
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: Darrell.Wright at gmail dot com
  Target Milestone: ---

std::make_shared<T[]> in libstdc++ prior to c++20 doesn't fail.

The minimal example is

#include <memory>
int func( ) {
  auto sp = std::make_shared<int[]>( 55 );
  return *sp.get( );
}

will return 55;

libc++ removes it from the overload set and MS STL fails.
https://gcc.godbolt.org/z/PaW6WY

With T = int[], I think
https://timsong-https://timsong-cpp.github.io/cppwp/n4659/util.smartptr.shared.create#1
should make this not work.

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

* [Bug libstdc++/99006] make_shared<T[]> silently works
  2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
@ 2021-02-09  8:08 ` redi at gcc dot gnu.org
  2021-02-09  8:11 ` redi at gcc dot gnu.org
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: redi at gcc dot gnu.org @ 2021-02-09  8:08 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2021-02-09

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I thought this was a duplicate but it looks like I never reported it. I have a
half finished patch for it (and there's an unreviewed patch to add proper
support for make_shared<T[]>).

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

* [Bug libstdc++/99006] make_shared<T[]> silently works
  2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
  2021-02-09  8:08 ` [Bug libstdc++/99006] " redi at gcc dot gnu.org
@ 2021-02-09  8:11 ` redi at gcc dot gnu.org
  2021-04-22 13:33 ` redi at gcc dot gnu.org
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: redi at gcc dot gnu.org @ 2021-02-09  8:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
https://gcc.gnu.org/pipermail/gcc-help/2020-October/139506.html

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

* [Bug libstdc++/99006] make_shared<T[]> silently works
  2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
  2021-02-09  8:08 ` [Bug libstdc++/99006] " redi at gcc dot gnu.org
  2021-02-09  8:11 ` redi at gcc dot gnu.org
@ 2021-04-22 13:33 ` redi at gcc dot gnu.org
  2021-04-22 15:07 ` cvs-commit at gcc dot gnu.org
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: redi at gcc dot gnu.org @ 2021-04-22 13:33 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
The __cpp_lib_shared_ptr_arrays feature test macro can be used to detect
whether make_shared<T[]> works correctly:

#if  __cpp_lib_shared_ptr_arrays >= 201707L

https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations#__cpp_lib_shared_ptr_arrays

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

* [Bug libstdc++/99006] make_shared<T[]> silently works
  2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
                   ` (2 preceding siblings ...)
  2021-04-22 13:33 ` redi at gcc dot gnu.org
@ 2021-04-22 15:07 ` cvs-commit at gcc dot gnu.org
  2021-05-11 19:50 ` cvs-commit at gcc dot gnu.org
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-04-22 15:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Wakely <redi@gcc.gnu.org>:

https://gcc.gnu.org/g:55650236cd97d81f42f9fdb4f6bcb12babafe51f

commit r12-64-g55650236cd97d81f42f9fdb4f6bcb12babafe51f
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 22 15:46:51 2021 +0100

    libstdc++: Reject std::make_shared<T[]> [PR 99006]

    Prior to C++20 it should be ill-formed to use std::make_shared with an
    array type (and we don't support the C++20 feature to make it valid yet
    anyway).

    libstdc++-v3/ChangeLog:

            PR libstdc++/99006
            * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
            is not an array type.
            * include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
            * testsuite/20_util/shared_ptr/creation/99006.cc: New test.

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

* [Bug libstdc++/99006] make_shared<T[]> silently works
  2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
                   ` (3 preceding siblings ...)
  2021-04-22 15:07 ` cvs-commit at gcc dot gnu.org
@ 2021-05-11 19:50 ` cvs-commit at gcc dot gnu.org
  2021-06-18 12:56 ` cvs-commit at gcc dot gnu.org
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-05-11 19:50 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Jonathan Wakely
<redi@gcc.gnu.org>:

https://gcc.gnu.org/g:ddfba2359d57167ed7a1efd184cae0cd5be2f31b

commit r11-8382-gddfba2359d57167ed7a1efd184cae0cd5be2f31b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 22 15:46:51 2021 +0100

    libstdc++: Reject std::make_shared<T[]> [PR 99006]

    Prior to C++20 it should be ill-formed to use std::make_shared with an
    array type (and we don't support the C++20 feature to make it valid yet
    anyway).

    libstdc++-v3/ChangeLog:

            PR libstdc++/99006
            * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
            is not an array type.
            * include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
            * testsuite/20_util/shared_ptr/creation/99006.cc: New test.

    (cherry picked from commit 55650236cd97d81f42f9fdb4f6bcb12babafe51f)

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

* [Bug libstdc++/99006] make_shared<T[]> silently works
  2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
                   ` (4 preceding siblings ...)
  2021-05-11 19:50 ` cvs-commit at gcc dot gnu.org
@ 2021-06-18 12:56 ` cvs-commit at gcc dot gnu.org
  2021-06-18 14:43 ` cvs-commit at gcc dot gnu.org
  2021-06-18 14:44 ` redi at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-06-18 12:56 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Jonathan Wakely
<redi@gcc.gnu.org>:

https://gcc.gnu.org/g:36d6e7fe997aa85dc64b13ce4bb3c2e51e13cd36

commit r10-9936-g36d6e7fe997aa85dc64b13ce4bb3c2e51e13cd36
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 22 15:46:51 2021 +0100

    libstdc++: Reject std::make_shared<T[]> [PR 99006]

    Prior to C++20 it should be ill-formed to use std::make_shared with an
    array type (and we don't support the C++20 feature to make it valid yet
    anyway).

    libstdc++-v3/ChangeLog:

            PR libstdc++/99006
            * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
            is not an array type.
            * include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
            * testsuite/20_util/shared_ptr/creation/99006.cc: New test.

    (cherry picked from commit 55650236cd97d81f42f9fdb4f6bcb12babafe51f)

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

* [Bug libstdc++/99006] make_shared<T[]> silently works
  2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
                   ` (5 preceding siblings ...)
  2021-06-18 12:56 ` cvs-commit at gcc dot gnu.org
@ 2021-06-18 14:43 ` cvs-commit at gcc dot gnu.org
  2021-06-18 14:44 ` redi at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-06-18 14:43 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-9 branch has been updated by Jonathan Wakely
<redi@gcc.gnu.org>:

https://gcc.gnu.org/g:79fa567e234585dc6a71f9bd069101c993513f3e

commit r9-9591-g79fa567e234585dc6a71f9bd069101c993513f3e
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 22 15:46:51 2021 +0100

    libstdc++: Reject std::make_shared<T[]> [PR 99006]

    Prior to C++20 it should be ill-formed to use std::make_shared with an
    array type (and we don't support the C++20 feature to make it valid yet
    anyway).

    libstdc++-v3/ChangeLog:

            PR libstdc++/99006
            * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
            is not an array type.
            * include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
            * testsuite/20_util/shared_ptr/creation/99006.cc: New test.

    (cherry picked from commit 55650236cd97d81f42f9fdb4f6bcb12babafe51f)

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

* [Bug libstdc++/99006] make_shared<T[]> silently works
  2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
                   ` (6 preceding siblings ...)
  2021-06-18 14:43 ` cvs-commit at gcc dot gnu.org
@ 2021-06-18 14:44 ` redi at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: redi at gcc dot gnu.org @ 2021-06-18 14:44 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
   Target Milestone|---                         |9.5
             Status|NEW                         |RESOLVED

--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Fixed for 9.5, 10.4 and 11.2

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

end of thread, other threads:[~2021-06-18 14:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-08 17:13 [Bug libstdc++/99006] New: make_shared<T[]> silently works Darrell.Wright at gmail dot com
2021-02-09  8:08 ` [Bug libstdc++/99006] " redi at gcc dot gnu.org
2021-02-09  8:11 ` redi at gcc dot gnu.org
2021-04-22 13:33 ` redi at gcc dot gnu.org
2021-04-22 15:07 ` cvs-commit at gcc dot gnu.org
2021-05-11 19:50 ` cvs-commit at gcc dot gnu.org
2021-06-18 12:56 ` cvs-commit at gcc dot gnu.org
2021-06-18 14:43 ` cvs-commit at gcc dot gnu.org
2021-06-18 14:44 ` 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).