Consider the following code:
template<typename T>
concept Rebindable = requires {typename T::template rebind<auto>;};
template<typename T>
struct rebindable
{
template<typename U>
using rebind = rebindable<U>;
};
template<typename T>
struct non_rebindable
{};
this code compiles fine on gcc and works as expected (Rebindable<rebindable</*a type*/>> is true, Rebindable<non_rebindable</*a type*/>> is false), however clang triggers 'auto' not allowed in template argument. I was wondering, is auto as template argument an (intentional or non-intentional) extension on gcc or a new feature that hasn't been implemented yet by clang?