The ostream operator<< is currently broken for std::complex with specified field widths. This patch a partial revert of c3478eff7a65 (reviewed as D71214), restoring the correct behavior. Differential Revision: https://reviews.llvm.org/D78816
40 lines
978 B
C++
40 lines
978 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// <complex>
|
|
|
|
// template<class T, class charT, class traits>
|
|
// basic_ostream<charT, traits>&
|
|
// operator<<(basic_ostream<charT, traits>& o, const complex<T>& x);
|
|
|
|
#include <complex>
|
|
#include <sstream>
|
|
#include <cassert>
|
|
|
|
#include "test_macros.h"
|
|
|
|
int main(int, char**)
|
|
{
|
|
{
|
|
std::complex<double> c(1, 2);
|
|
std::ostringstream os;
|
|
os << c;
|
|
assert(os.str() == "(1,2)");
|
|
}
|
|
{
|
|
std::complex<double> c(1, 2);
|
|
std::ostringstream os;
|
|
os.width(8);
|
|
os.fill('_');
|
|
os << c;
|
|
assert(os.str() == "___(1,2)");
|
|
}
|
|
|
|
return 0;
|
|
}
|