Является ли unique_lock :: unlock недостаточным в стандарте C ++ 11?

Стандарт C ++ 11 определяет unique_lock :: unlock как (§ 30.4.2.2.2, стр. 1159)

void unlock();
Effects: pm->unlock()
Postcondition: owns == false
Throws: system_error when an exception is required (30.2.2).
Error conditions:
  — operation_not_permitted — if on entry owns is false.

Все другие операции блокировки указывают, что исключение генерируется как минимум в двух случаях:

  • Мьютекс равен NULL (выдает system_error с errc :: operation_not_permitted )
  • Мьютекс является уже заблокирован (выдает system_error с errc :: operation_not_permitted )

Проблема с недопустимым мьютексом, очевидно, возможна и для разблокировки , однако стандарт определяет поведение программы только при проблемах с блокировкой. Это настоящая ошибка в стандарте или я что-то упустил?

5
задан Charles 18 December 2011 в 16:28
поделиться