Instantiating function templates with default arguments doesn't handle old-style SFINAE constraints correctly:
First, this correctly doesn't instantiate:
template <typename T = int> requires (sizeof(T) == 42)
void foo() {}
This some instantiates despite the false constraint:
template <typename T = int, std::enable_if_t<sizeof(T) == 42, int> = 0>
void foo() {}
This produces a broken instantiation, literally substituting std::enable_if<sizeof(T) == 42>::type without expanding T.
template <typename T = int, typename = std::enable_if_t<sizeof(T) == 42>>
void foo() {}