// -*- c++ -*- namespace std { template auto begin(C& c) -> decltype(c.begin()) { return c.begin(); } template auto begin(const C& c) -> decltype(c.begin()) { return c.begin(); } template auto end(C& c) -> decltype(c.end()) { return c.end(); } template auto end(const C& c) -> decltype(c.end()) { return c.end(); } template T* begin(T (&array)[N]) { return &array[0]; } template T* end(T (&array)[N]) { return &array[N]; } }