動機 enable_switch - 複数の重複しうるコンパイル時条件で、SFINAE によるオーバーロードを書くには - ボレロ村上 - ENiyGmaA Code これと同じです。重複する条件があるときにSFINAEだけではめんどうかつDRYじゃないことがあります。スマートな解法がほしいです。 問題 以下はコンパイルエラーになります。int を関数 f へ渡すと二つの関数のオーバーロードを解決できないからです。 #include<type_traits> #include<iostream> extern void* enabler; template<class T, typename std::enable_if<std::is_same<T, int>::value>::type*& = enabler> void f(T&&) { std::cout << "int" << s