#pragma once #include #include #include BEGIN_CS_NAMESPACE template using void_t = void; template struct has_method_begin : std::false_type {}; template struct has_method_begin().begin())>> : std::true_type {}; /// Calls the `begin()` method of `t` if that method exists. template typename std::enable_if::value>::type begin_if_possible(T &t) { t.begin(); } template typename std::enable_if::value>::type begin_if_possible(T &) {} END_CS_NAMESPACE