> On March 4, 2014, 6:03 a.m., Michael Pyne wrote:
> > From what I can tell declaring *any* type A::B is a "qualified id" per the 
> > C++ spec and therefore changes the template lookup rules for 
> > argument-dependent lookup (which means the specialized function to be 
> > called must already be in scope with matching argument types). However I 
> > think clang might actually be wrong here as the lookup is happening at the 
> > template instantiation (i.e. the QCOMPARE of two UDSEntryLists, which are 
> > properly declared in kio as using an unqualified id). But then again I 
> > think ADL works based on which names are available in the dependent 
> > namespace (in this case KIO) at the time of the lookup, and operator==() is 
> > not part of KIO namespace until your patch, and so might not get included 
> > as an option during ADL (and the compiler has no other official way to tie 
> > "UDSEntry" back to "KIO::UDSEntry").
> > 
> > Well, there might be one: Does adding a "using KIO::UDSEntry" at the top of 
> > the file work instead? It doesn't actually matter, all the solutions are 
> > probably equally a hack...

so can I merge this then?


- Milian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/116542/#review51851
-----------------------------------------------------------


On March 2, 2014, 8:20 p.m., Milian Wolff wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/116542/
> -----------------------------------------------------------
> 
> (Updated March 2, 2014, 8:20 p.m.)
> 
> 
> Review request for KDE Frameworks.
> 
> 
> Repository: kio
> 
> 
> Description
> -------
> 
> Fix compilation with clang 3.4.
> 
> Note that I'm not too sure why this compiled with GCC
> and why clang rejects the global operator== definition and
> wants to have it in the KIO namespace. Someone with more C++
> ADL knowledge should chime in whether this is the right fix.
> 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from kio/tests/udsentrybenchmark.cpp:22:
> In file included from /usr/include/qt/QtTest/QTest:1:
> /usr/include/qt/QtTest/qtest.h:203:24:
>  error: call to function 'operator==' that is neither visible
>  in the template definition nor found by argument-dependent lookup
>         if (!(t1.at(i) == t2.at(i))) {
>                        ^
> kio/tests/udsentrybenchmark.cpp:286:22: note: in instantiation of
> function template specialization 'QTest::qCompare<KIO::UDSEntry>'
>  requested here
> 
>     do { if (!QTest::qCompare(entries, m_smallEntries, "entries",
>  "m_smallEntries", "kio/tests/udsentrybenchmark.cpp", 286)) return;}
>  while (0);
> 
> kio/tests/udsentrybenchmark.cpp:246:6: note: 'operator==' should be
> declared prior to the call site or in namespace 'KIO'
> 
> bool operator==(const KIO::UDSEntry &a, const KIO::UDSEntry &b)
>      ^
> 1 error generated.
> udsentrybenchmark.dir/build.make:54: recipe for target
>  'tests/CMakeFiles/udsentrybenchmark.dir/udsentrybenchmark.cpp.o'
>  failed
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> 
> Diffs
> -----
> 
>   tests/udsentrybenchmark.cpp 75fc758e583f7586c7b9a576d984b40912fa3ace 
> 
> Diff: https://git.reviewboard.kde.org/r/116542/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Milian Wolff
> 
>

_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to