Per-activity favorites (Final, again?)
ClosedPublic

Authored by ivan on Dec 24 2016, 1:00 AM.

Details

Summary

The favourites are based on KAStats (already released version) and kactivitymanagerd master (to be released with the next Plasma release). It allows favourites to be set to all activities, or the user can choose which activities to show a specific favourite application on.

This change covers applications, files and contacts, other favourites are still based on the old model (now named SimpleFavoritesModel).

Test Plan

Tested in Kicker, Dashboard and Kickoff the following:

Transitioning mechanism:

  • load default favorites for the blank user
  • load custom default favorites set in the plasmoidsetupscripts script for Kicker
  • transition old results - when transitioning, merge the favourites from all launchers. The ordering for each launcher is kept separate (newly added items due to the merge go to the end)

Favorite manipulation:

  • right-click add favorite to all activities
  • right-click remove favorite from all activities
  • right-click add favorite to specific activity (current)
  • right-click remove favorite from specific activity (current)
  • right-click add favorite to specific activity (not current)
  • right-click remove favorite from specific activity (not current)
  • right-click move from all to specific
  • right-click move from specific to all
  • right-click move from one activity to another
  • dnd reorder items in the model (up)
  • dnd reorder items in the model (down)
  • dnd add to favorites at a specific position

Other:

  • launch the application
  • ordering persists after restart
  • ordering from the previous is kept on the activity that has no ordering

Diff Detail

Lint
Lint Skipped
Unit
Unit Tests Skipped
There are a very large number of changes, so older changes are hidden. Show Older Changes
ivan retitled this revision from Per-activity favorites (Final?) to Per-activity favorites (Final, again?).Mar 12 2017, 1:57 PM
ivan edited the test plan for this revision. (Show Details)

requires kactivities-stats master

hein added a comment.Mar 27 2017, 10:05 AM

Could you document here how to reset all state so I can re-test migration on a clean base?

Did you do any work yet on migrating as a superset instead of just the first launcher roulette?

ivan added a comment.Mar 27 2017, 1:59 PM

Could you document here how to reset all state so I can re-test migration on a clean base?

  1. kill plasma and kamd
  2. rm .config/kactivitymanagerd-statsrc
  3. echo "delete from ResourceLink" | sqlite3 ~/.local/share/kactivitymanagerd/resources/database
  4. restart kamd and plasma

This should be it.

Did you do any work yet on migrating as a superset instead of just the first launcher roulette?

Unfortunately, I don't see a valid way to do this without accessing the related configuration files directly.

ivan added a comment.Mar 27 2017, 2:00 PM

p.s. I haven't tested the patch since posting - it is possible that some change in plasma broke the thing (like the problematic change that got reverted)

mart added a comment.Apr 3 2017, 10:41 AM

migration:
can this be accessed by desktop scripting somehow? then it becomes easy

also: this would be needed as well for custom favorites in distributions, that is a needed thing as well in order to be shipped

hein added a comment.Apr 3 2017, 10:47 AM

We discussed migration during today's Plasma weekly meeting, here's the log:

‎[19:23] ‎<‎Sho_‎>‎ anyhooow
‎[19:23] ‎<‎Sho_‎>‎ next there's two tricky things i wanted to inquire about because they need some team think
‎[19:24] ‎<‎Sho_‎>‎ the first is, ivan's been working on making kicker favorites kastats-based, which makes them per-activity, but also global and shared across all launcher instances
‎[19:24] ‎<‎Sho_‎>‎ the work has been progressing nicely and is getting closer to being merged
‎[19:24] ‎<‎Sho_‎>‎ but i'm concerned about the migration process
‎[19:25] ‎<‎Sho_‎>‎ right now the way migration works is that the first kicker-based launcher that kicks it off gets its favorites migrated, and then all others use the migrated favorites
‎[19:25] ‎<‎Sho_‎>‎ which means there's a russian roulette race picking which faves to migrate and all the others get lost
‎[19:25] ‎<‎Sho_‎>‎ i don't think that's good enough, but it's hard to code up something else
‎[19:25] ‎<‎Sho_‎>‎ what do we do?
‎[19:25] ‎<‎notmart‎>‎ so cases with multiple kickers with different favorites will be extremely rare, but the handful of users that have it will have it broken
‎[19:26] ‎<‎Sho_‎>‎ not that rare actually
‎[19:26] ‎<‎Sho_‎>‎ quite a few users use a regular kicker + dashboard with diff faves
‎[19:26] ‎<‎Sho_‎>‎ (in fact, i expect angry bug reports about forcing them to be shared soon)
‎[19:26] ‎<‎notmart‎>‎ another thing, would be on plasma size completely forget about whatever is stored, but have another process (a kconfigupdate?)
‎[19:26] ‎<‎notmart‎>‎ that runs first and scans the whole configuration file
‎[19:27] ‎<‎notmart‎>‎ then "merges" the favorites in one big lists and dumps it into kastats?
‎[19:27] ‎<‎Sho_‎>‎ that sounds pretty good
‎[19:27] ‎<‎Sho_‎>‎ we'd still lose sorting, but at least get the superset
‎[19:27] ‎<‎d_ed‎>‎ why make it another process?
‎[19:27] ‎<‎d_ed‎>‎ plasma has it's own scripted updates
‎[19:27] ‎<‎Sho_‎>‎ it has? :D
‎[19:27] ‎<‎notmart‎>‎ ah, as a scripted updated
‎[19:27] ‎<‎notmart‎>‎ hm, yeah
‎[19:28] ‎<‎Sho_‎>‎ (fwiw, i'll dump this chat log into the phab ticket for the thing so ivan is in the loop later)
‎[19:28] ‎<‎Sho_‎>‎ i think we at the very least need the superset migration, data loss is imho not an option
‎[19:28] ‎<‎d_ed‎>‎ ShellCorona::processUpdateScripts()
‎[19:28] ‎<‎notmart‎>‎ a scripted updated may also be executed at the proper moment
‎[19:29] ‎<‎notmart‎>‎ tough, is there any desktop scripting way to populate that?
‎[19:29] ‎<‎d_ed‎>‎ to populate the activities DB?
‎[19:29] ‎<‎notmart‎>‎ (that -> favorites in kastats)
‎[19:29] ‎<‎Sho_‎>‎ i suddenly felt a dejavu
‎[19:29] ‎<‎Sho_‎>‎ i think i remember telling ivan we need a kastats scripting api to populate global favs in plasma scripting
‎[19:29] ‎<‎Sho_‎>‎ also for isv default favs ...
‎[19:30] ‎<‎Sho_‎>‎ because i don't know how he intends to do distro default favs
‎[19:30] ‎* ‎Sho_‎‎ is getting concerned we can really do this for 5.10 still, even as advanced as the work is, and sponsor pressure to get it in
‎[19:31] ‎<‎Sho_‎>‎ and tbh, as i said as far as 1-2 years ago, i'm still not even sure forcing all launchers to have the same favs is good and serves all users correctly
‎[19:31] ‎<‎notmart‎>‎ are there places other people can work on?
‎[19:31] ‎<‎Sho_‎>‎ sure
‎[19:31] ‎<‎Sho_‎>‎ it's in a branch, so if you e.g. want to take a stab at the migration stuff, i'm sure ivan would appreciate it (and me)
‎[19:31] ‎<‎Sho_‎>‎ the phab ticket is also up to date with all our testing correspondence and debuging/testing instructions
‎[19:31] ‎<‎Sho_‎>‎ and even a testcase list
‎[19:32] ‎<‎notmart‎>‎ again, would need api from desktop scripting tough
‎[19:32] ‎<‎notmart‎>‎ but yeah, i can look into that
‎[19:33] ‎<‎Sho_‎>‎ thanks
‎[19:33] ‎<‎Sho_‎>‎ let's try to stay on that ball throughout this week
[...]
[19:36] ‎<‎d_ed‎>‎ Sho_: got a branch name?
‎[19:36] ‎<‎d_ed‎>‎ and/or phab link
‎[19:38] ‎<‎notmart‎>‎ how is the logic? after how many windows/what size should it get a scrollbar?
‎[19:38] ‎<‎Sho_‎>‎ d_ed: for the dialog or the faves?
‎[19:38] ‎<‎llucas‎>‎ What about backporting a fix for system settings crash with qt 5.7.1?
‎[19:38] ‎<‎Sho_‎>‎ notmart: the dialog is limited to like one third of screen height or something
‎[19:39] ‎<‎notmart‎>‎ in master, getting the scrollbar correctly
‎[19:39] ‎<‎Sho_‎>‎ d_ed: ivan/new-favourites-per-activity in plasma-desktop + https://phabricator.kde.org/D3805
‎[19:39] ‎<‎sKreamer‎>‎ Diff 3805 "Per-activity favorites (Final, again?)" [Needs Review] https://phabricator.kde.org/D3805

hein added a comment.Apr 5 2017, 12:33 PM

echo "delete from ResourceLink" | sqlite3 ~/.local/share/kactivitymanagerd/resources/database

This gets me "incomplete SQL", please update~

hein added a comment.Apr 5 2017, 1:11 PM

In my latest round of testing the behavior is much better and I can't run into issues as easily anymore.

I'm still a bit distrustful of the way ordering changes work though. One time during testing, I drag-reordered a favorite on all activities to a new position, and when I switched activities it had moved position on the other activity as well. Later the same favorite suddenly moved to the end of the list (or maybe the original position, not sure) on both activities. Other times, ordering changes of favorites shared by activities aren't synched across activities and fully independent.

Personally I think the simplest behavior is to keep the ordering separate for every activity and make no attempt to sync the order. When a new activity is created, the order should probably be copied from the currently active activity.

mart added a comment.Apr 5 2017, 2:09 PM
In D3805#99934, @hein wrote:

Personally I think the simplest behavior is to keep the ordering separate for every activity and make no attempt to sync the order. When a new activity is created, the order should probably be copied from the currently active activity.

+1, ordering sounds more like a view thing to me

Zren added a subscriber: Zren.Jun 6 2017, 8:24 AM
ivan updated this revision to Diff 15771.Jun 23 2017, 7:28 AM
ivan updated this revision to Diff 15872.EditedJun 26 2017, 12:30 PM

I realized I can be quite thick.

After I created a new level of indirection (I know how Eike loves Akonadi-style layers and layers of models :) ) so that each applet can have its own favourite ordering (as requested), I realized I reimplemented most of the logic of KAStats::ResultModel inside of Kicker, but with the QSortFilterProxyModel which did not work correctly (Kicker does not like whole model updates on drag and drop).

This is a new and beautiful approach that relies on the ordering implemented in the KAStats::ResultModel - just with each applet registering as a separate client.

I need to test this properly, and I'd like for everyone to join in with the testing.

Everything is much cleaner now - both favourites merging and reordering.

ivan edited the summary of this revision. (Show Details)Jun 26 2017, 12:32 PM
ivan edited the test plan for this revision. (Show Details)Jun 26 2017, 12:45 PM
mart added a comment.Jun 26 2017, 1:00 PM

api-wise i like the concept of initForClient, +1

