#include "expression.hpp" template using term = boost::proto17::terminal; namespace bp17 = boost::proto17; namespace bh = boost::hana; void compile_const_term () { { term unity{1.0}; int i_ = 42; term i{std::move(i_)}; bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref &>, term > > expr = unity + std::move(i); bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref &>, bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref &>, term > > > > unevaluated_expr = unity + std::move(expr); (void)unevaluated_expr; } { term const unity{1.0}; int i_ = 42; term i{std::move(i_)}; bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref const &>, term > > expr = unity + std::move(i); bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref const &>, bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref const &>, term > > > > unevaluated_expr = unity + std::move(expr); (void)unevaluated_expr; } { term unity{1.0}; int i_ = 42; term i{i_}; bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref &>, term > > const expr = unity + std::move(i); bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref &>, bp17::expression< bp17::expr_kind::plus, bh::tuple< bp17::expression_ref &>, term > > > > unevaluated_expr = unity + std::move(expr); (void)unevaluated_expr; } }