• 大小: 6.61MB
    文件类型: .bz2
    金币: 1
    下载: 0 次
    发布日期: 2023-09-25
  • 语言: 其他
  • 标签: GCC  G++  

资源简介

gcc-g++-4.6.3.tar.bz2

资源截图

代码片段和文件信息

/* Functions related to invoking methods and overloaded functions.
   Copyright (C) 1987 1992 1993 1994 1995 1996 1997 1998
   1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
   Free Software Foundation Inc.
   Contributed by Michael Tiemann (tiemann@cygnus.com) and
   modified by Brendan Kehoe (brendan@cygnus.com).

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 or (at your option)
any later version.

GCC is distributed in the hope that it will be useful
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
.  */


/* High-level class interface.  */

#include “config.h“
#include “system.h“
#include “coretypes.h“
#include “tm.h“
#include “tree.h“
#include “cp-tree.h“
#include “output.h“
#include “flags.h“
#include “toplev.h“
#include “diagnostic-core.h“
#include “intl.h“
#include “target.h“
#include “convert.h“
#include “langhooks.h“
#include “c-family/c-objc.h“

/* The various kinds of conversion.  */

typedef enum conversion_kind {
  ck_identity
  ck_lvalue
  ck_qual
  ck_std
  ck_ptr
  ck_pmem
  ck_base
  ck_ref_bind
  ck_user
  ck_ambig
  ck_list
  ck_aggr
  ck_rvalue
} conversion_kind;

/* The rank of the conversion.  Order of the enumerals matters; better
   conversions should come earlier in the list.  */

typedef enum conversion_rank {
  cr_identity
  cr_exact
  cr_promotion
  cr_std
  cr_pbool
  cr_user
  cr_ellipsis
  cr_bad
} conversion_rank;

/* An implicit conversion sequence in the sense of [over.best.ics].
   The first conversion to be performed is at the end of the chain.
   That conversion is always a cr_identity conversion.  */

typedef struct conversion conversion;
struct conversion {
  /* The kind of conversion represented by this step.  */
  conversion_kind kind;
  /* The rank of this conversion.  */
  conversion_rank rank;
  BOOL_BITFIELD user_conv_p : 1;
  BOOL_BITFIELD ellipsis_p : 1;
  BOOL_BITFIELD this_p : 1;
  /* True if this conversion would be permitted with a bending of
     language standards e.g. disregarding pointer qualifiers or
     converting integers to pointers.  */
  BOOL_BITFIELD bad_p : 1;
  /* If KIND is ck_ref_bind ck_base_conv true to indicate that a
     temporary should be created to hold the result of the
     conversion.  */
  BOOL_BITFIELD need_temporary_p : 1;
  /* If KIND is ck_ptr or ck_pmem true to indicate that a conversion
     from a pointer-to-derived to pointer-to-base is being performed.  */
  BOOL_BITFIELD base_p : 1;
  /* If KIND is ck_ref_bind true when either an lvalue reference is
     being bound to an lvalue exp

评论

共有 条评论