user-defined string literalはliteral operator templateでほげほげできないと何度言ったら…

私自身何度も疑問に思ってはその度に調べていたし、しょっちゅうtwitter上でも話題になるのでここに書いておきましょう。
すごく手短に言うと、

template<char ...str>
struct hoge_t {};

template<char ...str>
constexpr hoge_t<str...> operator ""_hoge();

このような定義(ここではliteral operator template形式とでも呼ぶことにします。)は、決してuser-defined string literalに対するoverload resolutionで選ばれることはないのです。literal operator template形式が使えるのは、「100_mega」や、「3.14_oyoso」など、オペランドが整数、浮動小数点数の時に限ります。