core: ensure is_trivially_copyable for simple types

This commit is contained in:
Alexander Alekhin
2021-10-06 18:43:12 +00:00
parent 13c6eb42e9
commit eab2b9dc09
2 changed files with 39 additions and 110 deletions
+23
View File
@@ -798,4 +798,27 @@ TEST(Core_Allocation, alignedAllocation)
}
}
#if !(defined(__GNUC__) && __GNUC__ < 5) // GCC 4.8 emits: 'is_trivially_copyable' is not a member of 'std'
TEST(Core_Types, trivially_copyable)
{
EXPECT_TRUE(std::is_trivially_copyable<cv::Complexd>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::Point>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::Point3f>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::Size>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::Range>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::Rect>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::RotatedRect>::value);
//EXPECT_TRUE(std::is_trivially_copyable<cv::Scalar>::value); // derived from Vec (Matx)
}
TEST(Core_Types, trivially_copyable_extra)
{
EXPECT_TRUE(std::is_trivially_copyable<cv::KeyPoint>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::DMatch>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::TermCriteria>::value);
EXPECT_TRUE(std::is_trivially_copyable<cv::Moments>::value);
}
#endif
}} // namespace