30 Input/output library [input.output]

30.5 Iostreams base classes [iostreams.base]

30.5.3 Class ios_­base [ios.base]

30.5.3.5 ios_­base storage functions [ios.base.storage]

static int xalloc();

Returns: index ++.

Remarks: Одновременный доступ к этой функции нескольких потоков не должен приводить к возникновению файла data race.

long& iword(int idx);

Effects: Если iarray - нулевой указатель, выделяет массив long неопределенного размера и сохраняет указатель на его первый элемент в iarray. Затем функция расширяет массив, на который указывает, по iarray мере необходимости, чтобы включить элемент iarray[idx]. Каждый вновь выделенный элемент массива инициализируется нулем. Возвращенная ссылка недействительна после любых других операций с объектом.293 Однако значение указанного хранилища сохраняется, так что до следующего вызова copyfmtвызов iword с тем же индексом дает еще одну ссылку на то же значение. Если функция не работает294 и *this является подобъектом базового класса basic_­ios<> объекта или подобъекта, эффект эквивалентен вызову basic_­ios<>​::​setstate(badbit) производного объекта (который может вызвать ошибку failure).

Returns: Об успехе iarray[idx]. В случае сбоя действительный long& инициализируется значением 0.

void*& pword(int idx);

Effects: Если parray - нулевой указатель, выделяет массив указателей на void неопределенный размер и сохраняет указатель на свой первый элемент в parray. Затем функция расширяет массив, на который указывает, по parray мере необходимости, чтобы включить элемент parray[idx]. Каждый вновь выделенный элемент массива инициализируется нулевым указателем. Возвращенная ссылка недействительна после любых других операций с объектом. Однако значение указанного хранилища сохраняется, так что до следующего вызова copyfmtвызов pword с тем же индексом дает еще одну ссылку на то же значение. Если функция не работает295 и *this является подобъектом базового класса basic_­ios<> объекта или подобъекта, эффект эквивалентен вызову basic_­ios<>​::​setstate(badbit) производного объекта (который может вызвать ошибку failure).

Returns: Об успехе parray[idx]. В случае ошибки действительный void*& инициализируется значением 0.

Remarks: После последующего обращения к pword(int) тому же объекту более раннее возвращаемое значение может быть недействительным.

Реализация может реализовать как целочисленный массив, на который указывает, так iarray и массив указателей, на который указывает parray как разреженные структуры данных, возможно, с одноэлементным кешем для каждой.

например, потому что он не может выделить место.

например, потому что он не может выделить место.