From c27602172f714631d6a0c9e0bbc793840ee9f08a Mon Sep 17 00:00:00 2001 From: Jerry Evans Date: Mon, 23 Nov 2015 15:27:20 +0000 Subject: [PATCH] Fix for ancient min/max macros in windows.h Disable constexpr for VS2013 Guard against older versions of VC++ --- peglib.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/peglib.h b/peglib.h index 487a9f5..6202d9f 100644 --- a/peglib.h +++ b/peglib.h @@ -23,6 +23,18 @@ #include #include +// guard for older versions of VC++ +#ifdef _MSC_VER +// VS2013 has no constexpr +#if (_MSC_VER == 1800) +#define PEGLIB_NO_CONSTEXPR_SUPPORT +#elif (_MSC_VER >= 1800) +// good to go +#else (_MSC_VER < 1800) +#error "Requires C+11 support" +#endif +#endif + namespace peg { extern void* enabler; @@ -2479,7 +2491,7 @@ public: peg_token_iterator() : s_(nullptr) , l_(0) - , pos_(std::numeric_limits::max()) {} + , pos_((std::numeric_limits::max)()) {} peg_token_iterator(const char* syntax, const char* s) : peg_(syntax) @@ -2534,7 +2546,7 @@ private: m_.matches.insert(m_.matches.begin(), match::Item{ s_ + mpos, mlen, 0 }); pos_ += mpos + mlen; } else { - pos_ = std::numeric_limits::max(); + pos_ = (std::numeric_limits::max)(); } }