Enforce a strongly typed enum for public API boolean parameters
So that they can't be implicitly converted from/to pointers when the number of parameters mismatch.
virtual Query<IMedia> tracks( bool withThumbnail, const QueryParameters* params = nullptr )
can be called with
tracks( params ), the pointer will be converted to bool, and params will be nullptr, without any warning.