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
24 lines
553 B
C++
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
|