ivan added a comment.Jul 2 2017, 11:44 AM

I've just added another test - having a custom kicker plasmoidsetupscript and putting kicker to be the default launcher on a blank user loads the favourites from said plasmoidsetupscript.

ivan edited the test plan for this revision. (Show Details)Jul 2 2017, 11:46 AM
hein added a comment.Jul 3 2017, 7:12 AM

I'm a little confused by the last comment - the branch in the repo hasn't been updated in four months, so the new testing location seems to be the diff again, yet there's a "I added a test" comment with no diff change ... :)

Anyways, I'll review the diff here.

ivan added a comment.Jul 3 2017, 7:16 AM

True, I haven't updated the branch - had more than a few sub-branches since the last update.

The diff here is the proposed solution for all my problems ;)

The last comment was just that I've added the test to the review itself (the "Test Plan" part).

ivan edited the test plan for this revision. (Show Details)Jul 3 2017, 7:18 AM
hein added a comment.Jul 3 2017, 8:29 AM

Reproducable crash:

#0 0x00007fff28407f06 in KAStatsFavoritesModel::Private::removeOldCachedEntries() const (this=0x3266e40)

at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/kastatsfavoritesmodel.cpp:130

#1 0x00007fff284063e5 in KAStatsFavoritesModel::isFavorite(QString const&) const (this=this@entry=0x317fe70, id=...)

at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/kastatsfavoritesmodel.cpp:310

#2 0x00007fff28421299 in InvalidAppsFilterProxy::filterAcceptsRow(int, QModelIndex const&) const (this=0x33c10b0, source_row=<optimized out>, source_parent=...)

at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/recentusagemodel.cpp:94

#3 0x00007ffff18b5b10 in QSortFilterProxyModelPrivate::create_mapping(QModelIndex const&) const (this=this@entry=0x33c60a0, source_parent=...)

at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:343

#4 0x00007ffff18b74b3 in QSortFilterProxyModel::rowCount(QModelIndex const&) const (this=this@entry=0x33c10b0, parent=...)

at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:1878

#5 0x00007fff28409b4b in ForwardingModel::rowCount(QModelIndex const&) const (this=this@entry=0x33c54b0, parent=...)

at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/forwardingmodel.cpp:116

#6 0x00007fff28409b4b in ForwardingModel::rowCount(QModelIndex const&) const (this=<optimized out>, parent=...)

at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/forwardingmodel.cpp:116

#7 0x00007ffff4ca6948 in QQmlAdaptorModel::count() const (this=0x34c7068)

at /home/eike/devel/src/qt5-build/qtbase/include/QtQml/5.9.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/util/qqmladaptormodel_p.h:122

#8 0x00007ffff4ca6948 in QQmlDelegateModel::componentComplete() (this=0x34c6290) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/types/qqmldelegatemodel.cpp:338
#9 0x00007ffff5816472 in QQuickItemView::componentComplete() (this=0x34c57a0) at /home/eike/devel/src/qt5/qtdeclarative/src/quick/items/qquickitemview.cpp:1509
#10 0x00007ffff4c758bd in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) (this=0x33f21c0, interrupt=...)

at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1236

#11 0x00007ffff4bf7d44 in QQmlComponentPrivate::complete(QQmlEnginePrivate*, QQmlComponentPrivate::ConstructionState*) (enginePriv=0x843890, state=0x33f2170)

at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:900

#12 0x00007ffff4bf7e07 in QQmlComponentPrivate::completeCreate() (this=0x33f20d0) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:936
#13 0x00007ffff4c925a1 in QV4::QtObject::method_createQmlObject(QV4::BuiltinFunction const*, QV4::Scope&, QV4::CallData*) (scope=..., callData=<optimized out>)

at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/v8/qqmlbuiltinfunctions.cpp:1167

#14 0x00007ffff4bd5fda in QV4::Object::call(QV4::Scope&, QV4::CallData*) const (d=0x7fffcf0006f0, scope=..., this=<optimized out>)

at /home/eike/devel/src/qt5/qtdeclarative/src/qml/jsruntime/qv4object_p.h:372

#15 0x00007ffff4bd5fda in QV4::Runtime::method_callProperty(QV4::ExecutionEngine*, int, QV4::CallData*) (engine=0x843da0, nameIndex=<optimized out>, callData=0x7fffcf0006f0)

at /home/eike/devel/src/qt5/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1102

Do I need to clean up anything?

hein added inline comments.Jul 3 2017, 8:36 AM
applets/kicker/package/contents/config/main.xml
48

Pedantic: Broken grammar

applets/kicker/package/contents/ui/SideBarItem.qml
59 ↗(On Diff #15872)

Not a fan of debug stuff that's not really understandable without context ... lets take the console.log() calls out when finalizing the patch.

hein added a comment.Jul 3 2017, 8:42 AM

Here's what I tried to do today:

  1. Set up Kicker and Appdash with different favorites
  2. Patch, install
  3. Log out, log in

Then I got the crash above.

  1. Switch back to master, log out and back in, still have the two widgets with different faves
  2. Log out
  3. Build patch again
  4. Delete kactivitymanager-statcrc and run the delete from ResourceLink SQL thingie
  5. Log back in

No crash this time. But: Neither Kicker nor Appdash have any favorites, nothing was migrated.

hein added a comment.Jul 3 2017, 8:45 AM

Adding new favorites works. However, starting with the blank favorites I did the following:

  1. Add a favorite on all activities
  2. Add a favorite specific to the current activity
  3. Add another favorite on all activities

I've noticed that for both #2 and #3, the new favorite was inserted at the start of the favorites list. The unpatched behavior is to append rather than prepend new favorites.

hein added a comment.Jul 4 2017, 6:58 AM

Another crash, this time a while after running with migrated favourites:

Thread 1 (Thread 0x7f8ef082cdc0 (LWP 8048)):
[KCrash Handler]
#6 0x00007f8e44c0dcf8 in KAStatsFavoritesModel::Private::removeOldCachedEntries() const (this=0x40fc41c800) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/kastatsfavoritesmodel.cpp:122
#7 0x00007f8e44c0c3e5 in KAStatsFavoritesModel::isFavorite(QString const&) const (this=this@entry=0x4f255b0, id=...) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/kastatsfavoritesmodel.cpp:310
#8 0x00007f8e44c27299 in InvalidAppsFilterProxy::filterAcceptsRow(int, QModelIndex const&) const (this=0x7f5de90, source_row=<optimized out>, source_parent=...) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/recentusagemodel.cpp:94
#9 0x00007f8efc2dab10 in QSortFilterProxyModelPrivate::create_mapping(QModelIndex const&) const (this=this@entry=0xb661410, source_parent=...) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:343
#10 0x00007f8efc2dc4b3 in QSortFilterProxyModel::rowCount(QModelIndex const&) const (this=<optimized out>, parent=...) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:1878
#11 0x00007f8efc2daad5 in QSortFilterProxyModelPrivate::create_mapping(QModelIndex const&) const (this=this@entry=0x6f620f0, source_parent=...) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:340
#12 0x00007f8efc2db9ea in QSortFilterProxyModelPrivate::update_source_sort_column() (this=this@entry=0x6f620f0) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:470
#13 0x00007f8efc2dc130 in QSortFilterProxyModelPrivate::_q_sourceLayoutChanged(QList<QPersistentModelIndex> const&, QAbstractItemModel::LayoutChangeHint) (this=0x6f620f0, sourceParents=..., hint=<optimized out>) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:1374
#14 0x00007f8efc2e03f3 in QSortFilterProxyModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/moc_qsortfilterproxymodel.cpp:209
#15 0x00007f8efc3422ba in QMetaObject::activate(QObject*, int, int, void
) (sender=0x7f5de90, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7ffd378f9b20) at /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.cpp:3766
#16 0x00007f8efc3429c7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void) (sender=<optimized out>, m=m@entry=0x7f8efc5d25e0 <QAbstractItemModel::staticMetaObject>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7ffd378f9b20) at /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.cpp:3628
#17 0x00007f8efc2b4436 in QAbstractItemModel::layoutChanged(QList<QPersistentModelIndex> const&, QAbstractItemModel::LayoutChangeHint) (this=<optimized out>, _t1=..., _t2=<optimized out>) at .moc/moc_qabstractitemmodel.cpp:582
#18 0x00007f8efc2dbfae in QSortFilterProxyModel::invalidate() () at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:2518
#19 0x00007f8e44c262ec in InvalidAppsFilterProxy::connectNewFavoritesModel() (this=0x7f5de90) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/recentusagemodel.cpp:80
#20 0x00007f8efc3423bc in QtPrivate::QSlotObjectBase::call(QObject*, void
) (a=0x7ffd378f9c50, r=0x7f5de90, this=0xb730b00) at ../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject_impl.h:101
#21 0x00007f8efc3423bc in QMetaObject::activate(QObject*, int, int, void) (sender=0xb722b10, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.cpp:3749
#22 0x00007f8e44c3189e in AbstractModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void
) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=0x7ffd378f9d60) at /home/eike/devel/build/kde/workspace/plasma-desktop/applets/kicker/kickerplugin_autogen/7RBZBFH7CH/moc_abstractmodel.cpp:224
#23 0x00007f8eff690f1d in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., value=<optimized out>, target=<optimized out>, this=<optimized out>) at /home/eike/devel/src/qt5-build/qtbase/include/QtQml/5.9.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/qml/qqmlpropertycache_p.h:320
#24 0x00007f8eff690f1d in QObjectPointerBinding::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) (this=0x5e357d0, result=..., isUndefined=<optimized out>, flags=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlbinding.cpp:585
#25 0x00007f8eff692016 in QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (this=0x5e357d0, watcher=..., flags=..., scope=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlbinding.cpp:210
#26 0x00007f8eff68ef73 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (this=0x5e357d0, flags=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlbinding.cpp:167
#27 0x00007f8eff69a7ab in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) (this=0x5ab5490, interrupt=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1222
#28 0x00007f8eff621702 in QQmlIncubatorPrivate::incubate(QQmlInstantiationInterrupt&) (this=0x4e90da0, i=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlincubator.cpp:347
#29 0x00007f8eff621cac in QQmlEnginePrivate::incubate(QQmlIncubator&, QQmlContextData*) (this=this@entry=0x11de930, i=..., forContext=forContext@entry=0xb66ff50) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlincubator.cpp:92
#30 0x00007f8eff61ef64 in QQmlComponent::create(QQmlIncubator&, QQmlContext*, QQmlContext*) (this=<optimized out>, incubator=..., context=<optimized out>, forContext=forContext@entry=0x0) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1040
#31 0x00007f8f001f84d4 in QQuickLoaderPrivate::_q_sourceLoaded() (this=this@entry=0x4fd7270) at /home/eike/devel/src/qt5/qtdeclarative/src/quick/items/qquickloader.cpp:722
#32 0x00007f8f001f85e8 in QQuickLoaderPrivate::load() (this=0x4fd7270) at /home/eike/devel/src/qt5/qtdeclarative/src/quick/items/qquickloader.cpp:604
#33 0x00007f8f001f9080 in QQuickLoader::qt_static_metacall(QObject*, QMetaObject::Call, int, void) (_o=_o@entry=0x4fd71c0, _c=_c@entry=QMetaObject::WriteProperty, _id=_id@entry=1, _a=_a@entry=0x7ffd378fa2f0) at .moc/moc_qquickloader_p.cpp:259
#34 0x00007f8f001f9133 in QQuickLoader::qt_metacall(QMetaObject::Call, int, void
) (this=0x4fd71c0, _c=QMetaObject::WriteProperty, _id=1, _a=0x7ffd378fa2f0) at .moc/moc_qquickloader_p.cpp:311
#35 0x00007f8eff605a1a in QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) (this=0x4fd7420, o=<optimized out>, c=QMetaObject::WriteProperty, _id=44, a=0x7ffd378fa2f0) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlvmemetaobject.cpp:976
#36 0x00007f8eff61ba00 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const (this=<optimized out>, target=<optimized out>, value=<optimized out>, flags=...) at /home/eike/devel/src/qt5-build/qtbase/include/QtQml/5.9.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/qml/qqmlpropertycache_p.h:324
#37 0x00007f8eff61a0e2 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyData::WriteFlag>) (object=object@entry=0x4fd71c0, property=..., value=..., context=<optimized out>, flags=..., flags@entry=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlproperty.cpp:1268
#38 0x00007f8eff5e4d69 in QV4::QObjectWrapper::setProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*, QV4::Value const&) (engine=0x11deb90, object=<optimized out>, property=0x7f8ed00510a8, value=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:475
#39 0x00007f8eff5f6a50 in QV4::Runtime::method_setQmlQObjectProperty(QV4::ExecutionEngine*, QV4::Value const&, int, QV4::Value const&) (engine=0x11deb90, object=..., propertyIndex=<optimized out>, value=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1562
#40 0x00007f8e462e0f28 in ()
#41 0x00007ffd378fa510 in ()
#42 0x0003800000000000 in ()
#43 0x00007f8ee0005820 in ()
#44 0x00000000019e6a30 in ()
#45 0x0000000000000000 in ()

