Nie chodzi o dzikie tryby kompilacji. Chodzi o to jak to działa a jak nie działa.
Jak to nie działa a wiele osób może myśleć że tak działa albo chce żeby tak działało:
"Oznacza że ta funkcja nigdy nie rzuci wyjątku"
Jak działa:
"Kiedy ta funkcja rzuci wyjątek, natychmiast ubij cały program"
Trudno się dziwić że wiele osób nie lubi kiedy nagle zabija się im cały program, bez możliwości odratowania go lub chociaż zapisania czegoś na dysk (nawet jakiegoś logu).
noexcept jest potrzebne w pewnych specyficznych sytuacjach, głównie w bibliotece standardowej. Pozwala omijać pewne mechanizmy bezpieczeństwa, bo oznacza że nie trzeba przygotowywać się na wypadek gdyby dane wywołanie rzuciło wyjątek. Jeśli wiemy że na interfejsie jest 'noexcept', to możemy totalnie nie przejmować się tym co będzie jeśli ta funkcja rzuci wyjątek. Bo program zostanie natychmiast ubity.
Możesz traktować to jako coś w stylu "do tej funkcji nie trzeba uwzględniać żadnego exception handlingu, biorę na siebie pełną odpowiedzialność za katastrofalne skutki wystąpienia wyjątku".