Move general impl. to after specializations.

This fixes an issue with compiling on Clang which is stricter in how it
follows the C++ spec.