hein added a comment.Jul 4 2017, 7:18 AM

Another full test write up.

Ivan informed in an email that for a clean slate test, in addition to the SQL deletion and deleting kactivitymanager-statsrc, also favoritesPortedToKAstats=true needs to be removed from all places in appletsrc, so I did another test run.

Test setup:

  1. Two activities are set up
  2. build git master
  3. log out
  4. from a tty, make a clean slate (SQL, delete appletsrc, delete statsrc)
  5. log in, add an Appdash widget in addition to the default Kickoff
  6. in both Kickoff and Appdash, add two more favorites in addition to the default set, making sure it's different extra favorites in each
  7. in Kickoff, drag the first default favorite (Firefox for me) inbetween the two manually added faves
  8. in Appdash, do the same with the second default favorite (System Settings)
  9. log out
  10. build the patch, log in

What I expected:

  • All widgets having somehow the superset of the favorites of all widgets pre-migration so no favorites are los
  • All activities being initialized to the same migration result
  • Favorite order kinda-sorta somehow reflecting the pre-migration state of things

What I actually got:

  • Kickoff had the same favorites as pre-migration, none of the Appdash ones, and in the pre-migration order
  • Appdash had thesame favorites as pre-migration, but the manually repositioned System Settings favorite somehow moved one position up in front of the two manually added extra faves
  • In the second activity, Appdash has no favorites at all
  • Kickoff in the second activity seems to have the same ones as in the first activity, i.e. also missing any Appdash ones (but I forgot to check this in the first login, I think I logged out/in again since ... but I did no more changes, so I'm guessing no reason it would have changed with more logout/login cycles)

Additionally, if I now add new favorite to all activities in Appdash in the first activity, it's inserted in the middle of the list before System Settings and the two previously pre-migration manually-added extra favorites. In Kickoff, it seems to append as expected.

To conclude, the migration results seem broken and random, with different results by widget and activity, and adding favorites is similarly weird.

hein added a comment.Jul 4 2017, 7:27 AM

I get the crash also when removing and re-adding Appdash:

Thread 1 (Thread 0x7f6573ed8dc0 (LWP 3060)):
[KCrash Handler]
#6 0x00000000034d3d70 in ()
#7 0x00007f64c813bb0c in KAStatsFavoritesModel::Private::data(QModelIndex const&, int) const (role=266, index=..., this=0x2e1a8c0) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/kastatsfavoritesmodel.cpp:159
#8 0x00007f64c813bb0c in KAStatsFavoritesModel::Private::removeOldCachedEntries() const (this=0x2e1a8c0) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/kastatsfavoritesmodel.cpp:123
#9 0x00007f64c81393e5 in KAStatsFavoritesModel::isFavorite(QString const&) const (this=this@entry=0x444d0d0, id=...) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/kastatsfavoritesmodel.cpp:310
#10 0x00007f64c8154299 in InvalidAppsFilterProxy::filterAcceptsRow(int, QModelIndex const&) const (this=0x46237c0, source_row=<optimized out>, source_parent=...) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/recentusagemodel.cpp:94
#11 0x00007f657f986b10 in QSortFilterProxyModelPrivate::create_mapping(QModelIndex const&) const (this=this@entry=0x4838690, source_parent=...) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:343
#12 0x00007f657f9884b3 in QSortFilterProxyModel::rowCount(QModelIndex const&) const (this=this@entry=0x46237c0, parent=...) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:1878
#13 0x00007f64c813cb4b in ForwardingModel::rowCount(QModelIndex const&) const (this=this@entry=0x44d8db0, parent=...) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/forwardingmodel.cpp:116
#14 0x00007f64c813cb4b in ForwardingModel::rowCount(QModelIndex const&) const (this=<optimized out>, parent=...) at /home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/forwardingmodel.cpp:116
#15 0x00007f6582d77948 in QQmlAdaptorModel::count() const (this=0x35c4338) at /home/eike/devel/src/qt5-build/qtbase/include/QtQml/5.9.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/util/qqmladaptormodel_p.h:122
#16 0x00007f6582d77948 in QQmlDelegateModel::componentComplete() (this=0x34b7b70) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/types/qqmldelegatemodel.cpp:338
#17 0x00007f65838e7472 in QQuickItemView::componentComplete() (this=0x34b78c0) at /home/eike/devel/src/qt5/qtdeclarative/src/quick/items/qquickitemview.cpp:1509

hein added a comment.Jul 4 2017, 7:29 AM

After the crash, the re-added Appdash seems to have the same favorites as the old Appdash instance had, which is still not the superset of the pre-migration favorites or anything, nor the same favorites as the Kickoff.

mart added a comment.Jul 5 2017, 1:41 PM

I tried the patch, and i'm getting a crash as well, tough a bit different:
#0 0x00007fff39b74cf5 in KAStatsFavoritesModel::Private::removeOldCachedEntries() const () from /opt/kde5/qml/org/kde/plasma/private/kicker/libkickerplugin.so
#1 0x00007fff39b7377a in KAStatsFavoritesModel::isFavorite(QString const&) const () from /opt/kde5/qml/org/kde/plasma/private/kicker/libkickerplugin.so
#2 0x00007fff39b96814 in InvalidAppsFilterProxy::filterAcceptsRow(int, QModelIndex const&) const ()

from /opt/kde5/qml/org/kde/plasma/private/kicker/libkickerplugin.so

#3 0x00007ffff0e2892a in QSortFilterProxyModelPrivate::create_mapping (this=0x1188af0, source_parent=...) at itemmodels/qsortfilterproxymodel.cpp:343
#4 0x00007ffff0e2e7e4 in QSortFilterProxyModel::rowCount (this=0x1188ac0, parent=...) at itemmodels/qsortfilterproxymodel.cpp:1878
#5 0x00007fff39b784f1 in ForwardingModel::rowCount(QModelIndex const&) const () from /opt/kde5/qml/org/kde/plasma/private/kicker/libkickerplugin.so
#6 0x00007fff39b5bbf3 in AbstractModel::count() const () from /opt/kde5/qml/org/kde/plasma/private/kicker/libkickerplugin.so
#7 0x00007fff39b88b87 in GroupEntry::hasChildren() const () from /opt/kde5/qml/org/kde/plasma/private/kicker/libkickerplugin.so
#8 0x00007fff39b64a65 in AppsModel::data(QModelIndex const&, int) const () from /opt/kde5/qml/org/kde/plasma/private/kicker/libkickerplugin.so
#9 0x00007fff39b89130 in RootModel::data(QModelIndex const&, int) const () from /opt/kde5/qml/org/kde/plasma/private/kicker/libkickerplugin.so
#10 0x00007ffff452c63b in QModelIndex::data (this=0x7fffffff5ff0, arole=263)

at /home/diau/git/qt5/qtbase/include/QtCore/../../src/corelib/itemmodels/qabstractitemmodel.h:432

#11 0x00007ffff452f08e in QQmlDMAbstractItemModelData::value (this=0x2b751e0, role=263) at util/qqmladaptormodel.cpp:420
#12 0x00007ffff4529d3a in QQmlDMCachedModelData::metaCall (this=0x2b751e0, call=QMetaObject::ReadProperty, id=12, arguments=0x7fffffff6150)

at util/qqmladaptormodel.cpp:292

#13 0x00007ffff452ee7a in VDMModelDelegateDataType::metaCall (this=0x2b6e7f0, object=0x2b751e0, call=QMetaObject::ReadProperty, id=12, arguments=0x7fffffff6150)

at util/qqmladaptormodel.cpp:249

#14 0x00007ffff0e6dfef in QMetaObject::metacall (object=0x2b751e0, cl=QMetaObject::ReadProperty, idx=12, argv=0x7fffffff6150) at kernel/qmetaobject.cpp:299
#15 0x00007ffff4744682 in QQmlPropertyData::readPropertyWithArgs (this=0x2b77f68, target=0x2b751e0, args=0x7fffffff6150)

at ../../include/QtQml/5.8.1/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h:312

#16 0x00007ffff47445c5 in QQmlPropertyData::readProperty (this=0x2b77f68, target=0x2b751e0, property=0x7fffffff61d0)

at ../../include/QtQml/5.8.1/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h:302

#17 0x00007ffff473b2eb in loadProperty (v4=0x804360, object=0x2b751e0, property=...) at jsruntime/qv4qobjectwrapper.cpp:166
#18 0x00007ffff473c003 in QV4::QObjectWrapper::getProperty (engine=0x804360, object=0x2b751e0, property=0x2b77f68, captureRequired=true)

at jsruntime/qv4qobjectwrapper.cpp:316

#19 0x00007ffff473bc6e in QV4::QObjectWrapper::getQmlProperty (this=0x7fffd9b9d638, qmlContext=0x2be2a80, name=0x7fffd9b9d630,

revisionMode=QV4::QObjectWrapper::IgnoreRevision, hasProperty=0x0, includeImports=true) at jsruntime/qv4qobjectwrapper.cpp:279

