如果您的某个功能具有"首选"实施和另一个"后备"实现,类似于以下
namespace detail {
template <typename T, typename std::enable_if_t<...>* = nullptr>
void do_something_impl(T, some_tag) {}
// fallback technique 1
template <typename T>
void do_something_impl(T, ...) {}
// fallback technique 2
template <typename T, typename Tag>
void do_something_impl(T, Tag) {}
}
处理这种后备2或1的首选方法是什么?我通常坚持1,因为这是因为C ++编译器试图尽可能避免...
而考虑的最后一次重载,但还有其他客观原因要避免1吗?