summaryrefslogtreecommitdiffstats
path: root/Tests/CompileFeatures/cxx_generalized_initializers.cpp
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-04-06 13:54:52 (GMT)
committerBrad King <brad.king@kitware.com>2015-04-06 14:05:37 (GMT)
commit827309af76fe3f51a2d589148ef98cf91f510c2b (patch)
treea947a00cb1c79137a37afce7c02a2d2fea2de314 /Tests/CompileFeatures/cxx_generalized_initializers.cpp
parent9b7213dc47d2477cb4ceb5032a9078412b5474bd (diff)
downloadCMake-827309af76fe3f51a2d589148ef98cf91f510c2b.zip
CMake-827309af76fe3f51a2d589148ef98cf91f510c2b.tar.gz
CMake-827309af76fe3f51a2d589148ef98cf91f510c2b.tar.bz2
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.
Diffstat (limited to 'Tests/CompileFeatures/cxx_generalized_initializers.cpp')
-rw-r--r--Tests/CompileFeatures/cxx_generalized_initializers.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/Tests/CompileFeatures/cxx_generalized_initializers.cpp b/Tests/CompileFeatures/cxx_generalized_initializers.cpp
index 7bf356b..13544f3 100644
--- a/Tests/CompileFeatures/cxx_generalized_initializers.cpp
+++ b/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) {}
};
}