[Bug c++/34691] [4.1/4.2/4.3 Regression] Default argument checking not performed after overload resolution with C linkage

2008-02-01 Thread jsm28 at gcc dot gnu dot org


--- Comment #4 from jsm28 at gcc dot gnu dot org  2008-02-01 16:55 ---
4.2.3 is being released now, changing milestones of open bugs to 4.2.4.


-- 

jsm28 at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|4.2.3   |4.2.4


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34691



[Bug c++/34691] [4.1/4.2/4.3 Regression] Default argument checking not performed after overload resolution with C linkage

2008-01-11 Thread jakub at gcc dot gnu dot org


--- Comment #3 from jakub at gcc dot gnu dot org  2008-01-11 14:01 ---
What about:
namespace A {
  extern C int g (double);
}
namespace B {
  extern C int g (int);
}
using namespace A;
using namespace B;

void f ()
{
  g (1.0);
}

I don't believe this is valid, as extern C means there is just one g, yet it
is accepted.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34691



[Bug c++/34691] [4.1/4.2/4.3 Regression] Default argument checking not performed after overload resolution with C linkage

2008-01-11 Thread jakub at gcc dot gnu dot org


--- Comment #2 from jakub at gcc dot gnu dot org  2008-01-11 13:25 ---
Related:
void foo (int i, int j = 6);
void foo (int i = 4, int j);

int bar (void)
{
  foo ();
}
is accepted (correctly), but:
extern C {
void foo (int i, int j = 6);
void foo (int i = 4, int j);
}

int bar (void)
{
  foo ();
}
is rejected.  How does the C linkage matter here?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34691



[Bug c++/34691] [4.1/4.2/4.3 Regression] Default argument checking not performed after overload resolution with C linkage

2008-01-10 Thread jakub at gcc dot gnu dot org


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34691



[Bug c++/34691] [4.1/4.2/4.3 Regression] Default argument checking not performed after overload resolution with C linkage

2008-01-06 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2008-01-06 20:54 ---
2.95.4 says

t.C:9: `B::f(int)' conflicts with used function
t.C:2: `void A::f(int = 5)' previously declared here
t.C:9: default argument given for parameter 1 of `void B::f(int = 4)'
t.C:2: after previous specification in `void A::f(int = 5)'

fails since at least 3.3.6.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||accepts-invalid
  Known to fail||3.3.6
  Known to work||2.95.4
   Last reconfirmed|-00-00 00:00:00 |2008-01-06 20:54:23
   date||
Summary|Default argument checking   |[4.1/4.2/4.3 Regression]
   |not performed after overload|Default argument checking
   |resolution with C linkage   |not performed after overload
   ||resolution with C linkage
   Target Milestone|--- |4.2.3


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34691