因为 c++ 不能从构造函数推导出类模板参数,作为一种解决方法,我们编写了一个像 std::make_pair 这样的 make 函数。
我的问题是:这项工作适用于 std::bitset 吗?换句话说,我可以编写一个返回 bitset<7> 的函数 make_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
暗示的,而不是实际传入的。