8 #ifndef LARCOREALG_COREUTILS_STDUTILS_H 9 #define LARCOREALG_COREUTILS_STDUTILS_H 72 constexpr decltype(auto)
begin(
T&& obj)
77 constexpr decltype(
auto)
end(
T&& obj)
78 {
using std::end;
return end(std::forward<T>(obj)); }
87 constexpr decltype(
auto)
cend(
T&& obj)
92 constexpr decltype(
auto)
size(
T&& obj)
97 constexpr decltype(
auto)
empty(
T&& obj)
106 template <std::
size_t I,
typename T>
108 {
using std::get;
return get<I>(std::forward<T>(obj)); }
123 template <
typename T,
typename =
void>
126 template <
typename U>
134 template <
typename T>
137 template <
typename U>
144 template <
typename T>
148 template <
typename U>
160 template <
typename T>
168 #endif // LARCOREALG_COREUTILS_STDUTILS_H Namespace for general, non-LArSoft-specific utilities.
decltype(auto) constexpr cend(T &&obj)
ADL-aware version of std::cend.
decltype(auto) constexpr end(T &&obj)
ADL-aware version of std::end.
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
decltype(auto) constexpr to_string(T &&obj)
ADL-aware version of std::to_string.
static std::string to_string(U &&obj)
decltype(auto) get(T &&obj)
decltype(auto) constexpr cbegin(T &&obj)
ADL-aware version of std::cbegin.
decltype(auto) constexpr begin(T &&obj)
ADL-aware version of std::begin.
static std::string to_string(U &&obj)
static std::string to_string(U &&obj)
decltype(auto) constexpr empty(T &&obj)
ADL-aware version of std::empty.