This patch implements paper P0692R1 from the C++20 standard.
This also fixes a bug (https://llvm.org/PR37424) where explicit instantiations of templates parameterized by overloaded private member functions were incorrectly rejected.
This is my first contribution to CFE, so please let me know if I did something horribly wrong.
I'm not sure about inheriting TypeAliasDecl from DeclContext, but (see below)