FreeBSD/contrib/gcc/cp/call.c
/* Returns the implicit conversion sequence (see [over.ics]) from type
   FROM to type TO.  The optional expression EXPR may affect the
   conversion.  FLAGS are the usual overloading flags.  Only
   LOOKUP_NO_CONVERSION is significant.  If C_CAST_P is true, this
   conversion is coming from a C-style cast.  */
Returns the implicit conversion sequence  from type
FROM to type TO.  The optional expression EXPR may affect the
conversion.  FLAGS are the usual overloading flags.  Only
LOOKUP_NO_CONVERSION is significant.  If C_CAST_P is true, this
conversion is coming from a C-style cast.
Returns the implicit conversion sequence from type FROM to type TO . The optional expression EXPR may affect the conversion . FLAGS are the usual overloading flags . Only LOOKUP_NO_CONVERSION is significant . If C_CAST_P is true this conversion is coming from a C - style cast .
static conversion *
implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
		     int flags)
{
  conversion *conv;
  if (from == error_mark_node || to == error_mark_node
      || expr == error_mark_node)
    return NULL;
  if (TREE_CODE (to) == REFERENCE_TYPE)
    conv = reference_binding (to, from, expr, c_cast_p, flags);
  else
    conv = standard_conversion (to, from, expr, c_cast_p, flags);
  if (conv)
    return conv;
  if (expr != NULL_TREE
      && (IS_AGGR_TYPE (from)
	  || IS_AGGR_TYPE (to))
      && (flags & LOOKUP_NO_CONVERSION) == 0)
    {
      struct z_candidate *cand;
      cand = build_user_type_conversion_1
	(to, expr, LOOKUP_ONLYCONVERTING);
      if (cand)
	conv = cand->second_conv;
      return conv;
    }
  return NULL;
}
static conversion * implicit_conversion ( tree to , tree from , tree expr , bool c_cast_p , int flags ) { conversion * conv ; if ( from == error_mark_node || to == error_mark_node || expr == error_mark_node ) return NULL ; if ( TREE_CODE ( to ) == REFERENCE_TYPE ) conv = reference_binding ( to , from , expr , c_cast_p , flags ) ; else conv = standard_conversion ( to , from , expr , c_cast_p , flags ) ; if ( conv ) return conv ; if ( expr != NULL_TREE && ( IS_AGGR_TYPE ( from ) || IS_AGGR_TYPE ( to ) ) && ( flags & LOOKUP_NO_CONVERSION ) == 0 ) { struct z_candidate * cand ; cand = build_user_type_conversion_1 ( to , expr , LOOKUP_ONLYCONVERTING ) ; if ( cand ) conv = cand -> second_conv ; return conv ; } return NULL ; }
Returns the implicit conversion sequence (see [over.ics]) from type
FROM to type TO.
Returns the implicit conversion sequence ( see [ over . ics ] ) from type FROM to type TO .
/* We used to try to bind a reference to a temporary here, but that
	 is now handled by the recursive call to this function at the end
	 of reference_binding.  */