On Wed, Feb 28, 2018 at 12:24 AM, Alexandre Oliva <aol...@redhat.com> wrote: > + if (processing_template_decl) > + result_type = cp_build_reference_type (result_type, !is_lvalue);
If !is_lvalue, we don't want a reference type at all, as the result is a prvalue. is_lvalue should probably rename to is_glvalue. The second argument to cp_build_reference_type should be xvalue_p (arg2). > + /* Except for type-dependent exprs, a REFERENCE_TYPE will > + indicate whether its result is an lvalue or so. "or not" ? > + if (processing_template_decl > + && !type_dependent_expression_p (CONST_CAST_TREE (ref))) > + return clk_none; I think we want to return clk_class for a COND_EXPR of class type. Can we actually get here for a type-dependent expression? I'd think we'd never get as far as asking whether a type-dependent expression is an lvalue, since in general we can't answer that question. Jason