https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70824
--- Comment #1 from Truls Johnsen <trulsjo at gmail dot com> --- Reduced the test case to only include <initializer_list> and changed max to a one-liner that still shows the same behavior. Removing constexpr from max, or the (unused) template from a() makes the code compile: #include <initializer_list> constexpr int max(std::initializer_list<int> __l) { return *__l.begin(); } template <class Src> void a() { const int v = max({1}); } I forgot to mention the host in the initial report: Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz