xref: /llvm-project/clang/test/Modules/Inputs/PR28752/vector (revision edbc6e93e1b6cf87a369db2a56717a3282582558)
1*edbc6e93SRichard Smith#ifndef VECTOR
2*edbc6e93SRichard Smith#define VECTOR
3*edbc6e93SRichard Smithtemplate <bool, typename> struct B;
4*edbc6e93SRichard Smithtemplate <typename _Tp> struct B<true, _Tp> { typedef _Tp type; };
5*edbc6e93SRichard Smithnamespace std {
6*edbc6e93SRichard Smithtemplate <typename> struct D {
7*edbc6e93SRichard Smith
8*edbc6e93SRichard Smith  template <typename _Alloc2> struct F {
9*edbc6e93SRichard Smith    static const bool value = 0;
10*edbc6e93SRichard Smith  };
11*edbc6e93SRichard Smith
12*edbc6e93SRichard Smith  template <typename _Alloc2>
13*edbc6e93SRichard Smith  typename B<F<_Alloc2>::value, _Alloc2>::type _S_select(_Alloc2);
14*edbc6e93SRichard Smith  template <typename _Alloc2>
15*edbc6e93SRichard Smith  static
16*edbc6e93SRichard Smith  typename B<!F<_Alloc2>::value, _Alloc2>::type _S_select(_Alloc2);
17*edbc6e93SRichard Smith};
18*edbc6e93SRichard Smithtemplate <typename _Alloc>
19*edbc6e93SRichard Smithtemplate <typename _Alloc2>
20*edbc6e93SRichard Smithconst bool D<_Alloc>::F<_Alloc2>::value;
21*edbc6e93SRichard Smith
22*edbc6e93SRichard Smithtemplate <typename> class vector {
23*edbc6e93SRichard Smithpublic:
24*edbc6e93SRichard Smith  vector(int);
25*edbc6e93SRichard Smith  vector(vector &) : vector(D<bool>::_S_select((bool)0)) {}
26*edbc6e93SRichard Smith};
27*edbc6e93SRichard Smith}
28*edbc6e93SRichard Smith#endif // VECTOR