Add `is_contiguous_iterator` support for MSVC 2012, because that's what DVS uses.
Bug
Bug
MODIFY
testing/is_contiguous_iterator.cu
testing/is_contiguous_iterator.cu
#include <array>
#endif
#include <string>
-#if defined(__cpp_lib_string_view)
+#if THRUST_CPP_DIALECT >= 2017
#include <string_view>
#endif
#include <deque>
@@ -26,7 +26,7 @@ THRUST_STATIC_ASSERT((thrust::is_contiguous_iterator<
std::wstring::iterator
>::value));
-#if defined(__cpp_lib_string_view)
+#if THRUST_CPP_DIALECT >= 2017
THRUST_STATIC_ASSERT((thrust::is_contiguous_iterator<
std::string_view::iterator
>::value));

MODIFY
thrust/type_traits/is_contiguous_iterator.h
thrust/type_traits/is_contiguous_iterator.h
@@ -123,7 +123,7 @@ struct is_libstdcxx_normal_iterator<
template <typename Iterator>
struct is_msvc_contiguous_iterator
: is_pointer<::std::_Unwrapped_t<Iterator> > {};
-#elif _MSC_VER >= 1800 // MSVC 2013.
+#elif _MSC_VER >= 1700 // MSVC 2012.
template <typename Iterator>
struct is_msvc_contiguous_iterator : false_type {};

Add `is_contiguous_iterator` support for MSVC 2012, because that's what DVS uses.

Bug 2379510
Bug 2455740