Make static_string trivially copyable

This commit is contained in:
Arthur O'Dwyer
2024-03-20 16:42:01 -04:00
committed by Gennaro Prota
parent cd546285c4
commit 37a557d937
2 changed files with 51 additions and 10 deletions

View File

@@ -301,6 +301,53 @@ testTWS(Arithmetic value, const wchar_t* wstr_expected = nullptr)
}
}
// done
static
void
testTypeTraits()
{
{
using S = static_string<0>;
static_assert(std::is_trivially_copyable<S>::value, "");
static_assert(!std::is_trivially_default_constructible<S>::value, "");
static_assert(std::is_trivially_copy_constructible<S>::value, "");
static_assert(std::is_trivially_move_constructible<S>::value, "");
static_assert(std::is_trivially_copy_assignable<S>::value, "");
static_assert(std::is_trivially_move_assignable<S>::value, "");
static_assert(std::is_trivially_destructible<S>::value, "");
}
{
using S = static_string<1>;
static_assert(std::is_trivially_copyable<S>::value, "");
static_assert(!std::is_trivially_default_constructible<S>::value, "");
static_assert(std::is_trivially_copy_constructible<S>::value, "");
static_assert(std::is_trivially_move_constructible<S>::value, "");
static_assert(std::is_trivially_copy_assignable<S>::value, "");
static_assert(std::is_trivially_move_assignable<S>::value, "");
static_assert(std::is_trivially_destructible<S>::value, "");
}
{
using S = static_string<20>;
static_assert(std::is_trivially_copyable<S>::value, "");
static_assert(!std::is_trivially_default_constructible<S>::value, "");
static_assert(std::is_trivially_copy_constructible<S>::value, "");
static_assert(std::is_trivially_move_constructible<S>::value, "");
static_assert(std::is_trivially_copy_assignable<S>::value, "");
static_assert(std::is_trivially_move_assignable<S>::value, "");
static_assert(std::is_trivially_destructible<S>::value, "");
}
{
using S = static_string<400>;
static_assert(std::is_trivially_copyable<S>::value, "");
static_assert(!std::is_trivially_default_constructible<S>::value, "");
static_assert(std::is_trivially_copy_constructible<S>::value, "");
static_assert(std::is_trivially_move_constructible<S>::value, "");
static_assert(std::is_trivially_copy_assignable<S>::value, "");
static_assert(std::is_trivially_move_assignable<S>::value, "");
static_assert(std::is_trivially_destructible<S>::value, "");
}
}
// done
static
void
@@ -7467,6 +7514,8 @@ runTests()
constexpr auto cxper = testConstantEvaluation();
static_cast<void>(cxper);
testTypeTraits();
testConstruct();
testAssignment();