Use structs derived from std::false_type and std::true_type instead
of boolean constants. This allows us to make use of std::conjunction_v
and std::disjunciton_v in the conditions, thus making use of
short-circuit evaluation and saving unnecessary template
instantiations.
Still keep the constexpr bool *_v constant for the cases when we need
a signle check only.
Amends 678e9f614bc5a05d2ff16cf916397998e7cdfca1.
Change-Id: If2ab48ef910e97f241f5922d4108a271bc532f3a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit 8784ea16a6bc66ac481d5cbf2dd1ece2d57a836b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit b2bb9ef0f187a3c3d22c7f7714c038d07f87bb1b)
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>