xref: /llvm-project/libcxx/test/std/utilities/tuple/tuple.tuple/PR38601.pass.cpp (revision 048688fd80fadce1c72c365b0d74599a33389cfb)
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // Regression test for https://llvm.org/PR38601
10 
11 // UNSUPPORTED: c++03
12 
13 #include <cassert>
14 #include <tuple>
15 
16 using Base = std::tuple<int, int>;
17 
18 struct Derived : Base {
19     template <class ...Ts>
DerivedDerived20     Derived(int x, Ts... ts): Base(ts...), x_(x) { }
operator intDerived21     operator int () const { return x_; }
22     int x_;
23 };
24 
main(int,char **)25 int main(int, char**) {
26     Derived d(1, 2, 3);
27     Base b = static_cast<Base>(d);
28     assert(std::get<0>(b) == 2);
29     assert(std::get<1>(b) == 3);
30     return 0;
31 }
32