#if defined(_MSC_VER) && _MSC_VER == 1800 && _MSC_FULL_VER < 180030723 # error "VS 2013 safely supports this only with Update 3 or greater" #endif // Dummy implementation. Test only the compiler feature. namespace std { typedef decltype(sizeof(int)) size_t; template 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 header. initializer_list(const _E*, size_t) {} #else public: template initializer_list(T1, T2) { } #endif }; } template struct A { A(std::initializer_list) {} }; void someFunc() { A as = { 1, 2, 3, 4 }; }