From 86aa5093eca9c72415f81a5c4ac0b09953aef52b Mon Sep 17 00:00:00 2001 From: Chris Burel Date: Thu, 10 Feb 2022 15:23:48 -0800 Subject: [PATCH] Use `enable_if` to control what types can instantiate a template Using a `static_assert(false, ...)` expression in the `else` block of a `if constexpr` statement doesn't work. The `else` block is not protected by the `constexpr`-ness of the `if`s, so it is always compiled. Consequently it will always fail to compile. Signed-off-by: Chris Burel --- .../TestImpactClientSequenceReportSerializer.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Code/Tools/TestImpactFramework/Runtime/Code/Source/TestImpactClientSequenceReportSerializer.cpp b/Code/Tools/TestImpactFramework/Runtime/Code/Source/TestImpactClientSequenceReportSerializer.cpp index 46a2d2dab9..65a5c88883 100644 --- a/Code/Tools/TestImpactFramework/Runtime/Code/Source/TestImpactClientSequenceReportSerializer.cpp +++ b/Code/Tools/TestImpactFramework/Runtime/Code/Source/TestImpactClientSequenceReportSerializer.cpp @@ -6,6 +6,7 @@ * */ +#include #include #include #include @@ -735,7 +736,11 @@ namespace TestImpact }; } - template + template, + AZStd::is_same, + AZStd::is_same + >>> PolicyStateType DeserializePolicyStateType(const rapidjson::Value& serialPolicyStateType) { if constexpr (AZStd::is_same_v) @@ -750,10 +755,6 @@ namespace TestImpact { return DeserializeImpactAnalysisSequencePolicyStateMembers(serialPolicyStateType); } - else - { - static_assert(false, "Template paramater must be a valid policy state type"); - } } template