#endif
}
+#ifdef _MSC_VER
+constexpr size_t constexpr_strlen_internal(const char* s, size_t len) {
+ return *s == '\0' ? len : constexpr_strlen_internal(s + 1, len + 1);
+}
+static_assert(constexpr_strlen_internal("123456789", 0) == 9,
+ "Someone appears to have broken constexpr_strlen...");
+#endif
+
constexpr size_t constexpr_strlen(const char* s) {
#if defined(__clang__)
return __builtin_strlen(s);
+#elif defined(_MSC_VER)
+ return s == nullptr ? 0 : constexpr_strlen_internal(s, 0);
#else
return strlen(s);
#endif
#include <boost/algorithm/string.hpp>
#include <folly/Conv.h>
+#include <folly/Portability.h>
#include <folly/Range.h>
#include <folly/String.h>
#include <folly/Unicode.h>
constexpr const char* maxInt = "9223372036854775807";
constexpr const char* minInt = "9223372036854775808";
- constexpr auto maxIntLen = __builtin_strlen(maxInt);
+ constexpr auto maxIntLen = constexpr_strlen(maxInt);
if (*in != '.' && !wasE && in.getOpts().parse_numbers_as_strings) {