Fix bogus "conditional expression is constant" MSVC warnings
This commit is contained in:
parent
aab64b55a4
commit
fd53bb6fb8
10
format.h
10
format.h
@ -800,6 +800,10 @@ struct EnableIf {};
|
||||
template<class T>
|
||||
struct EnableIf<true, T> { typedef T type; };
|
||||
|
||||
// A helper function to suppress bogus "conditional expression is constant"
|
||||
// warnings.
|
||||
inline bool check(bool value) { return value; }
|
||||
|
||||
// Makes an Arg object from any type.
|
||||
template <typename Char>
|
||||
class MakeValue : public Arg {
|
||||
@ -859,7 +863,7 @@ class MakeValue : public Arg {
|
||||
MakeValue(long value) {
|
||||
// To minimize the number of types we need to deal with, long is
|
||||
// translated either to int or to long long depending on its size.
|
||||
if (sizeof(long) == sizeof(int))
|
||||
if (check(sizeof(long) == sizeof(int)))
|
||||
int_value = static_cast<int>(value);
|
||||
else
|
||||
long_long_value = value;
|
||||
@ -869,7 +873,7 @@ class MakeValue : public Arg {
|
||||
}
|
||||
|
||||
MakeValue(unsigned long value) {
|
||||
if (sizeof(unsigned long) == sizeof(unsigned))
|
||||
if (check(sizeof(unsigned long) == sizeof(unsigned)))
|
||||
uint_value = static_cast<unsigned>(value);
|
||||
else
|
||||
ulong_long_value = value;
|
||||
@ -2634,7 +2638,7 @@ struct ArgArraySize {
|
||||
Arg array[fmt::internal::ArgArraySize<sizeof...(Args)>::VALUE] = { \
|
||||
fmt::internal::MakeValue<Char>(args)... \
|
||||
}; \
|
||||
if (sizeof...(Args) > fmt::ArgList::MAX_PACKED_ARGS) \
|
||||
if (fmt::internal::check((sizeof...(Args) > fmt::ArgList::MAX_PACKED_ARGS))) \
|
||||
set_types(array, args...); \
|
||||
call(FMT_FOR_EACH(FMT_GET_ARG_NAME, __VA_ARGS__), \
|
||||
fmt::ArgList(fmt::internal::make_type(args...), array)); \
|
||||
|
Loading…
Reference in New Issue
Block a user