Closed ldalessa closed 4 weeks ago
Manually reduced to something like this (note that the code isn't valid).
#include <utility>
struct Foo {
template <class T>
constexpr auto operator[](this T&& self, auto... i) -> decltype(_evaluate(std::forward<T>(self), i...)) {
return self._evaluate(i...);
}
private:
template <class T>
constexpr auto _evaluate(this T&& self, auto... i) -> decltype((i + ...)) ;
};
int main()
{
Foo foo;
return foo[];
}
@llvm/issue-subscribers-clang-frontend
Author: Luke D'Alessandro (ldalessa)
I'm working on a little project that uses C++16 and does a bunch of compile time programming and metaprogramming, and I've run into this ICE. bind-4ddf5a.sh.gz bind-4ddf5a.cpp.gz