L'ho smontato & ho provato a trovare una domanda simile anche su SO ma non ho trovato nulla di utile. Quindi, postando la mia domanda qui.Perché la conversione implicita di bool in stringa non è un errore?
considerare questo programma:
#include <iostream>
void foo(const std::string &) {}
int main()
{
foo(false);
}
[Warning] converting 'false' to pointer type for argument 1 of 'std::basic_string::basic_string(const _CharT*, const _Alloc&) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]' [-Wconversion-null]
Perché C++ permette questo senza cast esplicito? Mi aspettavo di ottenere l'errore del compilatore. Il programma termina in modo anomalo in fase di esecuzione a causa di un'eccezione visualizzazione seguente:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
ciò che la norma dice che su questo tipo di conversione implicita?
"Che cosa dice lo standard su questo tipo di conversione implicita?" Dice che è permesso. – juanchopanza
@juanchopanza: No. Non è così. è necessario scrivere testo pertinente dallo standard C++. – Destructor
@Downvoters: perché downvotes? Cosa c'è di sbagliato in questione? – Destructor