#20 0x00007ffff473e046 in QV4::QObjectWrapper::get (m=0x7fffd9b9d638, name=0x7fffd9b9d630, hasProperty=0x0) at jsruntime/qv4qobjectwrapper.cpp:625
#21 0x00007ffff46107b3 in QV4::Object::get (this=0x7fffd9b9d638, name=0x7fffd9b9d630, hasProperty=0x0)

at ../../include/QtQml/5.8.1/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h:326
ivan added a comment.Jul 15 2017, 11:23 AM

I've finally managed to reproduce the crash (clean install, clean build, clean everything). I still do not see what is the cause of it...

ivan updated this revision to Diff 16733.Jul 15 2017, 11:48 AM

This was a referse-murphy - the second I posted that I can not find the reason behind the crash, I managed. Can you try the current revision whether it crashes or not?

hein added a comment.Jul 16 2017, 8:47 AM

I'm on vacation Mon-Wed and then travelling. I don't know yet when I can test again. I'm currently wary of touching my system too much because I need it to stay reliable as a demo machine for my presentation. If someone else can test for the crash using the steps above, please do.

hein added a comment.Aug 5 2017, 12:42 AM

No longer crashing!

Remaining concerns after repeating tests:

  • The result of the migration is now the superset of all faves, but sorting is a bit weird (maybe this is the best possible?)
  • However it only ends up on my first activity, the other activity was migrated to zero faves - put the migration result on all activities?
  • No support in Kickoff it seems
  • The task description mentions only apps and contacts are handled, but Kicker and Dash suppot document faves as well
hein added a comment.Aug 5 2017, 12:44 AM

I was on activity 2 and adding some faves on dash from the Recent apps section, and the second fav I added had the same icon as the first fav I added, even though it was for a different app. Switching to the first activity and back to 2 fixed the icon. Could be a Qt Quick issue ... or could be the model implementing data roles wrong somehow.

hein added a comment.Aug 5 2017, 12:45 AM

I'll now run with this revision of the patch for a while, but please look into the above / reply! :)

hein added a comment.Aug 8 2017, 6:29 PM

UI design note: Even though I'm nerdy enough to understand the checkbox stuff, sometimes I want to remove a favorite and spend two seconds of confusion looking for a Remove action ...

ivan added a comment.Aug 16 2017, 8:50 AM

The result of the migration is now the superset of all faves, but sorting is a bit weird (maybe this is the best possible?)

Not sure we can do anything about that unfortunately.

However it only ends up on my first activity, the other activity was migrated to zero faves - put the migration result on all activities?

I'll see what is going on there. The initial patch was to put the result on all activities.

No support in Kickoff it seems

No. Some time ago you mentioned you'd like Kickoff to remain as is.

Dash suppot document faves as well

Had no idea about this. Will test.

UI design note: Even though I'm nerdy enough to understand the checkbox stuff,

The check-boxes are there to mimic the activities menu in KWin. I'm not fond of them either, but it is either that, or change the checkboxes to something else everywhere - we need to be consistent.

hein added a comment.Aug 16 2017, 9:28 AM

Hmm I think the Kickoff thing might have been a misunderstanding, or maybe I was full of crap then? I can't think of why I'd request that ... not having this in our default menu would sort of mean most users never get to use it :)

ivan updated this revision to Diff 18220.Aug 16 2017, 9:36 AM
ivan edited the summary of this revision. (Show Details)
ivan added a comment.Aug 16 2017, 9:38 AM

Hmm I think the Kickoff thing might have been a misunderstanding, or maybe I was full of crap then?

Maybe both :P :D

We can schedule Kickoff for the +1 release - Kicker/Dash would be a nice test for the whole thing.

ivan added a comment.Aug 16 2017, 9:39 AM

p.s. Transitioned items go to all activities and the documents are supported in the current patch.

mart added a comment.Aug 28 2017, 3:29 PM

a periodic check on this.. ping?
can be merged now?

hein added a comment.Aug 28 2017, 3:50 PM

Possibly, will test over night (I missed the update).

hein added a comment.Aug 28 2017, 4:05 PM

We can schedule Kickoff for the +1 release - Kicker/Dash would be a nice test for the whole thing.

Sounds reasonable, but are you sure you can handle migration then, too? E.g. on a patch with this system migration would have already run for two applets and then one release later fave changes from not-transitoned Kickoff instances would need to be migrated in, can you make that work?

hein added a comment.Aug 29 2017, 1:50 AM

I've tested now and things look good, the multi-activity-migration thing is solved. Here's my remaining concerns:

  • No Kickoff support: Personally I think we should actually migrate all applets at once. One of the main motivations for this is so users no longer unexpectedly lose favorites when swiching between applets using Alternatives. If Kickoff (the default applet) doesn't use it, that is not yet actually achieved. And since the missing support was based on a misunderstanding ...
  • I really dislike the submenu with the checkboxes, in particular for removing a favorite. It's just very complicated and hard to use, you need to uncheck a checkbox to remove. I know everybody is sick and tired of this merge taking so long, but I am really, really hesitant of shipping that to users. It sort-of is okay for windows because it's more like tagging there and remove is actually done by closing the window, but here it's incredibly awkward.
  • The initial sorting of the migrated superset seems random. How is it done?
  • In D7561 we adjusted libtaskmanager to use applications:<kservice menuId()> as URL whenever we're dealing with a KService that returns a non-empty menuId() instead of KService::entryPath(). The approach taken is to accept both as input (rc file) but resolve the latter to applications: when possible and then use that for the model data roles. As adding a new launcher is done from the data roles, newly-added launchers are stored as applications:. That makes it a non-absolute path, which fixes cases like (a) apps (or the menu editor) making a copy of a .desktop file in $HOME to add/update data there and the Task Manager not noticing or (b) having a launcher point at a .desktop file in $HOME that disappears later (e.g. menu editor reset). Kicker still uses entryPath so it suffers from both problems. I'd like this adjustment done here as well, using more or less the same approach, and I think it would make sense as part of this patch maybe because I'm not sure how it will affect your migration and so we don't add outdated stuff to the KAStats db in the first place that would need to be rewritten later otherwise?
ivan added a comment.Aug 30 2017, 6:13 AM

No Kickoff support: Personally I think we should actually migrate all applets at once.

Do you want it in this patch, or to push this one and add the kickoff one asap?

I really dislike the submenu with the checkboxes, in particular for removing a favorite.

In order for me not to do any more guesswork, or to have any misunderstandings - what do you want this this submenu to have exactly.

The initial sorting of the migrated superset seems random. How is it done?

I'll see to keep the ordering

In D7561 we adjusted libtaskmanager to use applications:<kservice menuId()> as URL whenever we're dealing with

Will see about this

hein added a comment.Aug 30 2017, 6:18 AM

Do you want it in this patch, or to push this one and add the kickoff one asap?

Let's do it in this one.

In order for me not to do any more guesswork, or to have any misunderstandings - what do you want this this submenu to have exactly.

For the single-activity case: Just Add/Remove actions as now.

Multi-activity case: I think there should always be simple actions for "Add to this activity" and "Remove from this activity" availble, and perhaps also a pair for "all activities", and the per-activity checkboxes should be a seperate section or one more level.

ivan added a comment.Aug 30 2017, 7:36 AM

Like this?

ivan added a comment.EditedAug 30 2017, 7:56 AM

With icons (designed after the Dolphin plugin for activity linking - to at least be consistent with something :) )

hein added a comment.Aug 30 2017, 8:18 AM

No, thatfeels even more convoluted :(. Let's keep the current patch UI and focus on merge, we'll talk to the VDG about the UI after.

ivan added a comment.Aug 31 2017, 5:19 PM

The initial sorting of the migrated superset seems random. How is it done?

I haven't managed to make this work. The problem is that the favourites are added asynchronously, and setting the ordering for a bunch of them at once fails because the items do not exist.

In D7561 we adjusted libtaskmanager to use applications:<kservice menuId()> as URL whenever we're dealing with

The favorites mechanism adds whatever the FavoriteIdRule returns. Can you make the the apps model use the menuId, so that I can rebase this patch against that?

hein added a comment.Aug 31 2017, 5:26 PM

I haven't managed to make this work. The problem is that the favourites are added asynchronously, and setting the ordering for a bunch of them at once fails because the items do not exist.

Hmm ... are they added one-by-one? Maybe we need an atomic API to insert multiple at once and then they can be kept together as set in sorting?

The favorites mechanism adds whatever the FavoriteIdRule returns. Can you make the the apps model use the menuId, so that I can rebase this patch against that?

Will try before weekend. We just have to be a bit careful that we can still handle existing URL-based config when matching up. Shouldn't be a problem, a la the approach taken in libtm.

ivan added a comment.Aug 31 2017, 5:35 PM

Regarding Kickoff - it looks like there are some problems in its model handling:

This does not happen with Kicker, Dash nor the KAStats test application.

The empty spaces seem to be empty spaces, not items without title and icon.

ivan added a comment.Aug 31 2017, 5:37 PM

This might be a hint:

contents/ui/KickoffItem.qml:191:9: QML Text: Binding loop detected for property "y"
hein added a comment.Aug 31 2017, 8:25 PM

Good news: There's actually nothing to do on the favorite ids, Kicker already uses KService::storageId as favorite id, which will be the menuId when it's available.

Due to Kai giving me https://bugs.kde.org/show_bug.cgi?id=351553 I thought this was an issue, but this is actually about the old Kickoff backend from before it was ported to Kicker.

I didn't write the Kickoff UI code btw so I don't know about the empty places issue, but I can try to have a look,

ivan updated this revision to Diff 19034.Sep 1 2017, 5:39 AM

Good news: There's actually nothing to do on the favorite ids, Kicker already uses
KService::storageId as favorite id, which will be the menuId when it's available.

Great :)

I didn't write the Kickoff UI code btw so I don't know about the empty places issue, but I can try to have a look,

That would be much appreciated, so that I can find a ordering hack that works :)

hein added a comment.Sep 2 2017, 6:56 AM

kactivities-stats hasn't built for me in a long time fwiw:

