Handle MSVC's definition of __cplusplus
MSVC doesnt define __cplusplus correctly unless a compiler flag is passed (/Zc:__cplusplus) but _MSVC_LANG is defined correctly.
To avoid users needing to pass an extra compile flag, I suggest we handle it in the cpp_dialect.h file
MODIFY
thrust/detail/config/cpp_dialect.h
thrust/detail/config/cpp_dialect.h
#pragma once
-#if __cplusplus < 201103L
+#ifdef _MSC_VER
+ #define THRUST_CPP_VER _MSVC_LANG
+#else
+ #define THRUST_CPP_VER __cplusplus
+#endif
+
+#if THRUST_CPP_VER < 201103L
#define THRUST_CPP03
#define THRUST_CPP_DIALECT 2003
-#elif __cplusplus < 201402L
+#elif THRUST_CPP_VER < 201402L
#define THRUST_CPP11
#define THRUST_CPP_DIALECT 2011
-#elif __cplusplus < 201703L
+#elif THRUST_CPP_VER < 201703L
#define THRUST_CPP14
#define THRUST_CPP_DIALECT 2014
#else
#define THRUST_CPP_DIALECT 2017
#endif
+#undef THRUST_CPP_VER

Handle MSVC's definition of __cplusplus

MSVC doesnt define __cplusplus correctly unless a compiler flag is passed (/Zc:__cplusplus) but _MSVC_LANG is defined correctly.
To avoid users needing to pass an extra compile flag, I suggest we handle it in the cpp_dialect.h file