This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/33940] New: call of overloaded 'basic_string(const<anonymous class>&)' is ambiguous for a template member function
- From: "gzljg at hotmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Oct 2007 15:43:03 -0000
- Subject: [Bug c++/33940] New: call of overloaded 'basic_string(const<anonymous class>&)' is ambiguous for a template member function
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
#include <string>
const
class {
public:
template <class T> operator T() const
{
return T(); // even I change this to "return std::string();", same error.
}
} MYNULLOBJECT = {};
int main()
{
const unsigned int myInt(MYNULLOBJECT); // OK, myInt is 0
const std::string myString(MYNULLOBJECT); // cannot compile
return myInt;
}
my compiler output ====>
>g++ --version
g++ (GCC) 4.1.2
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>g++ -g -c test.C
test.C: In function 'int main()':
test.C:17: error: call of overloaded 'basic_string(const<anonymous class>&)' is
ambiguous
/mnts/cdstools/gcc-4.1.2/linux-i386-2.3/include/c++/bits/basic_string.tcc:225:
note: candidates are: std::basic_string<_CharT, _Traits,
_Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char,
_Traits = std::char_traits<char>, _Alloc = std::allocator<char>]
/mnts/cdstools/gcc-4.1.2/linux-i386-2.3/include/c++/bits/basic_string.tcc:182:
note: std::basic_string<_CharT, _Traits,
_Alloc>::basic_string(const std::basic_string<_CharT, _Traits, _Alloc>&) [with
_CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]
/mnts/cdstools/gcc-4.1.2/linux-i386-2.3/include/c++/bits/basic_string.tcc:190:
note: std::basic_string<_CharT, _Traits,
_Alloc>::basic_string(const _Alloc&) [with _CharT = char, _Traits =
std::char_traits<char>, _Alloc = std::allocator<char>]
make: *** [test.o] Error 1
Please note that, this test case passed on SunCC compiler.
--
Summary: call of overloaded 'basic_string(const<anonymous
class>&)' is ambiguous for a template member function
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gzljg at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33940