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.
This commit is contained in:
Brad King 2015-04-06 09:54:52 -04:00
parent 9b7213dc47
commit 827309af76
1 changed files with 6 additions and 2 deletions

View File

@ -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) {}
};
}