Louis Dionne 048688fd80 [libc++] Fix incorrect main() signatures in the tests
Those creep up from time to time. We need to use `int main(int, char**)`
because in freestanding mode, `main` doesn't get special treatment and
special mangling, so we setup a symbol alias from the mangled version of
`main(int, char**)` to `extern "C" main`. That only works if all the tests
are consistent about how they define their main function.
2021-10-20 16:26:34 -04:00

32 lines
841 B
C++

//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
// Regression test for https://llvm.org/PR38601
// UNSUPPORTED: c++03
#include <cassert>
#include <tuple>
using Base = std::tuple<int, int>;
struct Derived : Base {
template <class ...Ts>
Derived(int x, Ts... ts): Base(ts...), x_(x) { }
operator int () const { return x_; }
int x_;
};
int main(int, char**) {
Derived d(1, 2, 3);
Base b = static_cast<Base>(d);
assert(std::get<0>(b) == 2);
assert(std::get<1>(b) == 3);
return 0;
}