定義の場合のみ類推可能にすればいいんじゃないの?
template <typename A, typename B> auto add(A a, B b) -> decltype(a+b) { return a+b; }
を
template <typename A, typename B> auto add(A a, B b) { return a+b; }
にできるだけでも価値はあると思うけど

まあ、構文解析難しいとか他に何か問題があれば別だが