using declaration to introduce a name

M

mzdude

I have the following code

struct foo
{
operator std::string () const { return str;}
std::string f() const {return str;}

std::string str;
};

struct bar : private foo
{
using foo::eek:perator std::string;
using foo::f;
};

void test()
{

bar b;
std::string a = b; // Ok
std::string a2 = b.f(); // Ok

const bar b2;
std::string a3 = b2; // Compile error
std::string a4 = b2.f(); // Ok
}

My question is why does the compiler have a problem with the const
for the operator but not the function.


error XXXX: 'initializing' : cannot convert from 'const bar' to
'std::basic_string<_Elem,_Traits,_Ax>'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
No constructor could take the source type, or constructor
overload resolution was ambiguous
 
M

mzdude

Because of the bug in the compiler, maybe?

Post the same question to 'microsoft.public.vc.language' (you *are*
using MSVC, aren't you?)
Yes. I'm using VC8. That's what I wanted to know. Was it a compiler
bug or a definition problem.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top