You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Some of this may be impossible without either changing the call syntax or waiting until the library can support C++20.
There are a couple alternatives:
Provide a slower solution for non-clang alternatives. This could likely be reduced to a single dereference per method invocation (the correct idx can still be inferred compile time).
A syntax that explicitly requires providing the idx as a template argument based on a constexpr method invoked from the constexpr class. E.g.
Even still, this option may require a new syntax because operators can't be cleanly templated. E.g. you may need to write the syntax:
obj.template<"Foo">( ... );
Here at least we could offer a new syntax:
obj.Call<"Foo">( ... );
This would maintain dual compatibility but would be sad to introduce a new call syntax. It's unclear to me if consteval could provide a consistent syntax to what exists today.
Look for a gcc equivalent of the function argument enable_if. This isn't particularly good long term either though.
What's unfortunate is that the correct idx can be inferred at compile time at the call site, but not once the member method has been invoked. C++17 has everything it needs.
I don't think this is trivial to resolve, so, I will leave this as an open problem, but not blocking for release. I tried every trick I had.
Some common compilers (such as those bundled with the Android NDK on stock Bazel) have outdated or non-conformant clang implementations.
Some of these legal but unsupported syntaxes could be obviated with equivalent but supported implementations.
The text was updated successfully, but these errors were encountered: