因为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>();
}
似乎行不通。
答案 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
是如何隐含的,而不是实际传递的。