https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70977
--- Comment #7 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- markus@x4 tmp % cat Acceptor-c++14.ii namespace __gnu_cxx { namespace __ops { struct _Iter_less_iter { template <typename _Iterator1, typename _Iterator2> constexpr int operator()(_Iterator1, _Iterator2 __it2) { return *__it2; } }; constexpr _Iter_less_iter __iter_less_iter() { return _Iter_less_iter(); } } } namespace std { template <class> struct initializer_list { typedef int *const_iterator; int *_M_array; unsigned long size; constexpr const_iterator begin() { return _M_array; } constexpr const_iterator end() { return 0; } }; template <typename _FIter> constexpr _FIter max_element(_FIter, _FIter); template <typename _Tp> constexpr _Tp max(initializer_list<_Tp> __l) { max_element(__l.begin(), __l.end()); } template <typename _ForwardIterator, typename _Compare> constexpr _ForwardIterator __max_element(_ForwardIterator __first, _ForwardIterator, _Compare __comp) { __comp(0, __first); } template <typename _ForwardIterator> constexpr _ForwardIterator max_element(_ForwardIterator __first, _ForwardIterator __last) { __max_element(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); } template <class> void estimateSpaceNeeded() { const int kMaxPositiveSpace = max({0}); } } markus@x4 tmp % g++ -c Acceptor-c++14.ii <<OOM killer kicks in>>