mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-11 19:29:02 +08:00
Fix using ScalarPrinter redefinition for gcc.
This commit is contained in:
parent
c54303848a
commit
de304ab960
@ -215,7 +215,6 @@ struct ScalarPrinter<Scalar, TensorIOFormatNative, std::enable_if_t<NumTraits<Sc
|
|||||||
template <typename Tensor, std::size_t rank, typename Format, typename EnableIf>
|
template <typename Tensor, std::size_t rank, typename Format, typename EnableIf>
|
||||||
struct TensorPrinter {
|
struct TensorPrinter {
|
||||||
using Scalar = std::remove_const_t<typename Tensor::Scalar>;
|
using Scalar = std::remove_const_t<typename Tensor::Scalar>;
|
||||||
using ScalarPrinter = ScalarPrinter<Scalar, Format>;
|
|
||||||
|
|
||||||
static void run(std::ostream& s, const Tensor& tensor, const Format& fmt) {
|
static void run(std::ostream& s, const Tensor& tensor, const Format& fmt) {
|
||||||
typedef typename Tensor::Index IndexType;
|
typedef typename Tensor::Index IndexType;
|
||||||
@ -257,7 +256,7 @@ struct TensorPrinter {
|
|||||||
for (IndexType i = 0; i < total_size; i++) {
|
for (IndexType i = 0; i < total_size; i++) {
|
||||||
std::stringstream sstr;
|
std::stringstream sstr;
|
||||||
sstr.copyfmt(s);
|
sstr.copyfmt(s);
|
||||||
ScalarPrinter::run(sstr, static_cast<PrintType>(tensor.data()[i]), fmt);
|
ScalarPrinter<Scalar, Format>::run(sstr, static_cast<PrintType>(tensor.data()[i]), fmt);
|
||||||
width = std::max<IndexType>(width, IndexType(sstr.str().length()));
|
width = std::max<IndexType>(width, IndexType(sstr.str().length()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -336,7 +335,7 @@ struct TensorPrinter {
|
|||||||
// So we don't mess around with formatting, output scalar to a string stream, and adjust the width/fill manually.
|
// So we don't mess around with formatting, output scalar to a string stream, and adjust the width/fill manually.
|
||||||
std::stringstream sstr;
|
std::stringstream sstr;
|
||||||
sstr.copyfmt(s);
|
sstr.copyfmt(s);
|
||||||
ScalarPrinter::run(sstr, static_cast<PrintType>(tensor.data()[i]), fmt);
|
ScalarPrinter<Scalar, Format>::run(sstr, static_cast<PrintType>(tensor.data()[i]), fmt);
|
||||||
std::string scalar_str = sstr.str();
|
std::string scalar_str = sstr.str();
|
||||||
IndexType scalar_width = scalar_str.length();
|
IndexType scalar_width = scalar_str.length();
|
||||||
if (width && scalar_width < width) {
|
if (width && scalar_width < width) {
|
||||||
@ -361,7 +360,6 @@ template <typename Tensor, std::size_t rank>
|
|||||||
struct TensorPrinter<Tensor, rank, TensorIOFormatLegacy, std::enable_if_t<rank != 0>> {
|
struct TensorPrinter<Tensor, rank, TensorIOFormatLegacy, std::enable_if_t<rank != 0>> {
|
||||||
using Format = TensorIOFormatLegacy;
|
using Format = TensorIOFormatLegacy;
|
||||||
using Scalar = std::remove_const_t<typename Tensor::Scalar>;
|
using Scalar = std::remove_const_t<typename Tensor::Scalar>;
|
||||||
using ScalarPrinter = ScalarPrinter<Scalar, Format>;
|
|
||||||
|
|
||||||
static void run(std::ostream& s, const Tensor& tensor, const Format& fmt) {
|
static void run(std::ostream& s, const Tensor& tensor, const Format& fmt) {
|
||||||
typedef typename Tensor::Index IndexType;
|
typedef typename Tensor::Index IndexType;
|
||||||
@ -382,7 +380,6 @@ template <typename Tensor, typename Format>
|
|||||||
struct TensorPrinter<Tensor, 0, Format> {
|
struct TensorPrinter<Tensor, 0, Format> {
|
||||||
static void run(std::ostream& s, const Tensor& tensor, const Format& fmt) {
|
static void run(std::ostream& s, const Tensor& tensor, const Format& fmt) {
|
||||||
using Scalar = std::remove_const_t<typename Tensor::Scalar>;
|
using Scalar = std::remove_const_t<typename Tensor::Scalar>;
|
||||||
using ScalarPrinter = ScalarPrinter<Scalar, Format>;
|
|
||||||
|
|
||||||
std::streamsize explicit_precision;
|
std::streamsize explicit_precision;
|
||||||
if (fmt.precision == StreamPrecision) {
|
if (fmt.precision == StreamPrecision) {
|
||||||
@ -400,7 +397,7 @@ struct TensorPrinter<Tensor, 0, Format> {
|
|||||||
std::streamsize old_precision = 0;
|
std::streamsize old_precision = 0;
|
||||||
if (explicit_precision) old_precision = s.precision(explicit_precision);
|
if (explicit_precision) old_precision = s.precision(explicit_precision);
|
||||||
s << fmt.tenPrefix;
|
s << fmt.tenPrefix;
|
||||||
ScalarPrinter::run(s, tensor.coeff(0), fmt);
|
ScalarPrinter<Scalar, Format>::run(s, tensor.coeff(0), fmt);
|
||||||
s << fmt.tenSuffix;
|
s << fmt.tenSuffix;
|
||||||
if (explicit_precision) s.precision(old_precision);
|
if (explicit_precision) s.precision(old_precision);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user