C++ Logo

std-proposals

Advanced search

Re: [std-proposals] std::source_location::function_name returns more than bargained for

From: Sebastian Wittmeier <wittmeier_at_[hidden]>
Date: Sun, 28 Jul 2024 13:22:36 +0200
Hi Alexander,    - as function_name already exists, you better propose something in addition instead of changing the existing function, e.g. function_name_short() or short_function_name()    - the output is implementation defined, but it probably would guide implementers, if two functions would exist    - the signature is helping to uniquely identify the function. If you strip parameters, there could be two functions with the same output (never that there was such a uniqueness guarantee in the first place)    - source_location::current() and source_location::function_name() are consteval/constexpr functions. You could modify the returned string at compile time to your liking, e.g. searching for '(' and removing everything afterwards   Best, Sebastian   -----Ursprüngliche Nachricht----- Von:Alexander Christensen via Std-Proposals <std-proposals_at_[hidden]> Gesendet:So 28.07.2024 13:06 Betreff:[std-proposals] std::source_location::function_name returns more than bargained for An:std-proposals_at_[hidden]; CC:Alexander Christensen <alex_c007_at_[hidden]>; Hello there,   On my Windows machine I input "std::source_location::current()" as a function parameter, and from that I extract its "function_name()" member function for logging purposes. But it returns more than I would expect:   void __cdecl UTC_CommonGameViewportClient::Init(struct FWorldContext &,class UGameInstance *,bool)   I suppose for some purposes this is fine. But I am used to the "__FUNCTION__" macro which returns the name of the function. Probably it's a good thing to not add too much to the "source_location" struct, but how about making a more nuanced distinction? Here's my idea:   source_location::function_name() -> "UTC_CommonGameViewportClient::Init"   source_location::function_signature() -> "void __cdecl UTC_CommonGameViewportClient::Init(struct FWorldContext &,class UGameInstance *,bool)"   For me personally this naming would be more intuitive. Any thoughts on this?   Best, Alexander     -- Std-Proposals mailing list Std-Proposals_at_[hidden] https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals

Received on 2024-07-28 11:22:39