Согласно стандарту C ++ (7.1.6.2 Простые спецификаторы типов)
3 Когда допускается несколько спецификаторов простого типа, они могут свободно смешиваться с другими спецификаторами decl в любом порядке.
Так, например, следующая декларация действительна
long static long const int x = 10;
Вы можете даже использовать constexpr
спецификатор вместе с const
классификатором. Например
constexpr long static long const int x = 10;
Кстати, мы забыли о спецификаторе signed
! Давайте добавим это, например, перед деклараторомx
constexpr long static long const int signed x = 10;
В Си вы также можете использовать несколько классификаторов типов в одной и той же последовательности спецификатора объявления. Согласно стандарту C (6.7.3 Классификаторы типов)
5 Если один и тот же спецификатор появляется более одного раза в одном и том же списке спецификаторов-спецификаторов, либо напрямую, либо через одну или несколько типов определений, поведение такое же, как если бы оно появилось только один раз ....
Так, например, в C также допустимо следующее объявление
const long const long static const int const signed x = 10;
Так что если вам платят в соответствии с количеством символов, набранных в программе, то я советую вам использовать такие объявления. :)
std::swap
. Это не скомпилируется, если типы не идентичны.