llvm-project/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist-system-header.cpp
Nico Weber bcb70eee1a Enable clang to continue to parse libstdc++4.6 and stlport after r210091.
r210091 made initialization checking more strict in c++11 mode. LWG2193 is
about changing standard libraries to still be valid under these new rules,
but older libstdc++ (e.g. libstdc++4.6 in -D_GLIBCXX_DEBUG=1 mode, or stlport)
do not implement that yet.  So fall back to the C++03 semantics for container
classes in system headers below the std namespace.

llvm-svn: 212238
2014-07-02 23:51:09 +00:00

24 lines
553 B
C++

// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -Wsystem-headers %s
// libstdc++4.6 in debug mode has explicit default constructors.
// stlport has this for all containers.
#ifdef BE_THE_HEADER
#pragma clang system_header
namespace std {
namespace __debug {
template <class T>
class vector {
public:
explicit vector() {} // expected-warning{{should not be explicit}}
};
}
}
#else
#define BE_THE_HEADER
#include __FILE__
struct { int a, b; std::__debug::vector<int> c; } e[] = { {1, 1} }; // expected-note{{used in initialization here}}
#endif