0

因为 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>();
}

好像不行。

4

1 回答 1

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暗示的,而不是实际传入的。

于 2013-04-20T17:42:24.903 回答