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.
For instance 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.