如何为bitset,make_bitset编写类似make_pair的函数?

时间:2013-04-20 17:30:50

标签: c++ templates

因为c ++不能从构造函数中推导出类模板参数,所以我们编写一个类似std :: make_pair的make函数。

我的问题是:为std :: bitset做这个工作吗?换句话说,我可以写一个函数make_bitset(7)来返回bitset< 7>?

我的尝试是:

template<size_t N>
bitset<N> make_bitset(size_t N){
    return bitset<N>();
}

似乎行不通。

1 个答案:

答案 0 :(得分:1)

正如@mfontanini所说,“你不会缩短bitset<N>()”。但是,您可以使用char const[]初始化它。

template<size_t N>
std::bitset<N-1> make_bitset(char const (&in_string)[N])
{
    return std::bitset<N-1>(in_string);
}

因此,您可以编写bitset<3> my_bitset("100");

,而不是撰写auto my_bitset = make_bitset("100");

注意传入的类型暗示N是如何隐含的,而不是实际传递的。