>>333プチ訂正orz
誤: tr_pos(U, Bar)
正: tr_pos<T>(T, Bar)

>>334
手元の環境はC++14なので使えないっぽい
および、>>323-324のガンはtr_pos<U>(Foo, U), tr_pos<T>(T, Bar)の2つのテンプレートの名前が
tr_pos<T, U>(T, U)と同じであることにあるのは確定的に明らかなので、これを治療するのが筋
constexpr ifに逃げるのはいささか筋が悪いかと、

※ tr_pos<U>(Foo, U), tr_pos<T>(T, Bar) を、それぞれtr_pos以外の固有の名前に改名し
  (例えばtr_pos_from_Foo,とtr_pos_to_Bar)、
  tr_pos<T, U>(T, U)にてそれらを使って共通の名前tr_posで実体化するテンプレートを書くならば、
  テンプレート機能の中だけで目的(tr_pos(T, U)式のシグネチャへの統一)を果たせてシンプル&スマートに解決する。