首选省略号或单个模板参数以进行重载决策

时间:2016-11-20 17:51:50

标签: c++ c++11 templates ellipsis

如果您的某个功能具有"首选"实施和另一个"后备"实现,类似于以下

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吗?

0 个答案:

没有答案