mirror of
https://github.com/boostorg/unordered.git
synced 2025-05-10 07:34:00 +00:00
Fix cfoa tests
This commit is contained in:
parent
aff242dbaf
commit
260418e4ee
@ -52,7 +52,7 @@ namespace {
|
|||||||
|
|
||||||
struct lvalue_emplacer_type
|
struct lvalue_emplacer_type
|
||||||
{
|
{
|
||||||
template <class T, class X> void operator()(std::vector<T>& values, X& x)
|
template <class T, class X> void call_impl(std::vector<T>& values, X& x)
|
||||||
{
|
{
|
||||||
static constexpr auto value_type_cardinality =
|
static constexpr auto value_type_cardinality =
|
||||||
value_cardinality<typename X::value_type>::value;
|
value_cardinality<typename X::value_type>::value;
|
||||||
@ -67,28 +67,33 @@ namespace {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
BOOST_TEST_EQ(num_inserts, x.size());
|
BOOST_TEST_EQ(num_inserts, x.size());
|
||||||
BOOST_TEST_EQ(
|
|
||||||
raii::default_constructor, value_type_cardinality * values.size());
|
|
||||||
|
|
||||||
BOOST_TEST_EQ(raii::copy_constructor, 0u);
|
std::uint64_t const default_constructors = value_type_cardinality == 2
|
||||||
BOOST_TEST_GE(raii::move_constructor, value_type_cardinality * x.size());
|
? values.size() + num_inserts
|
||||||
|
: values.size();
|
||||||
|
BOOST_TEST_EQ(raii::default_constructor, default_constructors);
|
||||||
|
|
||||||
BOOST_TEST_EQ(raii::copy_constructor, 0u);
|
BOOST_TEST_EQ(raii::copy_constructor, 0u);
|
||||||
BOOST_TEST_EQ(raii::copy_assignment, 0u);
|
BOOST_TEST_EQ(raii::copy_assignment, 0u);
|
||||||
BOOST_TEST_EQ(raii::move_assignment, 0u);
|
BOOST_TEST_EQ(raii::move_assignment, 0u);
|
||||||
}
|
}
|
||||||
|
template <class T, class X> void operator()(std::vector<T>& values, X& x)
|
||||||
|
{
|
||||||
|
static constexpr auto value_type_cardinality =
|
||||||
|
value_cardinality<typename X::value_type>::value;
|
||||||
|
|
||||||
|
call_impl(values, x);
|
||||||
|
BOOST_TEST_GE(raii::move_constructor, value_type_cardinality * x.size());
|
||||||
|
}
|
||||||
} lvalue_emplacer;
|
} lvalue_emplacer;
|
||||||
|
|
||||||
struct norehash_lvalue_emplacer_type : public lvalue_emplacer_type
|
struct norehash_lvalue_emplacer_type : public lvalue_emplacer_type
|
||||||
{
|
{
|
||||||
template <class T, class X> void operator()(std::vector<T>& values, X& x)
|
template <class T, class X> void operator()(std::vector<T>& values, X& x)
|
||||||
{
|
{
|
||||||
static constexpr auto value_type_cardinality =
|
|
||||||
value_cardinality<typename X::value_type>::value;
|
|
||||||
|
|
||||||
x.reserve(values.size());
|
x.reserve(values.size());
|
||||||
lvalue_emplacer_type::operator()(values, x);
|
lvalue_emplacer_type::call_impl(values, x);
|
||||||
BOOST_TEST_EQ(raii::move_constructor, value_type_cardinality * x.size());
|
BOOST_TEST_EQ(raii::move_constructor, x.size());
|
||||||
}
|
}
|
||||||
} norehash_lvalue_emplacer;
|
} norehash_lvalue_emplacer;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user