[libcxx-commits] [PATCH] D130283: [libc++] Allow assigning std::rethrow_if_nested() to a function pointer

Mark de Wever via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sun Jul 24 11:42:51 PDT 2022


Mordante added a comment.

In D130283#3672185 <https://reviews.llvm.org/D130283#3672185>, @xingxue wrote:

> In D130283#3669617 <https://reviews.llvm.org/D130283#3669617>, @Mordante wrote:
>
>> I'm not too familiar with this code so I won't approve it. I wonder whether we want to allow taking the address of this function.
>
> From this document namespace.std <http://eel.is/c++draft/namespace.std#6>, it seems it is allowed to take the address of `std::rethrow_if_nested`. @ldionne, @hubert.reinterpretcast, please correct me if my interpretation is wrong.  Thanks!
>
>   Let F denote a standard library function ([global.functions]), a standard library static member function, or an instantiation of a standard library function template.
>   Unless F is designated an addressable function, the behavior of a C++ program is unspecified (possibly ill-formed) if it explicitly or implicitly attempts to form a pointer to F.
>   [Note 1: Possible means of forming such pointers include application of the unary & operator ([expr.unary.op]), addressof ([specialized.addressof]), or a function-to-pointer standard conversion ([conv.func]).
>   — end note]
>   Moreover, the behavior of a C++ program is unspecified (possibly ill-formed) if it attempts to form a reference to F or if it attempts to form a pointer-to-member designating either a standard library non-static member function ([member.functions]) or an instantiation of a standard library member function template.

Did I overlook something and is `std::rethrow_if_nested` marked as addressable?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130283/new/

https://reviews.llvm.org/D130283



More information about the libcxx-commits mailing list