diff --git a/Control/CxxUtils/CxxUtils/ConcurrentStrMap.h b/Control/CxxUtils/CxxUtils/ConcurrentStrMap.h index df1286a5eea64ab5a778c3a57256d36ffdc28ad7..26ded9575dff1a5dd593efa9dd7ab164fcb5a270 100644 --- a/Control/CxxUtils/CxxUtils/ConcurrentStrMap.h +++ b/Control/CxxUtils/CxxUtils/ConcurrentStrMap.h @@ -1,6 +1,6 @@ // This file's extension implies that it's C, but it's really -*- C++ -*-. /* - * Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration. + * Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration. */ /** * @file CxxUtils/ConcurrentStrMap.h @@ -74,7 +74,8 @@ namespace CxxUtils { */ template <class VALUE, template <class> class UPDATER> // FIXME: Check UPDATER too. -ATH_REQUIRES (std::is_pod_v<VALUE> && +ATH_REQUIRES (std::is_standard_layout_v<VALUE> && + std::is_trivial_v<VALUE> && (sizeof (VALUE) <= sizeof (uintptr_t))) class ConcurrentStrMap { diff --git a/Control/CxxUtils/CxxUtils/ConcurrentStrMap.icc b/Control/CxxUtils/CxxUtils/ConcurrentStrMap.icc index 487fffd2539ce0cfaa35715476f04964be8cf06b..d0961ad6dcf924db39a8b63a8f1c1219561cb716 100644 --- a/Control/CxxUtils/CxxUtils/ConcurrentStrMap.icc +++ b/Control/CxxUtils/CxxUtils/ConcurrentStrMap.icc @@ -1,5 +1,5 @@ /* - * Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration. + * Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration. */ /** * @file CxxUtils/ConcurrentStrMap.icc @@ -12,7 +12,11 @@ namespace CxxUtils { -#define T_CONCURRENTSTRMAP template <class VALUE, template <class> class UPDATER> +#define T_CONCURRENTSTRMAP template <class VALUE, template <class> class UPDATER> \ + ATH_REQUIRES (std::is_standard_layout_v<VALUE> && \ + std::is_trivial_v<VALUE> && \ + (sizeof (VALUE) <= sizeof (uintptr_t))) + #define CONCURRENTSTRMAP ConcurrentStrMap<VALUE, UPDATER>