From 246952e4482b98519f89ade8372874373b87fb60 Mon Sep 17 00:00:00 2001 From: "C. Weaver" Date: Thu, 13 Apr 2023 10:03:07 -0400 Subject: [PATCH] Explicitly force G3TimestreamMap to have assignment operators --- core/include/core/G3Timestream.h | 3 +++ core/tests/G3TimestreamMapTest.cxx | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/core/include/core/G3Timestream.h b/core/include/core/G3Timestream.h index 7fab444b..429acc49 100644 --- a/core/include/core/G3Timestream.h +++ b/core/include/core/G3Timestream.h @@ -180,6 +180,9 @@ class G3TimestreamMap : public G3FrameObject, G3TimestreamMap(const G3TimestreamMap& other):std::map(other){} G3TimestreamMap(G3TimestreamMap&& other):std::map(std::move(other)){} + G3TimestreamMap& operator=(const G3TimestreamMap&)=default; + G3TimestreamMap& operator=(G3TimestreamMap&&)=default; + // Return true if all timestreams start and end at the same time and // contain the same number of samples. bool CheckAlignment() const; diff --git a/core/tests/G3TimestreamMapTest.cxx b/core/tests/G3TimestreamMapTest.cxx index 2d721a97..f5e09bfe 100644 --- a/core/tests/G3TimestreamMapTest.cxx +++ b/core/tests/G3TimestreamMapTest.cxx @@ -1,11 +1,29 @@ #include +#include + #include #include TEST_GROUP(G3TimestreamMap) +//These things can be checked purely at compile time +static_assert(std::is_default_constructible::value, + "G3TimestreamMap must be default constructible"); + +static_assert(std::is_copy_constructible::value, + "G3TimestreamMap must be copy constructible"); + +static_assert(std::is_move_constructible::value, + "G3TimestreamMap must be move constructible"); + +static_assert(std::is_copy_assignable::value, + "G3TimestreamMap must be copy assignable"); + +static_assert(std::is_move_assignable::value, + "G3TimestreamMap must be move assignable"); + template void testMakeCompact(){ std::vector keys={"a","b","c","d"};