Do not depend on c++11 conditional

This commit is contained in:
Kyrega 2021-08-10 10:12:29 +02:00
parent e0512e0944
commit 8710d7e989

View File

@ -1464,9 +1464,24 @@ private:
RAPIDJSON_FORCEINLINE Ch Take() { return Base::TakePush(); } RAPIDJSON_FORCEINLINE Ch Take() { return Base::TakePush(); }
}; };
template <bool test>
struct NumberCharacterConditional {
typedef char type;
};
template<>
struct NumberCharacterConditional<true> {
typedef typename TargetEncoding::Ch type;
};
template<>
struct NumberCharacterConditional<false> {
typedef char type;
};
template<unsigned parseFlags, typename InputStream, typename Handler> template<unsigned parseFlags, typename InputStream, typename Handler>
void ParseNumber(InputStream& is, Handler& handler) { void ParseNumber(InputStream& is, Handler& handler) {
typedef typename std::conditional<(parseFlags & kParseNumbersAsStringsFlag) != 0, typename TargetEncoding::Ch, char>::type NumberCharacter; typedef NumberCharacterConditional<(parseFlags& kParseNumbersAsStringsFlag) != 0 >::type NumberCharacter;
internal::StreamLocalCopy<InputStream> copy(is); internal::StreamLocalCopy<InputStream> copy(is);
NumberStream<InputStream, NumberCharacter, NumberStream<InputStream, NumberCharacter,