Archived
This forum has been archived. Please start a new discussion on GitHub.
problems with VC8.0
Hi!
I don't know exactly if this case matches to the bug that was fixed with one of the patches, thus I'd like to post the trouble code here. If I try to compile the slice2cpp-ed code of this module:
I receive error messages on this result code:
Did I do something wrong or has the slice compiler cause this problem?
regs,
Stephan
I don't know exactly if this case matches to the bug that was fixed with one of the patches, thus I'd like to post the trouble code here. If I try to compile the slice2cpp-ed code of this module:
module TestModule { dictionary<string, Ice::ByteSeq> FileMap; interface TestInterface { FileMap returnMyMap(); }; };
I receive error messages on this result code:
void TestModule::__read(::IceInternal::BasicStream* __is, ::TestModule::FileMap& v, ::TestModule::__U__FileMap) { ::Ice::Int sz; __is->readSize(sz); while(sz--) { ::std::pair<const ::std::string, ::Ice::ByteSeq> pair; __is->read(const_cast< ::std::string&>(pair.first)); ::TestModule::FileMap::iterator __i = v.insert(v.end(), pair); ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*> _____i->second; __is->read(_____i->second); ::std::vector< ::Ice::Byte>(_____i->second.first, _____i->second.second).swap(__i->second); } }
.\test.cpp(112) : error C2143: syntax error : missing ';' before '->' .\test.cpp(113) : error C2819: type 'std::pair<_Ty1,_Ty2>' does not have an overloaded member 'operator ->' with [ _Ty1=const Ice::Byte *, _Ty2=const Ice::Byte * ] did you intend to use '.' instead? .\test.cpp(113) : error C2232: '->std::pair<_Ty1,_Ty2>::second' : left operand has 'struct' type, use '.' with [ _Ty1=const Ice::Byte *, _Ty2=const Ice::Byte * ] .\test.cpp(114) : error C2819: type 'std::pair<_Ty1,_Ty2>' does not have an overloaded member 'operator ->' with [ _Ty1=const Ice::Byte *, _Ty2=const Ice::Byte * ] did you intend to use '.' instead? .\test.cpp(114) : error C2232: '->std::pair<_Ty1,_Ty2>::second' : left operand has 'struct' type, use '.' with [ _Ty1=const Ice::Byte *, _Ty2=const Ice::Byte * ] .\test.cpp(114) : error C2228: left of '.first' must have class/struct/union .\test.cpp(114) : error C2819: type 'std::pair<_Ty1,_Ty2>' does not have an overloaded member 'operator ->' with [ _Ty1=const Ice::Byte *, _Ty2=const Ice::Byte * ] did you intend to use '.' instead? .\test.cpp(114) : error C2232: '->std::pair<_Ty1,_Ty2>::second' : left operand has 'struct' type, use '.' with [ _Ty1=const Ice::Byte *, _Ty2=const Ice::Byte * ] .\test.cpp(114) : error C2228: left of '.second' must have class/struct/union .\test.cpp(114) : error C2228: left of '.swap' must have class/struct/union
Did I do something wrong or has the slice compiler cause this problem?
regs,
Stephan
0
Comments
-
Hi Stephan,
Thanks for the bug report; it is not fixed by one of the existing 3.1.0 patches.
It's a bug in the code generated for dictionaries where the value is a byte sequence (the interface has nothing to do with it).
Best regards,
Bernard0 -
Hi,
I have posted a patch for this problem [thread=2512]here[/thread].
Thanks again for the bug report.
Regards,
Dwayne0