https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88762
Bug ID: 88762 Summary: C++17 Deduction guide and operator expression produces missing template argument error Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: pkeir at outlook dot com Target Milestone: --- Created attachment 45383 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45383&action=edit C++ file which produces the error. I believe the code below/attached should compile with: g++ -c -std=c++17 gcc-deduction-expr.cpp The code is already reduced, but I also tried changing the operator for a method; and only using operator+ once; but the error disappears in both cases. The code compiles with Clang. Here is the error: error: missing template arguments after ‘Foo’ (Foo{x} + Foo{y}) + Foo{z}; ^~~ The code: template <typename T> struct Foo { Foo operator+(Foo &&f) { return f; } T &x; }; template <typename T> Foo(T) -> Foo<T>; void zod() { int x,y,z; (Foo{x} + Foo{y}) + Foo{z}; }