[eike@ehl1 ~/devel/build/frameworks/kactivities-stats 80K]$ make install
[ 2%] Automatic MOC for target KF5ActivitiesStats
Generating MOC predefs moc_predefs.h
[ 2%] Built target KF5ActivitiesStats_autogen
[ 45%] Built target KF5ActivitiesStats
[ 47%] Automatic MOC for target KActivitiesStatsTest
Generating MOC predefs moc_predefs.h
[ 50%] Automatic MOC for target KActivitiesStatsTestApp
Generating MOC predefs moc_predefs.h
[ 50%] Built target KActivitiesStatsTest_autogen
[ 54%] Built target KActivitiesStatsTestApp_autogen
[ 57%] Building CXX object autotests/CMakeFiles/KActivitiesStatsTest.dir/ResultSetQuickCheckTest.cpp.o
[ 76%] Built target KActivitiesStatsTestApp
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp: In instantiation of ‘R boost::range_detail::default_constructible_unary_fn_wrapper<F, R>::operator()(const Arg&) const [with Arg = ResourceScoreCache::Item; F = Column<ResourceScoreCache::Item, QString>::Filterer<QString>; R = bool]’:
/usr/include/boost/iterator/filter_iterator.hpp:101:49: required from ‘void boost::iterators::filter_iterator<Predicate, Iterator>::satisfy_predicate() [with Predicate = boost::range_detail::default_constructible_unary_fn_wrapper<Column<ResourceScoreCache::Item, QString>::Filterer<QString>, bool>; Iterator = std::_Rb_tree_const_iterator<ResourceScoreCache::Item>]’
/usr/include/boost/iterator/filter_iterator.hpp:60:28: required from ‘boost::iterators::filter_iterator<Predicate, Iterator>::filter_iterator(Predicate, Iterator, Iterator) [with Predicate = boost::range_detail::default_constructible_unary_fn_wrapper<Column<ResourceScoreCache::Item, QString>::Filterer<QString>, bool>; Iterator = std::_Rb_tree_const_iterator<ResourceScoreCache::Item>]’
/usr/include/boost/iterator/filter_iterator.hpp:115:14: required from ‘boost::iterators::filter_iterator<Predicate, Iterator> boost::iterators::make_filter_iterator(Predicate, Iterator, Iterator) [with Predicate = boost::range_detail::default_constructible_unary_fn_wrapper<Column<ResourceScoreCache::Item, QString>::Filterer<QString>, bool>; Iterator = std::_Rb_tree_const_iterator<ResourceScoreCache::Item>]’
/usr/include/boost/range/adaptor/filtered.hpp:45:40: required from ‘boost::range_detail::filtered_range<P, R>::filtered_range(P, R&) [with P = Column<ResourceScoreCache::Item, QString>::Filterer<QString>; R = std::set<ResourceScoreCache::Item, PrimaryKeyOrdering>]’
/usr/include/boost/range/adaptor/filtered.hpp:65:20: required from ‘boost::range_detail::filtered_range<Predicate, SinglePassRange> boost::range_detail::operator|(SinglePassRange&, const boost::range_detail::filter_holder<Predicate>&) [with SinglePassRange = std::set<ResourceScoreCache::Item, PrimaryKeyOrdering>; Predicate = Column<ResourceScoreCache::Item, QString>::Filterer<QString>]’
/home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:602:74: required from here
/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: error: no match for ‘operator==’ (operand types are ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ and ‘int’)

BOOST_ASSERT(m_impl);
^

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: candidate: operator==(int, int) <built-in>
/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘int’
In file included from /usr/include/boost/range/iterator_range.hpp:13:0,

from /usr/include/boost/range/algorithm.hpp:30,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:31:

/usr/include/boost/range/iterator_range_core.hpp:584:9: note: candidate: template<class IteratorT, class ForwardRange> typename boost::enable_if<boost::mpl::not_<boost::is_base_and_derived<boost::iterator_range_detail::iterator_range_tag, ForwardRange> >, bool>::type boost::operator==(const ForwardRange&, const boost::iterator_range<IteratorT>&)

operator==( const ForwardRange& l, const iterator_range<IteratorT>& r )
^~~~~~~~

/usr/include/boost/range/iterator_range_core.hpp:584:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const boost::iterator_range<IteratorT>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/range/iterator_range.hpp:13:0,

from /usr/include/boost/range/algorithm.hpp:30,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:31:

/usr/include/boost/range/iterator_range_core.hpp:643:9: note: candidate: template<class Iterator1T, class Iterator2T> bool boost::operator==(const boost::iterator_range<IteratorT>&, const boost::iterator_range<Iterator2T>&)

