As non exhaustive list, compilers have have intimate knowledge of:
* various operator new
* all the type traits
* a lot of the names inherited from the C library
compilers could do much more, but in general they prefer to implement generic optimizations instead of targeting a specific library name (for example removing allocation for stack allocated std::strings was not done until the generic removal of alloc/free was implemented).
Many of the type-traits can be implemented without specific compiler support. That's how Boost managed it. Here's their implementation of is_signed if you're curious [0].
I believe some standard-library type-traits cannot be implemented without specific compiler support.
* various operator new * all the type traits * a lot of the names inherited from the C library
compilers could do much more, but in general they prefer to implement generic optimizations instead of targeting a specific library name (for example removing allocation for stack allocated std::strings was not done until the generic removal of alloc/free was implemented).