https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115099
Bug ID: 115099 Summary: compilation error: format thread::id Product: gcc Version: 14.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: faithandbrave at gmail dot com Target Milestone: --- #include <iostream> #include <format> #include <thread> int main() { std::cout << __cpp_lib_formatters << std::endl; std::cout << std::format("{}", std::this_thread::get_id()) << std::endl; std::cout << std::format("{: >30}", std::this_thread::get_id()) << std::endl; } outputs: In file included from prog.cc:3: /opt/wandbox/gcc-head/include/c++/15.0.0/thread: In instantiation of 'typename std::basic_format_context<_Out, _CharT>::iterator std::formatter<std::thread::id, _CharT>::format(std::thread::id, std::basic_format_context<_Out, _CharT>&) const [with _Out = std::__format::_Sink_iter<char>; _CharT = char; typename std::basic_format_context<_Out, _CharT>::iterator = std::basic_format_context<std::__format::_Sink_iter<char>, char>::iterator]': /opt/wandbox/gcc-head/include/c++/15.0.0/format:3247:40: required from 'static void std::basic_format_arg<_Context>::handle::_S_format(std::basic_format_parse_context<typename _Context::char_type>&, _Context&, const void*) [with _Tq = const std::thread::id; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; typename _Context::char_type = char]' 3247 | __format_ctx.advance_to(__f.format(__val, __format_ctx)); | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /opt/wandbox/gcc-head/include/c++/15.0.0/format:3255:11: required from 'std::basic_format_arg<_Context>::handle::handle(_Tp&) [with _Tp = std::thread::id; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>]' 3255 | auto __func = _S_format<__maybe_const_t<_Tp>>; | ^~~~~~ /opt/wandbox/gcc-head/include/c++/15.0.0/format:3486:13: required from 'std::basic_format_arg<_Context>::basic_format_arg(_Tp&) [with _Tp = std::thread::id; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>]' 3486 | _M_set(static_cast<_Td>(__v)); | ^~~~~~~~~~~~~~~~~~~~~ /opt/wandbox/gcc-head/include/c++/15.0.0/format:3743:31: required from 'static std::__format::_Arg_store<_Context, _Args>::_Element_t std::__format::_Arg_store<_Context, _Args>::_S_make_elt(_Tp&) [with _Tp = std::thread::id; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; _Args = {std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle}; _Element_t = std::__format::_Arg_store<std::basic_format_context<std::__format::_Sink_iter<char>, char>, std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle>::_Element_t]' 3743 | basic_format_arg<_Context> __arg(__v); | ^~~~~ /opt/wandbox/gcc-head/include/c++/15.0.0/format:3754:23: required from 'std::__format::_Arg_store<_Context, _Args>::_Arg_store(_Tp& ...) [with _Tp = {std::thread::id}; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; _Args = {std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle}]' 3754 | : _M_args{_S_make_elt(__a)...} | ~~~~~~~~~~~^~~~~ /opt/wandbox/gcc-head/include/c++/15.0.0/format:3804:14: required from 'auto std::make_format_args(_Args& ...) [with _Context = basic_format_context<__format::_Sink_iter<char>, char>; _Args = {thread::id}]' 3804 | return _Store(__fmt_args...); | ^~~~~~~~~~~~~~~~~~~~~ /opt/wandbox/gcc-head/include/c++/15.0.0/format:4291:61: required from 'std::string std::format(format_string<_Args ...>, _Args&& ...) [with _Args = {thread::id}; string = __cxx11::basic_string<char>; format_string<_Args ...> = basic_format_string<char, thread::id>]' 4291 | { return std::vformat(__fmt.get(), std::make_format_args(__args...)); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~ prog.cc:8:29: required from here 8 | std::cout << std::format("{}", std::this_thread::get_id()) << std::endl; | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/wandbox/gcc-head/include/c++/15.0.0/thread:334:44: error: 'std::__cxx11::basic_ostringstream<char> __os' has incomplete type 334 | std::basic_ostringstream<_CharT> __os; | ^~~~ It seems missing include <sstream> at <thread>.