получается, что UB это не совсем свойство кода. Участок кода может быть хорошим сам по себе, но при определенных входных параметрах вызывать UB. Другой, более широкий участок, может проводить проверку параметров, так что в целом этот более широкий уже исключает UB. А может наоборот, более широкий внутри себя генерит параметры (например бежит в цикле) и гарантированно цепляет UB в более узком.