This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

g++ does not honour "explicit" keyword in all cases?


Hi!

Shouldnt g++ reject the following code, following 12.3.2?

struct Foo {
   template <class T>
   explicit Foo(const T&) {}
};

template <class T>
struct Bar {
   static T bar() { return 1; }
};

void foo(void)
{
  Bar<double>::bar();
}

here Foo::Foo(const T&) is implicitly called from Bar::bar() returning
int. Both gcc 3.3 and gcc 3.4 (and also intel icpc) accept these. But they
should reject this for the same reason they reject

void foo(void)
{
  Foo i = 1.0;
}

?

Thanks for clarification,

Richard.

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]