diff --git a/src/macro/Expressions.cc b/src/macro/Expressions.cc
index ec54db444b72628cd00c49412a8067ab5e59c431..59b4ca8534cd2d505136e677ddab405751c0bb4b 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");
 }