add(auto a, auto b); // the decltype(a) is needed to make clang happy// see: https://stackoverflow.com/questions/62779242
return number<decltype(a)>{a}.
这意味着std::bind表达式(不使用std::is_bind_expression)和带有auto参数的lambda。预期的返回类型和参数是已知的。例如:struct is_templated_functor { ... };
using ty = decltype(&decltype(fun)::operator()<int>);
&