⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 overload11.c

📁 linux下编程用 编译软件
💻 C
字号:
// { dg-do assemble }// Copyright (C) 1999 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 5 Sep 1999 <nathan@acm.org>// [over.match] 13.3 tells us where overload resolution occurs.// [over.match.call] 13.3.1.1 says that in//  (...( postfix-expression )...) (expression-list)// the postfix-expression must be the name of a function (amongst some other// choices). This means comma and conditional exprs cannot be placed there.// This clause is the only one I can find which bans//  (cond ? fna : fnb) (arglist)// which would be a major headache to have to implement.// [over.over] 13.4 tells us when the use of a function name w/o arguments is// resolved to the address of a particular function. These are determined by// the context of the function name, and it does allow more complicated primary// expressions.// Using a naked function name is rather strange, we used to warn about it// (rather inconsistently), but subsequent changes broke the warning. Make// sure that doesn't happen again.void ovl (int);          // { dg-error "" } candidatevoid ovl (float);        // { dg-error "" } candidatevoid fn (int);void fna (int);int main (int argc, char **argv){  void (*ptr) (int);  void (*vptr) ();    (ovl) (1);                // ok  (&ovl) (1);               // { dg-error "" } not suitable for overload resolution  (ovl) ();                 // { dg-error "" } no matching candidates  (&ovl) ();                // { dg-error "" } not suitable for overload resolution    // 13.3.1.1 indicates that the following are errors -- the primary expression  // is not the name of a function.  (0, ovl) (1);             // { dg-error "" } not suitable for overload resolution  (0, &ovl) (1);            // { dg-error "" } not suitable for overload resolution  (argc ? ovl : ovl) (1);   // { dg-error "" } not suitable for overload resolution  (argc ? &ovl : &ovl) (1); // { dg-error "" } not suitable for overload resolution    (fn) (1);                 // ok  (&fn) (1);                // ok (no overload resolution)  (0, fn) (1);              // ok (no overload resolution)  (0, &fn) (1);             // ok (no overload resolution)  (argc ? fna : fn) (1);    // ok (no overload resolution)  (argc ? &fna : &fn) (1);  // ok (no overload resolution)    ptr = (ovl);              // ok  ptr = (&ovl);             // ok  // 13.4 indicates these are ok.  ptr = (0, ovl);           // ok { dg-bogus "" "" { xfail *-*-* } }  ptr = (0, &ovl);          // ok { dg-bogus "" "" { xfail *-*-* } }  ptr = (argc ? ovl : ovl); // ok { dg-bogus "" "" { xfail *-*-* } }  ptr = (argc ? &ovl : &ovl);// ok { dg-bogus "" "" { xfail *-*-* } }    vptr = (ovl);              // { dg-error "" } no matching candidates  vptr = (&ovl);             // { dg-error "" } no matching candidates  vptr = (0, ovl);           // { dg-error "" } no matching candidates  vptr = (0, &ovl);          // { dg-error "" } no matching candidates  vptr = (argc ? ovl : ovl); // { dg-error "" } no matching candidates  vptr = (argc ? &ovl : &ovl);// { dg-error "" } no matching candidates    ptr = (fn);  ptr = (&fn);  ptr = (0, fn);  ptr = (0, &fn);  ptr = (argc ? fna : fn);  ptr = (argc ? &fna : &fn);    f;                // { dg-warning "" } not a call  ovl;              // { dg-error "" } not suitable for overload  &ovl;             // { dg-error "" } not suitable for overload  (void)f;          // ok  (void)ovl;        // { dg-error "" } not suitable for overload  (void)&ovl;       // { dg-error "" } not suitable for overload  static_cast<void>(f);          // ok  static_cast<void>(ovl);        // { dg-error "" } not suitable for overload  static_cast<void>(&ovl);       // { dg-error "" } not suitable for overload  ((void)1, f);             // { dg-warning "" "" { xfail *-*-* } } not a call  ((void)1, ovl);           // { dg-error "" } not suitable for overload  ((void)1, &ovl);          // { dg-error "" } not suitable for overload  (void)((void)1, f);           // ok  (void)((void)1, ovl);         // { dg-error "" } not suitable for overload  (void)((void)1, &ovl);        // { dg-error "" } not suitable for overload  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -