#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_; #if defined(__INTEL_COMPILER) || \ (defined(__LCC__) && \ (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))) // Compilers based on EDG, such as Intel compiler and MCST LCC, // internally assert 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 }; }