This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
g++ does not honour "explicit" keyword in all cases?
- From: Richard Guenther <rguenth at tat dot physik dot uni-tuebingen dot de>
- To: gcc at gcc dot gnu dot org
- Date: Wed, 29 Oct 2003 09:46:10 +0100 (CET)
- Subject: 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/