https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63515
--- Comment #3 from Luka Rahne <luka.rahne at gmail dot com> --- Extra observations: It looks to me that assignment "auto c = CurriedImpl<2,some_type>(f);" tries to construct an operator(); If operator() is renamed to function fun or assignment is replaced by constructor there is no issues.