[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