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

--- Comment #4 from Howard Hinnant <howard.hinnant at gmail dot com> ---
This bug needs some attention because Howard Hinnant's date library is making
it common for people to hit this bug.

The date library:

https://github.com/HowardHinnant/date

This library is sufficiently popular and successful that it has been proposed
to the C++ committee for C++20.

Here is a short HelloWorld demonstrating the problem:

    #include "date.h"
    #include <iostream>

    int
    main()
    {
        using namespace date;
        using namespace std::chrono;
        year_month_day ymd = floor<days>(system_clock::now());
        auto y = int{ymd.year()};
        std::cout << y << '\n';
    }

You can try this out without installing the library at:

    http://melpon.org/wandbox/permlink/PodYB3AwdYNFKbMv

Tip of trunk gcc gives:

prog.cc: In function 'int main()':
prog.cc:10:28: error: cannot convert 'date::year' to 'int' in initialization
     auto y = int{ymd.year()};
                            ^

clang prints out the current year (UTC).

Changing the offending line to:

        auto y = int(ymd.year());

is a workaround.  But people really like the Uniform Initialization Syntax
(using braces).

Reply via email to