From 4540bed06c80fcacd73bd8f34873198632396ae4 Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Tue, 26 Nov 2019 10:40:51 +0100
Subject: [PATCH] macro processor: missed if statement with initializer for
 C++17

---
 src/macro/Expressions.cc | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/macro/Expressions.cc b/src/macro/Expressions.cc
index ec54db44..59b4ca85 100644
--- a/src/macro/Expressions.cc
+++ b/src/macro/Expressions.cc
@@ -41,13 +41,11 @@ Bool::is_equal(const BaseTypePtr &btp) const
 BoolPtr
 Bool::logical_and(const BaseTypePtr &btp) const
 {
-  auto btp2 = dynamic_pointer_cast<Bool>(btp);
-  if (btp2)
+  if (auto btp2 = dynamic_pointer_cast<Bool>(btp); btp2)
     return make_shared<Bool>(value && *btp2, env);
 
-  auto btp3 = dynamic_pointer_cast<Real>(btp);
-  if (btp3)
-    return make_shared<Bool>(value && *btp3, env);
+  if (auto btp2 = dynamic_pointer_cast<Real>(btp); btp2)
+    return make_shared<Bool>(value && *btp2, env);
 
   throw StackTrace("Type mismatch for operands of && operator");
 }
-- 
GitLab