Следующее определяет наблюдаемое поведение программы:
- Доступ через изменчивые значения glvalues оценивается строго в соответствии с правилами абстрактной машины.
- Данные доставляются в среду хоста для записи в файлы (см. также: ISO/IEC). 9899:2024, 7.23.3).
- Динамика ввода и вывода интерактивных устройств должна происходить таким образом, чтобы вывод запроса фактически доставлялся до того, как программа ожидает ввода.
То, что представляет собой интерактивное устройство, определяется реализацией.
Другими словами, поведение, не упомянутое в этом списке, не является Наблюдаемое поведение C++. Рассмотрим этот пример:
Код: Выделить всё
// "INT 3"
void call_asm_int_3(){
asm("INT $3");
}
int main(){
std::this_thread::sleep_for(std::chrono::minutes(10));
call_asm_int_3();
}
Эффекты: блокирует вызывающий поток в течение относительного времени ожидания ([thread.req.timing]), указанного в rel_time.
Синхронизация: нет.
Фактического значения нет. наблюдаемое поведение, определенное в [intro.abstract] стр.8. Кроме того, функция call_asm_int_3 имеет эффект попадания в точку останова, внешний эффект которой может наблюдать человек; однако это также не является наблюдаемым поведением, определенным в C++.
Итак, интересно, могут ли соответствующие реализации удалить или переупорядочить эти функции?
Подробнее здесь: https://stackoverflow.com/questions/798 ... t-have-c-d
Мобильная версия