https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109606
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- P.S. the reason it uses __is_same instead of std::is_same_v is because it is C++14 code, and the reason it doesn't use std::is_same<>::value is to avoid the class template instantiation.