diff --git a/CGAL_Core/include/CGAL/CORE/Expr.h b/CGAL_Core/include/CGAL/CORE/Expr.h
index c10fb5fc560..e6efa1feb7c 100644
--- a/CGAL_Core/include/CGAL/CORE/Expr.h
+++ b/CGAL_Core/include/CGAL/CORE/Expr.h
@@ -91,9 +91,14 @@ public:
Expr(const BigInt& I) : RCExpr(new ConstRealRep(Real(I))) {}
/// constructor for BigRat
Expr(const BigRat& R) : RCExpr(new ConstRealRep(Real(R))) {}
- /// constructor for BigRat expression
- template ::value> >
- Expr(const BigRatExpr& R) : RCExpr(new ConstRealRep(Real(BigRat(R)))) {}
+ /// constructor from expression template
+ template ::value> >
+ Expr(const TmplExpr& R)
+ : RCExpr(new ConstRealRep(Real(
+ std::conditional_t::value == boost::multiprecision::number_kind_integer,
+ BigInt, BigRat>(R)))) {}
/// constructor for BigFloat
Expr(const BigFloat& F) : RCExpr(new ConstRealRep(Real(F))) {}