From 4038ee6bc6d9053f5af73cd197d02e47ab624e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Fri, 6 Sep 2019 18:36:59 +0200 Subject: [PATCH] Stop compilation if registering an enum could truncate its value We probably want to use a bigger type (e.g. `int64_t`) later on, but the is a mess right now anyway. --- include/internal/catch_interfaces_enum_values_registry.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/internal/catch_interfaces_enum_values_registry.h b/include/internal/catch_interfaces_enum_values_registry.h index fea6847d..8e07fc73 100644 --- a/include/internal/catch_interfaces_enum_values_registry.h +++ b/include/internal/catch_interfaces_enum_values_registry.h @@ -32,6 +32,7 @@ namespace Catch { template Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::initializer_list values ) { + static_assert(sizeof(int) >= sizeof(E), "Cannot serialize enum to int"); std::vector intValues; intValues.reserve( values.size() ); for( auto enumValue : values )