public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/95564] New: GCC rejects lambda expression with "noexcept(1+1)"
@ 2020-06-06 16:18 haoxintu at gmail dot com
  2020-06-09 23:04 ` [Bug c++/95564] " mpolacek at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: haoxintu at gmail dot com @ 2020-06-06 16:18 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 95564
           Summary: GCC rejects lambda expression with "noexcept(1+1)"
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: haoxintu at gmail dot com
  Target Milestone: ---

This code test.cc

int main(){
    auto a = [ & ] (...) noexcept(1+1) {};
    return 0;
}

$g++-trunk test.cc
test.cc:2:38: error: narrowing conversion of '2' from 'int' to 'bool'
[-Wnarrowing]
    2 |     auto a = [ & ] (...) noexcept(1+1) {};
      |                                  

GCC fails to compile it, while clang, icc, or msvc accept it.

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

* [Bug c++/95564] GCC rejects lambda expression with "noexcept(1+1)"
  2020-06-06 16:18 [Bug c++/95564] New: GCC rejects lambda expression with "noexcept(1+1)" haoxintu at gmail dot com
@ 2020-06-09 23:04 ` mpolacek at gcc dot gnu.org
  2021-12-09  6:51 ` pinskia at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2020-06-09 23:04 UTC (permalink / raw)
  To: gcc-bugs

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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mpolacek at gcc dot gnu.org

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
There was some discussion on the Core C++ mailing list about whether a
conversion to bool should be narrowing, and though opinions differed, I think
gcc isn't incorrect in rejecting this code.

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

* [Bug c++/95564] GCC rejects lambda expression with "noexcept(1+1)"
  2020-06-06 16:18 [Bug c++/95564] New: GCC rejects lambda expression with "noexcept(1+1)" haoxintu at gmail dot com
  2020-06-09 23:04 ` [Bug c++/95564] " mpolacek at gcc dot gnu.org
@ 2021-12-09  6:51 ` pinskia at gcc dot gnu.org
  2021-12-16 10:17 ` de34 at live dot cn
  2024-01-19 18:47 ` jason at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-12-09  6:51 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=87724

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
GCC is inconsitent here. with static_assert and constexpr GCC accepts it (PR
87724) while rejects it for noexcept.

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

* [Bug c++/95564] GCC rejects lambda expression with "noexcept(1+1)"
  2020-06-06 16:18 [Bug c++/95564] New: GCC rejects lambda expression with "noexcept(1+1)" haoxintu at gmail dot com
  2020-06-09 23:04 ` [Bug c++/95564] " mpolacek at gcc dot gnu.org
  2021-12-09  6:51 ` pinskia at gcc dot gnu.org
@ 2021-12-16 10:17 ` de34 at live dot cn
  2024-01-19 18:47 ` jason at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: de34 at live dot cn @ 2021-12-16 10:17 UTC (permalink / raw)
  To: gcc-bugs

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

Jiang An <de34 at live dot cn> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |de34 at live dot cn

--- Comment #3 from Jiang An <de34 at live dot cn> ---
(In reply to Andrew Pinski from comment #2)
> GCC is inconsitent here. with static_assert and constexpr GCC accepts it (PR
> 87724) while rejects it for noexcept.

Currently narrowing conversions are still forbidden in noexcept and explicit
specifiers.

The inconsistency is acknowledged in C++23 (WG21-P1401R5), but it seems that
P1401 is not a DR, as the related CWG 2320 is closed as extension. I don't know
whether we should reject narrowing conversions in static_assert/if constexpr in
earlier modes.

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

* [Bug c++/95564] GCC rejects lambda expression with "noexcept(1+1)"
  2020-06-06 16:18 [Bug c++/95564] New: GCC rejects lambda expression with "noexcept(1+1)" haoxintu at gmail dot com
                   ` (2 preceding siblings ...)
  2021-12-16 10:17 ` de34 at live dot cn
@ 2024-01-19 18:47 ` jason at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: jason at gcc dot gnu.org @ 2024-01-19 18:47 UTC (permalink / raw)
  To: gcc-bugs

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

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

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

--- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Jiang An from comment #3)
> (In reply to Andrew Pinski from comment #2)
> > GCC is inconsitent here. with static_assert and constexpr GCC accepts it (PR
> > 87724) while rejects it for noexcept.
> 
> Currently narrowing conversions are still forbidden in noexcept and explicit
> specifiers.
> 
> The inconsistency is acknowledged in C++23 (WG21-P1401R5), but it seems that
> P1401 is not a DR, as the related CWG 2320 is closed as extension. I don't
> know whether we should reject narrowing conversions in static_assert/if
> constexpr in earlier modes.

Narrowing conversions were fine in earlier standards, it was an accidental
change that made them ill-formed, which was fixed.

Clang now also rejects the testcase.

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

end of thread, other threads:[~2024-01-19 18:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-06 16:18 [Bug c++/95564] New: GCC rejects lambda expression with "noexcept(1+1)" haoxintu at gmail dot com
2020-06-09 23:04 ` [Bug c++/95564] " mpolacek at gcc dot gnu.org
2021-12-09  6:51 ` pinskia at gcc dot gnu.org
2021-12-16 10:17 ` de34 at live dot cn
2024-01-19 18:47 ` jason 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).