MSVC Bug? Overloaded member not found for constrained function
(Too long for a comment.) This looks like a bug, indeed, and I suggest you formally report it.
Curiously enough, the following works, instead.
template <typename T>
struct Blah {
enum { sizeofT = sizeof(T) }; // or: static const size_t sizeofT = sizeof(T);
// or: static constexpr size_t sizeofT = sizeof(T);
void blah() requires (sizeofT == 4);
};
template <typename T>
void Blah<T>::blah() requires (sizeofT == 4) {}
int main() {
Blah<int>().blah(); // ok
Blah<float>().blah(); // ok
// Blah<short>().blah() // c7500: 'blah': no function satisfied its constraints
// Blah<double>().blah(); // c7500: 'blah': no function satisfied its constraints
return 0;
}