如何为bitset编写一个类似make_pair的函数

How to write a make_pair like function for bitset, make_bitset?

本文关键字:一个 make 函数 pair bitset      更新时间:2023-10-16

由于c++不能从构造函数中推断出类模板参数,作为一种解决方法,我们编写了一个make函数,如std::make_pair。

我的问题是:这对std::bitset有效吗?换句话说,我可以写一个函数make_bitset(7)返回bitset<7>?

我的尝试是:

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

正如@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是如何被传入的类型所暗示的,而不是实际传递的类型。