summaryrefslogtreecommitdiffstats
path: root/Tests/CompileFeatures
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-03-15 13:13:19 (GMT)
committerBrad King <brad.king@kitware.com>2018-03-16 11:47:42 (GMT)
commitfc96d99c3efae369f60db6f13cb1610121563d7f (patch)
tree86afb8c9fc619b119d00f9715ba27e42d38dbb24 /Tests/CompileFeatures
parentc5541cf0da1093635fea7da5a40e64e481b5477e (diff)
downloadCMake-fc96d99c3efae369f60db6f13cb1610121563d7f.zip
CMake-fc96d99c3efae369f60db6f13cb1610121563d7f.tar.gz
CMake-fc96d99c3efae369f60db6f13cb1610121563d7f.tar.bz2
Features: Record initializer list support for Intel 14 and above
Features recorded by commit v3.6.0-rc1~120^2~5 (Features: Record standards and features for Intel C++ on UNIX, 2016-04-28) for the Intel compiler left out initializer list support because our test case in `Tests/CompileFeatures/cxx_generalized_initializers.cpp` caused an internal compiler error. It turns out this is because the Intel compiler asserts the `initializer_list` constructor signatures to verify that they match its own `<initializer_list>` header. It was our dummy implementation used to test the language feature without any headers that caused the ICE. Revise it to use a constructor signature accepted by the Intel compiler. Fixes: #17829
Diffstat (limited to 'Tests/CompileFeatures')
-rw-r--r--Tests/CompileFeatures/cxx_generalized_initializers.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/Tests/CompileFeatures/cxx_generalized_initializers.cpp b/Tests/CompileFeatures/cxx_generalized_initializers.cpp
index cfe9d98..0df0a33 100644
--- a/Tests/CompileFeatures/cxx_generalized_initializers.cpp
+++ b/Tests/CompileFeatures/cxx_generalized_initializers.cpp
@@ -11,11 +11,17 @@ class initializer_list
const _E* __begin_;
size_t __size_;
+#ifdef __INTEL_COMPILER
+ // The Intel compiler internally asserts the constructor overloads, so
+ // reproduce the constructor used in its <initializer_list> header.
+ initializer_list(const _E*, size_t) {}
+#else
public:
template <typename T1, typename T2>
initializer_list(T1, T2)
{
}
+#endif
};
}