Skip to content

Apple Clang: std::source_location returns a wrong results if called in a function parameter. #68108

@H-G-Hristov

Description

@H-G-Hristov

This is more of a question. The examples in this article as seen on Compiler Explorer (trunk) work as expected but in Xcode 15 they return the location of the std::source_location::current() call. Could that be a bug in Apple Clang 15.0?

https://www.cppstories.com/2021/non-terminal-variadic-args/

template <typename... Ts>
struct Logger
{
    Logger(Ts&&... ts, const std::source_location& loc = std::source_location::current())
    {
        std::cout << loc.function_name() << " line " << loc.line() << ": ";
        ((std::cout << std::forward<Ts>(ts) << " "), ...);
        std::cout << '\n';
    }
};

template <typename... Ts>
Logger(Ts&&...) -> Logger<Ts...>;

Apple Clang 15 output (wrong):

> % ./nagent
Logger<const char (&)[26], int, int, int, int>::Logger(Ts &&..., const std::source_location &) [Ts = <const char (&)[26], int, int, int, int>] line 281: Alabalanica turska panica 1 2 3 5 

GCC 13.2 output (correct):

>  # ./nagent
int main(int, char**) line 295: Alabalanica turska panica 1 2 3 5 

Apple Clang details:

> % clang --version
Apple clang version 15.0.0 (clang-1500.0.40.1)
Target: arm64-apple-darwin23.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Metadata

Metadata

Assignees

No one assigned

    Labels

    clangClang issues not falling into any other category

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions