Pārlūkot izejas kodu

Tests: Fix CompileFeatures cxx_generalized_initializers example

The only reason this failed to compile on VS 2013 was because the
compiler uses different initializer_list constructor argument types than
our dummy implementation.  The standard does not specify the non-default
constructor argument types for initializer_list.  Use a template to
match any two-arg constructor a compiler might select (e.g. begin/end or
begin/len).  Use #error to preserve the error on VS 2013.
Brad King 10 gadi atpakaļ
vecāks
revīzija
827309af76

+ 6 - 2
Tests/CompileFeatures/cxx_generalized_initializers.cpp

@@ -1,3 +1,6 @@
+#if defined(_MSC_VER) && _MSC_VER == 1800
+# error "VS 2013 does not safely support this"
+#endif
 
 // Dummy implementation. Test only the compiler feature.
 namespace std {
@@ -7,8 +10,9 @@ namespace std {
   {
     const _E* __begin_;
     size_t    __size_;
-
-    initializer_list(const int*, long unsigned int) {}
+  public:
+    template <typename T1, typename T2>
+    initializer_list(T1, T2) {}
   };
 }