Consider the following program:
#include
enum class dummy {};
template
using EnableIf = typename std::enable_if
I believe I have found the relevant piece of standardese. §14.8.2p7 says:
The substitution occurs in all types and expressions that are used in the function type and in template parameter declarations.
Since EnableIf<dependent_true_type<T>>
is used in a template parameter declaration, substitution should occur and this is a bug in clang.