template<typename _Callable> struct _RangeAdaptor { constexpr _RangeAdaptor(const _Callable &) { } }; template<typename _Callable> _RangeAdaptor(_Callable) -> _RangeAdaptor<_Callable>; template<unsigned _Nm> inline constexpr _RangeAdaptor elements = [] (auto&& __r) {};