Making something a core language feature means it has to be completely right. Doing something in library leaves more of an option to fix it later or creating another version of the thing inna different header.
I also would like if std::variant were a language feature, not library :)