默认情况下匹配std :: index_sequence

时间:2019-05-29 08:10:34

标签: c++ c++17 template-meta-programming argument-deduction

模板引数是否允许以下​​内容?还是未推论的上下文?

#include <utility>
#include<tuple>

template<std::size_t... I>
auto make(std::index_sequence<I...> = std::make_index_sequence<2>())
{
    return;
}

int main() {
    make();
}

Compile warning is pretty weird

2 个答案:

答案 0 :(得分:3)

默认参数不包括在内。

因此,您无法在这里做您想要的事情(那样)。

如果合适,您可以这样做:

template <typename Seq = std::index_sequence<0, 1>>
auto make(Seq = std::make_index_sequence<2>())
{
    /*...*/
}

答案 1 :(得分:0)

对于它的价值,它将编译为:

section.bmform {
    .thanks-for-requesting {
        .change-request {
            &:extend(.highlight_bordered);
        }
    }
    .bmform-submit-container {
        .bmform_submit {
            &:extend(.highlight_bordered);
        }
    }
    .btn {
        &.btn-danger {
            &.plus, 
            &.minus {
                &:extend(.highlight_bordered);
            }
        }
    }
}

但可能不满足您的要求。