10#ifndef XTENSOR_INFO_HPP
11#define XTENSOR_INFO_HPP
18#if __cplusplus < 201103
22#elif __cplusplus < 201402
23#define CONSTEXPR11_TN constexpr
25#define NOEXCEPT_TN noexcept
27#define CONSTEXPR11_TN constexpr
28#define CONSTEXPR14_TN constexpr
29#define NOEXCEPT_TN noexcept
37#define CONSTEXPR11_TN constexpr
39#define NOEXCEPT_TN noexcept
41#define CONSTEXPR11_TN constexpr
42#define CONSTEXPR14_TN constexpr
43#define NOEXCEPT_TN noexcept
52 template <std::
size_t N>
53 explicit CONSTEXPR11_TN static_string(
const char (&a)[N]) NOEXCEPT_TN : data(a),
58 CONSTEXPR11_TN static_string(
const char* a,
const std::size_t sz) NOEXCEPT_TN : data(a),
63 const char*
const data;
64 const std::size_t size;
73#elif defined(__GNUC__)
75#if __cplusplus < 201402
80#elif defined(_MSC_VER)
87 std::string type_to_string()
89 static_string static_name = type_name<T>();
90 return std::string(static_name.data, static_name.size);
94 std::string info(
const T& t)
97 s +=
"\nValue type: " + type_to_string<typename T::value_type>();
117 for (
const auto& el : t.shape())
124 s += std::to_string(el);
126 s +=
")\nStrides: (";
128 for (
const auto& el : t.strides())
135 s += std::to_string(el);
137 s +=
")\nSize: " + std::to_string(t.size()) +
"\n";
standard mathematical functions for xexpressions