Цитата:
Смысла в выполнении явно нет (а в некоторых моментах есть!).
Насколько я понимаю, все таки нет
Идея в том, нужно разделять функции, которые выполняют какую-то работу activity и функции предназначенные для проверки каких-то условий condition.
Это не закон, но рекомендация, следование которой позволит избежать многих ошибок.
Например, код в somef2() не был выполнен, так как так решил оптимизатор.
Например, кто-то решил дважды дернуть somef2(), чтобы выполнить какую-то проверку и при этом неосознанно выполнил код вложенный в somef2().
Насколько я помню даже в стандарте C++ не описано поведение компилятора в данном случае и каждый производитель может делать своб реализацию данного поведения. Это приведет к тому, что ваш код будет работать по разному, будучи откомпилированным разными компиляторами. Или даже откомпилированным в разных режимах - debug и release mode.