Я вижу практическое использование для const volatile
квалифицированной переменной, например
const volatile uint64_t seconds_since_1970;
если базовый аппаратный механизм обновляет значение каждую секунду, но переменная недоступна для записи (возможно, встроенного) оборудования.
И поскольку все три (четыре в С11) типа отборочные считаются независимыми, все комбинации, похоже, разрешены. Но я в недоумении представляю себе реальную ситуацию, когда квалифицированный указатель restrict volatile
действительно имеет смысл:
uint32_t * restrict volatile pointer_to_some_uint32;
[РЕДАКТИРОВАТЬ: Для пояснения: оба указателя volatile
и restrict
применяются к указателю, а не к объекту, на который указывает!]
Является ли это конструкцией, разрешенной языком, но бесполезной сама по себе, или мне не хватает какой-либо области приложения, где это может быть ценным?