operator==( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
^~~~~~~~

/usr/include/boost/range/iterator_range_core.hpp:643:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const boost::iterator_range<IteratorT>’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/range/iterator_range.hpp:13:0,

from /usr/include/boost/range/algorithm.hpp:30,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:31:

/usr/include/boost/range/iterator_range_core.hpp:653:9: note: candidate: template<class IteratorT, class ForwardRange> typename boost::enable_if<boost::mpl::not_<boost::is_base_and_derived<boost::iterator_range_detail::iterator_range_tag, ForwardRange> >, bool>::type boost::operator==(const boost::iterator_range<IteratorT>&, const ForwardRange&)

operator==( const iterator_range<IteratorT>& l, const ForwardRange& r )
^~~~~~~~

/usr/include/boost/range/iterator_range_core.hpp:653:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const boost::iterator_range<IteratorT>’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:28:6: note: candidate: template<class T> bool boost::operator==(const boost::optional<T>&, const boost::optional<T>&)
bool operator == ( optional<T> const& x, optional<T> const& y )

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:28:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const boost::optional<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:62:6: note: candidate: template<class T> bool boost::operator==(const boost::optional<T>&, const T&)
bool operator == ( optional<T> const& x, T const& y )

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:62:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: deduced conflicting types for parameter ‘const T’ (‘Column<ResourceScoreCache::Item, QString>::Filterer<QString>’ and ‘int’)

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:96:6: note: candidate: template<class T> bool boost::operator==(const T&, const boost::optional<T>&)
bool operator == ( T const& x, optional<T> const& y )

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:96:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const boost::optional<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:131:6: note: candidate: template<class T> bool boost::operator==(const boost::optional<T>&, boost::none_t)
bool operator == ( optional<T> const& x, none_t ) BOOST_NOEXCEPT

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:131:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: cannot convert ‘0’ (type ‘int’) to type ‘boost::none_t’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:165:6: note: candidate: template<class T> bool boost::operator==(boost::none_t, const boost::optional<T>&)
bool operator == ( none_t , optional<T> const& y ) BOOST_NOEXCEPT

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:165:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const boost::optional<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtDBus/qdbusextratypes.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/dbus/qdbusabstractinterface.h:50,
from /home/eike/devel/src/qt5-build/qtbase/include/QtDBus/qdbusabstractinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/dbus/qdbusconnectioninterface.h:46,
from /home/eike/devel/src/qt5-build/qtbase/include/QtDBus/qdbusconnectioninterface.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtDBus/QDBusConnectionInterface:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:23:

/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:195:13: note: candidate: bool operator==(const QDBusVariant&, const QDBusVariant&)
inline bool operator==(const QDBusVariant &v1, const QDBusVariant &v2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:195:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QDBusVariant&’
/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:155:13: note: candidate: bool operator==(const QDBusSignature&, const QDBusSignature&)
inline bool operator==(const QDBusSignature &lhs, const QDBusSignature &rhs)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:155:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QDBusSignature&’
/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:100:13: note: candidate: bool operator==(const QDBusObjectPath&, const QDBusObjectPath&)
inline bool operator==(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:100:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QDBusObjectPath&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qrect.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:60,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:859:30: note: candidate: constexpr bool operator==(const QRectF&, const QRectF&)
Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:859:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QRectF&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:454:30: note: candidate: constexpr bool operator==(const QRect&, const QRect&)
Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:454:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QRect&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qmargins.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:43,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qrect.h:1,
from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:60,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qmargins.h:372:30: note: candidate: constexpr bool operator==(const QMarginsF&, const QMarginsF&)
Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qmargins.h:372:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QMarginsF&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qmargins.h:135:30: note: candidate: constexpr bool operator==(const QMargins&, const QMargins&)
Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qmargins.h:135:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QMargins&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsize.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:59,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsize.h:339:30: note: candidate: constexpr bool operator==(const QSizeF&, const QSizeF&)
Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsize.h:339:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QSizeF&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsize.h:169:30: note: candidate: constexpr bool operator==(const QSize&, const QSize&)
Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsize.h:169:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QSize&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qpoint.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:58,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpoint.h:348:30: note: candidate: constexpr bool operator==(const QPointF&, const QPointF&)
Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpoint.h:348:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QPointF&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpoint.h:163:30: note: candidate: constexpr bool operator==(const QPoint&, const QPoint&)
Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpoint.h:163:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QPoint&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qmetaobject.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/testlib/qtestcase.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtestcase.h:1,
from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:45,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qmetaobject.h:201:13: note: candidate: bool operator==(const QMetaMethod&, const QMetaMethod&)
inline bool operator==(const QMetaMethod &m1, const QMetaMethod &m2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qmetaobject.h:201:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QMetaMethod&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:817:13: note: candidate: template<class T> bool operator==(std::nullptr_t, const QWeakPointer<T>&)
inline bool operator==(std::nullptr_t, const QWeakPointer<T> &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:817:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const QWeakPointer<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:805:13: note: candidate: template<class T> bool operator==(const QWeakPointer<T>&, std::nullptr_t)
inline bool operator==(const QWeakPointer<T> &lhs, std::nullptr_t) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:805:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QWeakPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:793:13: note: candidate: template<class T> bool operator==(std::nullptr_t, const QSharedPointer<T>&)
inline bool operator==(std::nullptr_t, const QSharedPointer<T> &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:793:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const QSharedPointer<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:781:13: note: candidate: template<class T> bool operator==(const QSharedPointer<T>&, std::nullptr_t)
inline bool operator==(const QSharedPointer<T> &lhs, std::nullptr_t) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:781:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QSharedPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:770:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)
bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:770:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QSharedPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:754:6: note: candidate: template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)
bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:754:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const T*’ and ‘boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:749:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)
bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:749:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QSharedPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:738:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)
bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:738:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QSharedPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qvariant.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qlocale.h:43,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qlocale.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qtextstream.h:46,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qtextstream.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qvariant.h:567:13: note: candidate: bool operator==(const QVariant&, const QVariantComparisonHelper&)
inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qvariant.h:567:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QVariant&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qhash.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qshareddata.h:46,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qshareddata.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qexception.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qexception.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qhash.h:141:13: note: candidate: bool operator==(const QHashDummyValue&, const QHashDummyValue&)
inline bool operator==(const QHashDummyValue & /* v1 */, const QHashDummyValue & /* v2 */)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qhash.h:141:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QHashDummyValue&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qvarlengtharray.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qmetatype.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qmetatype.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qvarlengtharray.h:515:6: note: candidate: template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)
bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qvarlengtharray.h:515:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QVarLengthArray<T, Prealloc1>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qscopedpointer.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:53,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:197:13: note: candidate: template<class T, class Cleanup> bool operator==(std::nullptr_t, const QScopedPointer<T, Cleanup>&)
inline bool operator==(std::nullptr_t, const QScopedPointer<T, Cleanup> &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:197:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const QScopedPointer<T, Cleanup>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qscopedpointer.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:53,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:191:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, std::nullptr_t)
inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, std::nullptr_t) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:191:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QScopedPointer<T, Cleanup>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qscopedpointer.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:53,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:179:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)
inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:179:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QScopedPointer<T, Cleanup>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qpair.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qhashfunctions.h:45,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qhashfunctions.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qlist.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qlist.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpair.h:110:41: note: candidate: template<class T1, class T2> constexpr bool operator==(const QPair<T1, T2>&, const QPair<T1, T2>&)
Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpair.h:110:41: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ is not derived from ‘const QPair<T1, T2>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qstring.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1677:32: note: candidate: bool operator==(const QByteArray&, const QStringRef&)
inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) == 0; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1677:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QByteArray&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1670:32: note: candidate: bool operator==(const QStringRef&, const QByteArray&)
inline QT_ASCII_CAST_WARN bool operator==(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) == 0; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1670:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1661:13: note: candidate: bool operator==(QLatin1String, QChar)
inline bool operator==(QLatin1String lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1661:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QLatin1String’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1642:13: note: candidate: bool operator==(const QStringRef&, QChar)
inline bool operator==(const QStringRef &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1642:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1623:13: note: candidate: bool operator==(const QString&, QChar)
inline bool operator==(const QString &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1623:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QString&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1604:13: note: candidate: bool operator==(const QStringRef&, QLatin1String)
inline bool operator==(const QStringRef &lhs, QLatin1String rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1604:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1597:20: note: candidate: bool operator==(QLatin1String, const QStringRef&)
Q_CORE_EXPORT bool operator==(QLatin1String lhs, const QStringRef &rhs) Q_DECL_NOTHROW;

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1597:20: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QLatin1String’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1572:13: note: candidate: bool operator==(const QStringRef&, const QString&)
inline bool operator==(const QStringRef &lhs, const QString &rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1572:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1565:20: note: candidate: bool operator==(const QString&, const QStringRef&)
Q_CORE_EXPORT bool operator==(const QString &lhs, const QStringRef &rhs) Q_DECL_NOTHROW;

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1565:20: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QString&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1553:20: note: candidate: bool operator==(const QStringRef&, const QStringRef&)
Q_CORE_EXPORT bool operator==(const QStringRef &s1, const QStringRef &s2) Q_DECL_NOTHROW;

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1553:20: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1210:32: note: candidate: bool operator==(const char*, QLatin1String)
inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1210:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const char*’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1153:13: note: candidate: bool operator==(QLatin1String, QLatin1String)
inline bool operator==(QLatin1String s1, QLatin1String s2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1153:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QLatin1String’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1145:13: note: candidate: bool operator==(const QString&, QString::Null)
inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1145:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QString&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1143:13: note: candidate: bool operator==(QString::Null, const QString&)
inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1143:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QString::Null’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1141:13: note: candidate: bool operator==(QString::Null, QString::Null)
inline bool operator==(QString::Null, QString::Null) { return true; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1141:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QString::Null’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1650:13: note: candidate: bool operator==(QChar, QLatin1String)
inline bool operator==(QChar lhs, QLatin1String rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1650:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QChar’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1631:13: note: candidate: bool operator==(QChar, const QStringRef&)
inline bool operator==(QChar lhs, const QStringRef &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1631:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QChar’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1612:13: note: candidate: bool operator==(QChar, const QString&)
inline bool operator==(QChar lhs, const QString &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1612:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QChar’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1698:32: note: candidate: bool operator==(const char*, const QStringRef&)
inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1698:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const char*’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1197:32: note: candidate: bool operator==(const char*, const QString&)
inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1197:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const char*’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qbytearray.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qstring.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:598:13: note: candidate: bool operator==(const char*, const QByteArray&)
inline bool operator==(const char *a1, const QByteArray &a2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:598:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const char*’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:596:13: note: candidate: bool operator==(const QByteArray&, const char*)
inline bool operator==(const QByteArray &a1, const char *a2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:596:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QByteArray&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:594:13: note: candidate: bool operator==(const QByteArray&, const QByteArray&)
inline bool operator==(const QByteArray &a1, const QByteArray &a2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:594:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QByteArray&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qchar.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qstring.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:584:30: note: candidate: constexpr bool operator==(std::nullptr_t, QChar)
Q_DECL_CONSTEXPR inline bool operator==(std::nullptr_t, QChar rhs) Q_DECL_NOTHROW { return rhs.isNull(); }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:584:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘std::nullptr_t’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:582:30: note: candidate: constexpr bool operator==(QChar, std::nullptr_t)
Q_DECL_CONSTEXPR inline bool operator==(QChar lhs, std::nullptr_t) Q_DECL_NOTHROW { return lhs.isNull(); }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:582:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QChar’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:573:30: note: candidate: constexpr bool operator==(QChar, QChar)
Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) Q_DECL_NOTHROW { return c1.ucs == c2.ucs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:573:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘QChar’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qstring.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:633:31: note: candidate: bool operator==(const QString&, const QString&)

friend Q_CORE_EXPORT bool operator==(const QString &s1, const QString &s2) Q_DECL_NOTHROW;
                          ^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:633:31: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceScoreCache::Item, QString>::Filterer<QString> >’ to ‘const QString&’
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp: In instantiation of ‘R boost::range_detail::default_constructible_unary_fn_wrapper<F, R>::operator()(const Arg&) const [with Arg = ResourceLink::Item; F = Column<ResourceLink::Item, QString>::Filterer<QString>; R = bool]’:
/usr/include/boost/iterator/filter_iterator.hpp:101:49: required from ‘void boost::iterators::filter_iterator<Predicate, Iterator>::satisfy_predicate() [with Predicate = boost::range_detail::default_constructible_unary_fn_wrapper<Column<ResourceLink::Item, QString>::Filterer<QString>, bool>; Iterator = std::_Rb_tree_const_iterator<ResourceLink::Item>]’
/usr/include/boost/iterator/filter_iterator.hpp:60:28: required from ‘boost::iterators::filter_iterator<Predicate, Iterator>::filter_iterator(Predicate, Iterator, Iterator) [with Predicate = boost::range_detail::default_constructible_unary_fn_wrapper<Column<ResourceLink::Item, QString>::Filterer<QString>, bool>; Iterator = std::_Rb_tree_const_iterator<ResourceLink::Item>]’
/usr/include/boost/iterator/filter_iterator.hpp:115:14: required from ‘boost::iterators::filter_iterator<Predicate, Iterator> boost::iterators::make_filter_iterator(Predicate, Iterator, Iterator) [with Predicate = boost::range_detail::default_constructible_unary_fn_wrapper<Column<ResourceLink::Item, QString>::Filterer<QString>, bool>; Iterator = std::_Rb_tree_const_iterator<ResourceLink::Item>]’
/usr/include/boost/range/adaptor/filtered.hpp:45:40: required from ‘boost::range_detail::filtered_range<P, R>::filtered_range(P, R&) [with P = Column<ResourceLink::Item, QString>::Filterer<QString>; R = std::set<ResourceLink::Item, PrimaryKeyOrdering>]’
/usr/include/boost/range/adaptor/filtered.hpp:65:20: required from ‘boost::range_detail::filtered_range<Predicate, SinglePassRange> boost::range_detail::operator|(SinglePassRange&, const boost::range_detail::filter_holder<Predicate>&) [with SinglePassRange = std::set<ResourceLink::Item, PrimaryKeyOrdering>; Predicate = Column<ResourceLink::Item, QString>::Filterer<QString>]’
/home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:640:68: required from here
/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: error: no match for ‘operator==’ (operand types are ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ and ‘int’)

BOOST_ASSERT(m_impl);
^

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: candidate: operator==(int, int) <built-in>
/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘int’
In file included from /usr/include/boost/range/iterator_range.hpp:13:0,

from /usr/include/boost/range/algorithm.hpp:30,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:31:

/usr/include/boost/range/iterator_range_core.hpp:584:9: note: candidate: template<class IteratorT, class ForwardRange> typename boost::enable_if<boost::mpl::not_<boost::is_base_and_derived<boost::iterator_range_detail::iterator_range_tag, ForwardRange> >, bool>::type boost::operator==(const ForwardRange&, const boost::iterator_range<IteratorT>&)

operator==( const ForwardRange& l, const iterator_range<IteratorT>& r )
^~~~~~~~

/usr/include/boost/range/iterator_range_core.hpp:584:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const boost::iterator_range<IteratorT>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/range/iterator_range.hpp:13:0,

from /usr/include/boost/range/algorithm.hpp:30,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:31:

/usr/include/boost/range/iterator_range_core.hpp:643:9: note: candidate: template<class Iterator1T, class Iterator2T> bool boost::operator==(const boost::iterator_range<IteratorT>&, const boost::iterator_range<Iterator2T>&)

operator==( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
^~~~~~~~

/usr/include/boost/range/iterator_range_core.hpp:643:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const boost::iterator_range<IteratorT>’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/range/iterator_range.hpp:13:0,

from /usr/include/boost/range/algorithm.hpp:30,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:31:

/usr/include/boost/range/iterator_range_core.hpp:653:9: note: candidate: template<class IteratorT, class ForwardRange> typename boost::enable_if<boost::mpl::not_<boost::is_base_and_derived<boost::iterator_range_detail::iterator_range_tag, ForwardRange> >, bool>::type boost::operator==(const boost::iterator_range<IteratorT>&, const ForwardRange&)

operator==( const iterator_range<IteratorT>& l, const ForwardRange& r )
^~~~~~~~

/usr/include/boost/range/iterator_range_core.hpp:653:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const boost::iterator_range<IteratorT>’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:28:6: note: candidate: template<class T> bool boost::operator==(const boost::optional<T>&, const boost::optional<T>&)
bool operator == ( optional<T> const& x, optional<T> const& y )

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:28:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const boost::optional<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:62:6: note: candidate: template<class T> bool boost::operator==(const boost::optional<T>&, const T&)
bool operator == ( optional<T> const& x, T const& y )

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:62:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: deduced conflicting types for parameter ‘const T’ (‘Column<ResourceLink::Item, QString>::Filterer<QString>’ and ‘int’)

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:96:6: note: candidate: template<class T> bool boost::operator==(const T&, const boost::optional<T>&)
bool operator == ( T const& x, optional<T> const& y )

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:96:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const boost::optional<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:131:6: note: candidate: template<class T> bool boost::operator==(const boost::optional<T>&, boost::none_t)
bool operator == ( optional<T> const& x, none_t ) BOOST_NOEXCEPT

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:131:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: cannot convert ‘0’ (type ‘int’) to type ‘boost::none_t’

BOOST_ASSERT(m_impl);
^

In file included from /usr/include/boost/optional/optional.hpp:1382:0,

from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/optional/detail/optional_relops.hpp:165:6: note: candidate: template<class T> bool boost::operator==(boost::none_t, const boost::optional<T>&)
bool operator == ( none_t , optional<T> const& y ) BOOST_NOEXCEPT

^~~~~~~~

/usr/include/boost/optional/detail/optional_relops.hpp:165:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const boost::optional<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtDBus/qdbusextratypes.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/dbus/qdbusabstractinterface.h:50,
from /home/eike/devel/src/qt5-build/qtbase/include/QtDBus/qdbusabstractinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/dbus/qdbusconnectioninterface.h:46,
from /home/eike/devel/src/qt5-build/qtbase/include/QtDBus/qdbusconnectioninterface.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtDBus/QDBusConnectionInterface:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:23:

/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:195:13: note: candidate: bool operator==(const QDBusVariant&, const QDBusVariant&)
inline bool operator==(const QDBusVariant &v1, const QDBusVariant &v2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:195:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QDBusVariant&’
/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:155:13: note: candidate: bool operator==(const QDBusSignature&, const QDBusSignature&)
inline bool operator==(const QDBusSignature &lhs, const QDBusSignature &rhs)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:155:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QDBusSignature&’
/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:100:13: note: candidate: bool operator==(const QDBusObjectPath&, const QDBusObjectPath&)
inline bool operator==(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/dbus/qdbusextratypes.h:100:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QDBusObjectPath&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qrect.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:60,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:859:30: note: candidate: constexpr bool operator==(const QRectF&, const QRectF&)
Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:859:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QRectF&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:454:30: note: candidate: constexpr bool operator==(const QRect&, const QRect&)
Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:454:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QRect&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qmargins.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qrect.h:43,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qrect.h:1,
from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:60,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qmargins.h:372:30: note: candidate: constexpr bool operator==(const QMarginsF&, const QMarginsF&)
Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qmargins.h:372:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QMarginsF&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qmargins.h:135:30: note: candidate: constexpr bool operator==(const QMargins&, const QMargins&)
Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qmargins.h:135:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QMargins&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsize.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:59,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsize.h:339:30: note: candidate: constexpr bool operator==(const QSizeF&, const QSizeF&)
Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsize.h:339:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QSizeF&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsize.h:169:30: note: candidate: constexpr bool operator==(const QSize&, const QSize&)
Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsize.h:169:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QSize&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qpoint.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:58,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpoint.h:348:30: note: candidate: constexpr bool operator==(const QPointF&, const QPointF&)
Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpoint.h:348:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QPointF&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpoint.h:163:30: note: candidate: constexpr bool operator==(const QPoint&, const QPoint&)
Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpoint.h:163:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QPoint&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qmetaobject.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/testlib/qtestcase.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtestcase.h:1,
from /home/eike/devel/src/qt5/qtbase/src/testlib/qtest.h:45,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/qtest.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtTest/QTest:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:28,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qmetaobject.h:201:13: note: candidate: bool operator==(const QMetaMethod&, const QMetaMethod&)
inline bool operator==(const QMetaMethod &m1, const QMetaMethod &m2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qmetaobject.h:201:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QMetaMethod&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:817:13: note: candidate: template<class T> bool operator==(std::nullptr_t, const QWeakPointer<T>&)
inline bool operator==(std::nullptr_t, const QWeakPointer<T> &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:817:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const QWeakPointer<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:805:13: note: candidate: template<class T> bool operator==(const QWeakPointer<T>&, std::nullptr_t)
inline bool operator==(const QWeakPointer<T> &lhs, std::nullptr_t) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:805:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QWeakPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:793:13: note: candidate: template<class T> bool operator==(std::nullptr_t, const QSharedPointer<T>&)
inline bool operator==(std::nullptr_t, const QSharedPointer<T> &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:793:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const QSharedPointer<T>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:781:13: note: candidate: template<class T> bool operator==(const QSharedPointer<T>&, std::nullptr_t)
inline bool operator==(const QSharedPointer<T> &lhs, std::nullptr_t) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:781:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QSharedPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:770:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QWeakPointer<X>&)
bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:770:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QSharedPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:754:6: note: candidate: template<class T, class X> bool operator==(const T*, const QSharedPointer<T>&)
bool operator==(const T *ptr1, const QSharedPointer<X> &ptr2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:754:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const T*’ and ‘boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:749:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const X*)
bool operator==(const QSharedPointer<T> &ptr1, const X *ptr2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:749:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QSharedPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer_impl.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qsharedpointer.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:738:6: note: candidate: template<class T, class X> bool operator==(const QSharedPointer<T>&, const QSharedPointer<T>&)
bool operator==(const QSharedPointer<T> &ptr1, const QSharedPointer<X> &ptr2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qsharedpointer_impl.h:738:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QSharedPointer<T>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qvariant.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qlocale.h:43,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qlocale.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qtextstream.h:46,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qtextstream.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/io/qdebug.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qdebug.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qresultstore.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qresultstore.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qvariant.h:567:13: note: candidate: bool operator==(const QVariant&, const QVariantComparisonHelper&)
inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qvariant.h:567:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QVariant&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qhash.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qshareddata.h:46,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qshareddata.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qexception.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qexception.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfutureinterface.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfutureinterface.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/thread/qfuture.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qfuture.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QFuture:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:24,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qhash.h:141:13: note: candidate: bool operator==(const QHashDummyValue&, const QHashDummyValue&)
inline bool operator==(const QHashDummyValue & /* v1 */, const QHashDummyValue & /* v2 */)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qhash.h:141:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QHashDummyValue&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qvarlengtharray.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qmetatype.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qmetatype.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:54,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qvarlengtharray.h:515:6: note: candidate: template<class T, int Prealloc1, int Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1>&, const QVarLengthArray<T, Prealloc2>&)
bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qvarlengtharray.h:515:6: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QVarLengthArray<T, Prealloc1>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qscopedpointer.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:53,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:197:13: note: candidate: template<class T, class Cleanup> bool operator==(std::nullptr_t, const QScopedPointer<T, Cleanup>&)
inline bool operator==(std::nullptr_t, const QScopedPointer<T, Cleanup> &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:197:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: mismatched types ‘const QScopedPointer<T, Cleanup>’ and ‘int’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qscopedpointer.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:53,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:191:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, std::nullptr_t)
inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, std::nullptr_t) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:191:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QScopedPointer<T, Cleanup>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qscopedpointer.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:53,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:179:13: note: candidate: template<class T, class Cleanup> bool operator==(const QScopedPointer<T, Cleanup>&, const QScopedPointer<T, Cleanup>&)
inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qscopedpointer.h:179:13: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QScopedPointer<T, Cleanup>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qpair.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qhashfunctions.h:45,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qhashfunctions.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qlist.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qlist.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpair.h:110:41: note: candidate: template<class T1, class T2> constexpr bool operator==(const QPair<T1, T2>&, const QPair<T1, T2>&)
Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qpair.h:110:41: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/assert.hpp:58:0,

from /usr/include/boost/optional/optional.hpp:23,
from /usr/include/boost/range/detail/default_constructible_unary_fn.hpp:13,
from /usr/include/boost/range/adaptor/filtered.hpp:15,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:33:

/usr/include/boost/range/detail/default_constructible_unary_fn.hpp:38:9: note: ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ is not derived from ‘const QPair<T1, T2>’

BOOST_ASSERT(m_impl);
^

In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qstring.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1677:32: note: candidate: bool operator==(const QByteArray&, const QStringRef&)
inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) == 0; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1677:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QByteArray&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1670:32: note: candidate: bool operator==(const QStringRef&, const QByteArray&)
inline QT_ASCII_CAST_WARN bool operator==(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) == 0; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1670:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1661:13: note: candidate: bool operator==(QLatin1String, QChar)
inline bool operator==(QLatin1String lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1661:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QLatin1String’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1642:13: note: candidate: bool operator==(const QStringRef&, QChar)
inline bool operator==(const QStringRef &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1642:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1623:13: note: candidate: bool operator==(const QString&, QChar)
inline bool operator==(const QString &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1623:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QString&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1604:13: note: candidate: bool operator==(const QStringRef&, QLatin1String)
inline bool operator==(const QStringRef &lhs, QLatin1String rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1604:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1597:20: note: candidate: bool operator==(QLatin1String, const QStringRef&)
Q_CORE_EXPORT bool operator==(QLatin1String lhs, const QStringRef &rhs) Q_DECL_NOTHROW;

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1597:20: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QLatin1String’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1572:13: note: candidate: bool operator==(const QStringRef&, const QString&)
inline bool operator==(const QStringRef &lhs, const QString &rhs) Q_DECL_NOTHROW { return rhs == lhs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1572:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1565:20: note: candidate: bool operator==(const QString&, const QStringRef&)
Q_CORE_EXPORT bool operator==(const QString &lhs, const QStringRef &rhs) Q_DECL_NOTHROW;

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1565:20: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QString&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1553:20: note: candidate: bool operator==(const QStringRef&, const QStringRef&)
Q_CORE_EXPORT bool operator==(const QStringRef &s1, const QStringRef &s2) Q_DECL_NOTHROW;

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1553:20: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QStringRef&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1210:32: note: candidate: bool operator==(const char*, QLatin1String)
inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1210:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const char*’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1153:13: note: candidate: bool operator==(QLatin1String, QLatin1String)
inline bool operator==(QLatin1String s1, QLatin1String s2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1153:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QLatin1String’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1145:13: note: candidate: bool operator==(const QString&, QString::Null)
inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1145:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QString&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1143:13: note: candidate: bool operator==(QString::Null, const QString&)
inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1143:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QString::Null’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1141:13: note: candidate: bool operator==(QString::Null, QString::Null)
inline bool operator==(QString::Null, QString::Null) { return true; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1141:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QString::Null’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1650:13: note: candidate: bool operator==(QChar, QLatin1String)
inline bool operator==(QChar lhs, QLatin1String rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1650:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QChar’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1631:13: note: candidate: bool operator==(QChar, const QStringRef&)
inline bool operator==(QChar lhs, const QStringRef &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1631:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QChar’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1612:13: note: candidate: bool operator==(QChar, const QString&)
inline bool operator==(QChar lhs, const QString &rhs) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1612:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QChar’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1698:32: note: candidate: bool operator==(const char*, const QStringRef&)
inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1698:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const char*’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1197:32: note: candidate: bool operator==(const char*, const QString&)
inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:1197:32: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const char*’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qbytearray.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:49,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qstring.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:598:13: note: candidate: bool operator==(const char*, const QByteArray&)
inline bool operator==(const char *a1, const QByteArray &a2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:598:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const char*’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:596:13: note: candidate: bool operator==(const QByteArray&, const char*)
inline bool operator==(const QByteArray &a1, const char *a2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:596:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QByteArray&’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:594:13: note: candidate: bool operator==(const QByteArray&, const QByteArray&)
inline bool operator==(const QByteArray &a1, const QByteArray &a2) Q_DECL_NOTHROW

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qbytearray.h:594:13: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QByteArray&’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qchar.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:48,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qstring.h:1,
from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:584:30: note: candidate: constexpr bool operator==(std::nullptr_t, QChar)
Q_DECL_CONSTEXPR inline bool operator==(std::nullptr_t, QChar rhs) Q_DECL_NOTHROW { return rhs.isNull(); }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:584:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘std::nullptr_t’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:582:30: note: candidate: constexpr bool operator==(QChar, std::nullptr_t)
Q_DECL_CONSTEXPR inline bool operator==(QChar lhs, std::nullptr_t) Q_DECL_NOTHROW { return lhs.isNull(); }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:582:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QChar’
/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:573:30: note: candidate: constexpr bool operator==(QChar, QChar)
Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) Q_DECL_NOTHROW { return c1.ucs == c2.ucs; }

^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qchar.h:573:30: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘QChar’
In file included from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qstring.h:1:0,

from /home/eike/devel/src/qt5/qtbase/src/corelib/kernel/qobject.h:47,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/qobject.h:1,
from /home/eike/devel/src/qt5-build/qtbase/include/QtCore/QObject:1,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/common/test.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.h:23,
from /home/eike/devel/src/frameworks/kactivities-stats/autotests/ResultSetQuickCheckTest.cpp:20:

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:633:31: note: candidate: bool operator==(const QString&, const QString&)

friend Q_CORE_EXPORT bool operator==(const QString &s1, const QString &s2) Q_DECL_NOTHROW;
                          ^~~~~~~~

/home/eike/devel/src/qt5/qtbase/src/corelib/tools/qstring.h:633:31: note: no known conversion for argument 1 from ‘const boost::optional<Column<ResourceLink::Item, QString>::Filterer<QString> >’ to ‘const QString&’
make[2]: * [autotests/CMakeFiles/KActivitiesStatsTest.dir/build.make:135: autotests/CMakeFiles/KActivitiesStatsTest.dir/ResultSetQuickCheckTest.cpp.o] Error 1
make[1]:
* [CMakeFiles/Makefile2:240: autotests/CMakeFiles/KActivitiesStatsTest.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

hein added a comment.Sep 2 2017, 7:27 AM

The Kickoff thing looks more like a model bug to me - there's a duplicate delegate for "Firefox", and one of them has a broken row index (-1). Stuff like that is usually the result of confusing the view with broken model transactions ... the QML is very simple (that binding loop is a subitem of the delegate so it's not relevant to the placement) and just plain ListView really.

ivan edited the summary of this revision. (Show Details)Sep 2 2017, 9:19 PM
ivan edited the test plan for this revision. (Show Details)
ivan updated this revision to Diff 19108.Sep 2 2017, 9:21 PM
ivan edited the summary of this revision. (Show Details)

The last patch supports Kickoff, Kicker and Dash. I've tested what I can, found an small issue in KAMD (update KAMD to latest master before testing) and it looks like we are on the finish line.

hein added a comment.Sep 4 2017, 9:35 AM

And another round of testing:

  1. Post-migration sorting still feels completely random - not sure how solid that feeling is though. Note my test script is still the same - start with a Kickoff and a Kicker instance, append two different new favorites to each, drag the first and second default faves (respectively, i.e. #1 on the first applet, #2 on the second) between the two new ones, patch, restart Plasma. After that I would expect the list of favorites that was identical at the top of both favorite lists to remain there, and then for the sorting of the remainder to be somewhat jumbly ... but here I get something seemingly random at the top of the post-migration result.
  1. Definitive bug:
  2. Have two activities
  3. Add a favorite to the current activity
  4. Right-click it, check the other activity in the submenu
  5. Right-click it again, uncheck the current activity
  6. Expected: Favorite is now on the other activity (and only there); Actual result: Favorite has disappeared
  1. Warning that may be related:

/home/eike/devel/src/kde/workspace/plasma-desktop/applets/kicker/plugin/kastatsfavoritesmodel.cpp:415:39: warning: unused parameter ‘currentActivity’ [-Wunused-parameter]

this, [&] (const QString &currentActivity) {
ivan added a comment.Sep 4 2017, 10:45 AM

Post-migration sorting still feels completely random - not sure how solid that feeling is though.

Hmh. My test is - have three launchers with some favs shared, some not.

After the port, all launchers have the same items on the top, with the new items added to the end. Do you have any speial URL formats in your original favorites (preferred: needed special treatment, that is why I'm asking)? Can you check whether the plasma configuration file has the correct order?

Definitive bug:

You haven't updated kactivitymanagerd as I said?

hein added a comment.Sep 4 2017, 11:06 AM

After the port, all launchers have the same items on the top, with the new items added to the end. Do you have any speial URL formats in your original favorites (preferred: needed special treatment, that is why I'm asking)? Can you check whether the plasma configuration file has the correct order?

Of course I have a preferred:// favorite: The default favorites have one for the browser ...

plasma rc:

favoriteApps=preferred://browser,org.kde.dolphin.desktop,org.kde.kate.desktop,fontforge.desktop,systemsettings.desktop,gimp.desktop
favorites=systemsettings.desktop,org.kde.dolphin.desktop,org.kde.kate.desktop,org.kde.discover.desktop,blender.desktop,preferred://browser,org.kde.krita.desktop

stats rc:

[Favorites-org.kde.plasma.kicker.favorites.instance-19-00c64f45-3049-42e5-b3c4-568afabb2b3d]
ordering=preferred://browser,applications:org.kde.dolphin.desktop,applications:org.kde.kate.desktop,applications:fontforge.desktop,applications:systemsettings.desktop,applications:gimp.desktop,applications:org.kde.discover.desktop,applications:blender.desktop,applications:org.kde.krita.desktop,applications:chocolate-setup.desktop

[Favorites-org.kde.plasma.kicker.favorites.instance-19-2126853d-731e-4ccb-bdd6-8e00bf5a3ec0]
ordering=preferred://browser,applications:org.kde.dolphin.desktop,applications:org.kde.kate.desktop,applications:fontforge.desktop,applications:systemsettings.desktop,applications:gimp.desktop,applications:blender.desktop,applications:org.kde.discover.desktop,applications:org.kde.krita.desktop,applications:org.kde.okular.desktop

[Favorites-org.kde.plasma.kicker.favorites.instance-19-global]
ordering=preferred://browser,org.kde.dolphin.desktop,org.kde.kate.desktop,fontforge.desktop,systemsettings.desktop,gimp.desktop

[Favorites-org.kde.plasma.kickoff.favorites.instance-3-00c64f45-3049-42e5-b3c4-568afabb2b3d]
ordering=applications:fontforge.desktop,applications:gimp.desktop,applications:org.kde.dolphin.desktop,applications:org.kde.kate.desktop,applications:systemsettings.desktop,preferred://browser,applications:org.kde.discover.desktop,applications:blender.desktop,applications:org.kde.krita.desktop,applications:chocolate-setup.desktop

[Favorites-org.kde.plasma.kickoff.favorites.instance-3-2126853d-731e-4ccb-bdd6-8e00bf5a3ec0]
ordering=applications:systemsettings.desktop,applications:org.kde.dolphin.desktop,applications:org.kde.kate.desktop,applications:org.kde.discover.desktop,applications:blender.desktop,preferred://browser,applications:org.kde.krita.desktop,applications:fontforge.desktop,applications:gimp.desktop,applications:org.kde.okular.desktop

[Favorites-org.kde.plasma.kickoff.favorites.instance-3-global]
ordering=systemsettings.desktop,org.kde.dolphin.desktop,org.kde.kate.desktop,org.kde.discover.desktop,blender.desktop,preferred://browser,org.kde.krita.desktop

You haven't updated kactivitymanagerd as I said?

I updated all of frameworks, including kactivities and kactivities-stats, I assumed kactivitymanagerd is in there? :)

hein added a comment.Sep 4 2017, 11:25 AM

With the updated kactivitymanagerd the missing favorite no longer happens, although the "also add it on the second activity by checking item" step inserts it in a strange position of last-2 instead of appending it on the same applet on the other activity - considering all the other faves in the test are shared, I'd expect it to appear the end (where it also was on the first activity). Still, progress!

ivan updated this revision to Diff 19163.Sep 4 2017, 12:26 PM
hein added a comment.Sep 5 2017, 8:08 AM

^ What's new in the latest rev?

ivan updated this revision to Diff 19206.Sep 5 2017, 10:59 AM

Fixing the ordering

hein added a comment.Sep 5 2017, 2:36 PM

It aaaalmost looked good, but I got this bug back:

  1. add fav to current activity (activity 1)
  2. add to activity 2 by checking in context menu while in activity 1
  3. switch to activity 2, verify it was added
  4. switch back to activity 1, in context menu uncheck activity 1
  5. switch back to activity 2 to verify it's still there - but it's gone

I tried to repeat those steps and then at step 3, the favorite that disappeared at step 5 actually did show up. So this might be a case where the model didn't refresh correctly on activity switch? However with the new favorite I was trying it with, it didn't disappear. Then when I tried it again after trying some other things, it happened again, and other favorites disappeared as well alongside it.

Another UX note: At some point during testing I added a new favorite directly to all activities. Then I switched from activity 1 to activity 2, and I saw on activity 2 the favorite wasn't appended to the list but appeared in front of the activity 2-only favorites. This isn't a huge deal breaker, although I feel like it might be simpler and more predictable for users to always just append - I thought the applets now have their own ordering conceptually so I was sort of surprised this didn't happen. But maybe I'm misunderstanding how per-applet ordering and global ordering (new applets need to get ordering from somewhere I guess ...) interact, or should interact. So don't get too scared by this feedback ...

ivan updated this revision to Diff 19263.Sep 7 2017, 6:50 AM

Another one to test:

  • fixed a small bug related to fav adding
  • added debugging output for easier testing (when you encounter a bug, send me an email with plasma output)
ivan added a comment.Sep 7 2017, 6:51 AM

p.s. This is how I restart everything:

kquitapp5 plasmashell; kactivitymanagerd stop; touch ~/.config/kactivitymanagerd-statsrc; make install -j8 && (echo "DELETE FROM ResourceLink;" | sqlite3 ~/.local/share/kactivitymanagerd/resources/database) && rm ~/.config/kactivitymanagerd-statsrc && cp ~/.config/plasma-org.kde.plasma.desktop-appletsrc-prekastats ~/.config/plasma-org.kde.plasma.desktop-appletsrc && kactivitymanagerd start && plasmashell
hein added a comment.Sep 7 2017, 3:23 PM

Test failure using Kicker:

  1. Right-click menu entry -> Show favorite in -> All activities
  2. Verify it's shown on both activities
  3. Be in activity 1, right-click the favorite, click the checkbox item for activity 2, favorite disappears from activity 1 as expected
  4. Switch to activity 2 expecting to see favorite: Not there
  5. Switch back to activity 1 (favorite also not there as expected)
  6. Add another favorite to all ativities, switch back to activity 2: Missing favorite reappeared along with new one

Addition to #4: I think another fave I had added previously had also disappeared and reappeared in #6.

Still same broken behavior as in last test in other words. Sending output via email.

ivan updated this revision to Diff 19283.Sep 7 2017, 6:11 PM
ivan updated this revision to Diff 19301.Sep 8 2017, 9:40 AM
ivan edited the summary of this revision. (Show Details)
ivan edited the test plan for this revision. (Show Details)

Removed model test

ivan updated this revision to Diff 19303.Sep 8 2017, 10:46 AM

More debugging...

ivan updated this revision to Diff 19304.Sep 8 2017, 11:32 AM

Increasing the result limit

hein accepted this revision.Sep 8 2017, 1:56 PM

So I assume the bug was that I was getting too many favorites? Limit::all is now unlimited I assume? Otherwise it needs to be integrated with the maxFavorites stuff to disable the actions. (Does maxFavorites still work BTW? Because it's needed for Simple Menu on the KDE Store.)

(Just realized due to the API changes this will probably break Simple Menu anyway ... then again it was using the non-public Kicker backend ... I need to talk to you how I can get migration for Simple Menu too.)

Alright, let's merge now then - I didn't actually have time to re-test this but I guess the bug/fix is obvious in retrospect and it was working fine otherwise.

This revision is now accepted and ready to land.Sep 8 2017, 1:56 PM
This revision was automatically updated to reflect the committed changes.