+ ast_expression() = delete;
+ ast_expression(lex_ctx_t ctx, int nodetype, qc_type vtype);
+ ast_expression(lex_ctx_t ctx, int nodetype);
+ ~ast_expression();
+ ast_expression(ast_copy_type_t, int nodetype, const ast_expression&);
+ ast_expression(ast_copy_type_t, const ast_expression&);
+
+ static ast_expression *shallow_type(lex_ctx_t ctx, qc_type vtype);
+
+ bool compare_type(const ast_expression &other) const;
+ void adopt_type(const ast_expression &other);