gcc doesn't like foreach with const-ref containers
Christian Ehrlicher
Ch.Ehrlicher at gmx.de
Wed Sep 5 20:03:19 CEST 2007
Andreas Pakulat schrieb:
> On 05.09.07 19:17:20, Andreas Pakulat wrote:
>> On 05.09.07 06:30:19, Christian Ehrlicher wrote:
>>> Andreas Pakulat schrieb:
>>>> Hi,
>>>> while compiling kdevelop I got an error on some code in its language
>>>> support which compiles fine with gcc 4.2 on linux. (I'm using mingw
>>>> suite 5.1.3, i.e. gcc 3.4.5 on win32).
>>>> The problem seems to be that findDeclarationsInternal on line 107 in
>>>> kdevelop/languages/cpp/duchainbuilder/cppducontext.h has a
>>>> const-reference to a QList as parameter. The error (log attached)
>>>> indicates that foreach() can't handle such a const-ref list, while doing
>>>> the "standard" for( foo::const_iterator it = list.begin()... thing works
>>>> fine.
>>>> Does anybody know a "better" solution than to use an iterator-loop, or a
>>>> reason why this is. Is it maybe a gcc bug?
>>> Plz make a testcase for this so I can take a look
>> Seems like templates have to be involved as well. See the attached
>> main.cpp (just use qmake -project;qmake;make to build).
>>
>> As soon as you remove the template from MyTest it compiles fine. Else I
>> get that error.
>
> And here's the actual file :)
>
Thx, I can reproduce this error.
I wonder why this works on linux. A quick solution would be to remove
the reference. It's implicit shared so it doesn't matter if you pass a
reference or a copy here. And if this breaks BC, just use an internal copy:
void foo(const QList<MyClass>& l_)
{
const QList<MyClass> l(l_);
foreach(const MyClass& c, l)
...
}
Christian
btw: cc to thiago because he loves such things (at least I hope he does
;-) )
-------------- next part --------------
A non-text attachment was scrubbed...
Name: main.cpp
Type: text/x-c++src
Size: 828 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kde-windows/attachments/20070905/fb93a626/attachment.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 250 bytes
Desc: OpenPGP digital signature
Url : http://mail.kde.org/pipermail/kde-windows/attachments/20070905/fb93a626/attachment.pgp
More information about the Kde-windows
mailing list