FreeBSD/contrib/gcc/cp/parser.c
/* Parse a functional cast to TYPE.  Returns an expression
   representing the cast.  */
Parse a functional cast to TYPE.  Returns an expression
representing the cast.
Parse a functional cast to TYPE . Returns an expression representing the cast .
static tree
cp_parser_functional_cast (cp_parser* parser, tree type)
{
  tree expression_list;
  tree cast;
  expression_list
    = cp_parser_parenthesized_expression_list (parser, false,
					       true,
					       NULL);
  cast = build_functional_cast (type, expression_list);
  if (TREE_CODE (type) == TYPE_DECL)
    type = TREE_TYPE (type);
  if (cast != error_mark_node
      && !cast_valid_in_integral_constant_expression_p (type)
      && (cp_parser_non_integral_constant_expression
	  (parser, "a call to a constructor")))
    return error_mark_node;
  return cast;
}
static tree cp_parser_functional_cast ( cp_parser * parser , tree type ) { tree expression_list ; tree cast ; expression_list = cp_parser_parenthesized_expression_list ( parser , false , true , NULL ) ; cast = build_functional_cast ( type , expression_list ) ; if ( TREE_CODE ( type ) == TYPE_DECL ) type = TREE_TYPE ( type ) ; if ( cast != error_mark_node && ! cast_valid_in_integral_constant_expression_p ( type ) && ( cp_parser_non_integral_constant_expression ( parser , " " ) ) ) return error_mark_node ; return cast ; }
Parse a functional cast to TYPE.
Parse a functional cast to TYPE .
/*cast_p=*/ /*non_constant_p=*/ /* [expr.const]/1: In an integral constant expression "only type
     conversions to integral or enumeration type can be used".  */