O código a seguir é impresso nullptr
em vez de empty
( godbolt link ):
#include <iostream>
class empty { };
#if 1
void f(std::nullptr_t) {
std::cout << "nullptr\n";
}
#endif
void f(empty) {
std::cout << "empty\n";
}
int main() {
f({});
}
Desativar a f(nullptr_t)
variante faz com empty
que ela seja impressa. Quais são as regras que o C++ está usando para selecionar a nullptr_t
variante sobre a empty
variante quando ambas estão disponíveis?