[#fast_multiblock32]
== Class Template `fast_multiblock32`

:idprefix: fast_multiblock32_

`boost::bloom::fast_multiblock32` -- A faster replacement of
`xref:multiblock[multiblock]<std::uint32_t, K>`.

=== Synopsis

[listing,subs="+macros,+quotes"]
-----
// #include <boost/bloom/fast_multiblock32.hpp>

namespace boost{
namespace bloom{

template<std::size_t K>
struct fast_multiblock32
{
  static constexpr std::size_t k               = K;
  using value_type                             = _implementation-defined_;

  // might not be present
  static constexpr std::size_t used_value_size = _implementation-defined_;

  // the rest of the interface is not public

} // namespace bloom
} // namespace boost
-----

=== Description

*Template Parameters*

[cols="1,4"]
|===

|`K`
| Number of bits set/checked per operation. Must be greater than zero.

|===

`fast_multiblock32<K>` is statistically equivalent to
`xref:multiblock[multiblock]<std::uint32_t, K>`, but takes advantage
of selected SIMD technologies, when available at compile time, to perform faster.
Currently supported: AVX2, little-endian Neon, SSE2.
The non-SIMD case falls back to regular `multiblock`.

`xref:subfilters_used_value_size[_used-value-size_]<fast_multiblock32<K>>` is
`4 * K`.

'''