I goggled to & próbował znaleźć podobne pytanie na SO również, ale nie znalazłem nic przydatnego. Tak, publikując moje pytanie tutaj.Dlaczego niejawna konwersja Bool na ciąg nie jest błędem?
Rozważmy następujący program:
#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]
dlaczego C++ pozwala to bez wyraźnej obsady? Spodziewałem się błędu kompilatora. Program kończy się nienormalnie przy starcie z powodu wyjątku wyświetlania następuje:
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.
Co średnia mówi o tego typu niejawna konwersja?
"Co standard mówi o tego rodzaju niejawnej konwersji?" Mówi, że jest to dozwolone. – juanchopanza
@juanchopanza: Nie. To nie tak. musisz napisać odpowiedni tekst ze standardu C++. – Destructor
@Downvoters: dlaczego downvotes? Co jest nie tak? – Destructor