Непонятки со стандартом
От: Аноним  
Дата: 25.01.12 12:00
Оценка:
Приветствую.

Как по стандарту прав. называть типы bool, char, char16_t, char32_t, wchar_t?

Например, char.

Понятное дело, что это арифметический тип, который относится к фундаментальным типам

3.9.1 Fundamental types [basic.fundamental]

8 Integral and floating types are collectively called arithmetic types.


3.9.1 Fundamental types [basic.fundamental]

7 Types bool, char, char16_t, char32_t, wchar_t, and the signed and unsigned integer types are collectively
called integral types.


Интегральные типы — это целочисленные типы

3.9.1 Fundamental types [basic.fundamental]

7 A synonym for integral type is integer type.


Получается, char относится либо к стандартным знаковым целочисленным типам, либо к стандартным беззнаковым целочисленным типам, в зависимости от signed (либо просто char) / unsigned

3.9.1 Fundamental types [basic.fundamental]

2 There are five standard signed integer types : “signed char”, “short int”, “int”, “long int”, and “long long int”.


3.9.1 Fundamental types [basic.fundamental]

3 For each of the standard signed integer types, there exists a corresponding (but different) standard unsigned
integer type: “unsigned char”, “unsigned short int”, “unsigned int”, “unsigned long int”,
and “unsigned long long int”.


Однако почему его называют отдельно от signed / unsigned integer types?

3.9.1 Fundamental types [basic.fundamental]

7 Types bool, char, char16_t, char32_t, wchar_t, and the signed and unsigned integer types are collectively
called integral types.


А к чему тогда относятся bool, char16_t, char32_t, wchar_t, кроме как к фундаментальным арифметическим и интегральным (целочисленным) типам?

Как их прав. называть?

По поводу составных типов вообще отдельный разговор.

3.9.2 Compound types [basic.compound]

1 Compound types can be constructed in the following ways:
— arrays of objects of a given type, 8.3.4;
...


Получается, массив объектов — это уже составной тип?

int a[50]; // составной тип


3.9.2 Compound types [basic.compound]

1 Compound types can be constructed in the following ways:
...
— functions, which have parameters of given types and return void or references or objects of a given
type, 8.3.5;
...


Функции — это тоже составной тип?

void f () {} // составной тип


3.9.2 Compound types [basic.compound]

1 Compound types can be constructed in the following ways:
...
— pointers to void or objects or functions (including static members of classes) of a given type, 8.3.1;
— references to objects or functions of a given type, 8.3.2. There are two types of references:
— lvalue reference
— rvalue reference
...


Указатели и ссылки — это тоже составные типы?

В общем, что-то я запутался.
Re: Непонятки со стандартом
От: Centaur Россия  
Дата: 25.01.12 12:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Получается, char относится либо к стандартным знаковым целочисленным типам, либо к стандартным беззнаковым целочисленным типам, в зависимости от signed (либо просто char) / unsigned


Неправильно. char, signed char и unsigned char — это три отдельных разных типа. Поэтому signed char перечисляют в стандартных знаковых типах, unsigned char — в стандартных беззнаковых, а char — отдельно.

А>По поводу составных типов вообще отдельный разговор.


Для отдельных разговоров имеет смысл открывать отдельные темы.

А>Получается, массив объектов — это уже составной тип?

А>Функции — это тоже составной тип?
А>Указатели и ссылки — это тоже составные типы?

Написано, что составные — значит, составные.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.