https://sourceware.org/bugzilla/show_bug.cgi?id=33103
--- Comment #2 from Sergei Trofimovich <slyich at gmail dot com> --- I don't think c++ standard guarantees exact transitive headers included by other headers. I think the difference is the implementation detail of libstdc++ vs libc++. libstdc++'s <format> does not include <stack> (and also does not get enabled without -std=c++20): - https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/include/std/format;h=46bd5d5ee6a0e72520776ea21610e84ef5c6aca9;hb=HEAD#l45 - https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/include/std/ostream;h=3a0a0d35df1d69f620bfbe0e1d94a790904193f2;hb=HEAD#l44 libc++'s <format> does include it (and only does it before -std=c++20): - https://github.com/llvm/llvm-project/blob/08b8d467d4253373e77a075c03e25281dee8ad15/libcxx/include/format#L252 - https://github.com/llvm/llvm-project/blob/08b8d467d4253373e77a075c03e25281dee8ad15/libcxx/include/ostream#L201 Both implementations slowly clean their header structure up going forward. -- You are receiving this mail because: You are on the CC list for the bug.