模板化的C ++函数,第一个参数设置为第二个参数作为默认参数

时间:2019-03-05 13:49:00

标签: c++ templates c++14

我有这样的功能:

contentView

template <typename A, typename B> void foo(const B & b) { ... } 应该是可选的;如果未在函数调用中明确定义,则应将其设置为A。目的是避免不必要的冗长代码:

B

但是,我还没有找到一种方法来做到这一点。有人可以提出来吗?

1 个答案:

答案 0 :(得分:6)

#include <type_traits>

struct deduce_tag;

template <typename PreA = deduce_tag, typename B>
void foo(const B & b) {
    using A = std::conditional_t<
        std::is_same<PreA, deduce_tag>::value,
        B,
        PreA
    >;
}