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";
auto strides(const E &e, stride_type type=stride_type::normal) noexcept
Get strides of an object.
standard mathematical functions for xexpressions