Program Listing for File utility.hpp¶
↰ Return to documentation for file (ellcpp/utility.hpp)
// -*- coding: utf-8 -*-
#pragma once
#include <type_traits>
#include <utility>
#include <xtensor/xarray.hpp>
using Arr = xt::xarray<double, xt::layout_type::row_major>;
template <typename T>
constexpr auto zeros(std::initializer_list<T>&& x) ->
typename std::enable_if<std::is_integral<T>::value, Arr>::type
{
return Arr {xt::zeros<double>(x)};
}
template <typename T>
constexpr auto zeros(const T& /* unused */) noexcept(noexcept(T {})) ->
typename std::enable_if<std::is_floating_point<T>::value, T>::type
{
return T {};
}
template <typename T>
constexpr auto zeros(const T& x) ->
typename std::enable_if<!std::is_floating_point<T>::value, T>::type
{
return T {xt::zeros<double>({x.size()})};
}