Zastanawiam się nad zastąpieniem wszystkich wystąpień bezpiecznego idola boolem przez explicit operator bool
w kodzie, który już używa funkcji C++ 11 (więc fakt, że starsze kompilatory nie rozpoznają jawnej konwersji operatorzy nie będą mieli znaczenia), więc chciałbym się dowiedzieć, czy może to powodować pewne subtelne problemy.Niekompatybilność między bezpiecznym idiomem bool a jawnym bool operatora
Zatem jakie są wszystkie ewentualne niezgodności (nawet najdrobniejsze z nich), które mogą być spowodowane przez przejście od starego i nudny bezpieczne bool idiom do nowego i błyszczące explicit operator bool
?
EDYCJA: Wiem, że przełączanie jest dobrym pomysłem, ponieważ jest to funkcja językowa, dobrze zrozumiała przez kompilator, więc nie będzie działać gorzej niż to, co jest w rzeczywistości tylko hack. Po prostu chcę poznać możliwe różnice.
Oczywiście masz rację. Ale jest powód, dla którego oznaczyłem to słowem "język-prawnik". Chciałbym uzyskać czyste fakty, które wynikają z samego standardu, a nie porady na temat dobrych praktyk. Muszę to wyjaśnić, ale dzięki. – Fanael
@Fanael: Oba standardy, C++ 03 i C++ 11, nie mówią o idiomie safe-bool, więc nie można cytować z niego, aby poprzeć to, co powiedziałem. Domyślam się tylko, że C++ 11 wprowadził "wyraźny operator bool" dla przyczyn i jednym z powodów, jak sądzę, jest "wyraźny operator bool" jest ** bezpieczniejszy ** niż tzw. idiom bezpieczny. – Nawaz
Ale standard mówi o rzeczach używanych do implementacji idiomu "safe-bool". Tak więc, chociaż standard nic nie mówi o tym idiomie, jego dokładne gwarancje są w znacznym stopniu zasugerowane w dokumencie. – Fanael