
Aldar
15.05.2016
12:08:54
нет, если ты хочешь пользовательский тип данных в вектор положить

Anatoly
15.05.2016
12:08:55

Aldar
15.05.2016
12:09:18
да, неверно написал, ограничения на тот тип данных, который хочешь хранить в векторе

Andrei
15.05.2016
12:09:33
Зависит от того, что ты вызываешь.

Google

Aldar
15.05.2016
12:09:48
тот же пуш бек

Andrei
15.05.2016
12:09:50
Вообще никаких.
Сам по себе вектор никаких.

Aldar
15.05.2016
12:10:20
а что будет если конструктор перемещения выбросит исключение?

Andrei
15.05.2016
12:10:50
Ну выбросит и выбросит.
std::terminate
если он был помечен как noexcept

Aldar
15.05.2016
12:12:04
ну вот, значит он должен быть помечен как noexcept

Anatoly
15.05.2016
12:12:06
Я, кажется, понял вопрос. Можно ли будет этим самым вектором пользоваться после исключения дальше.

Aldar
15.05.2016
12:12:27
http://stackoverflow.com/questions/8001823/how-to-enforce-move-semantics-when-a-vector-grows

Andrei
15.05.2016
12:12:32
от типа T для вектора не требуется ничего, кроме полного определения и публичного деструктора
для пушбека кот констрефа требуется CopyInsertable
от rvalue MoveInsertable

Google

Andrei
15.05.2016
12:15:17
внутри вызывается std::move_if_noexcept
который возвращает либо констреф если нет мувконструктора или он есть но бросает, либо рвэлью реф

Aldar
15.05.2016
12:16:07
то есть если какой нить копи конструктор кинет исключение, то гарантируется базовая exception safety
то есть вектор будет в каком то непонятном состоянии, что пользоваться им дальше не имеет смысла

Andrei
15.05.2016
12:16:39
нет
для пушбека не базовая
для пушбека вообще ничего не будет

Aldar
15.05.2016
12:17:05
ну смотри, если при пушбеке будет реаллокация

Andrei
15.05.2016
12:17:06
там сильная гарантия

Aldar
15.05.2016
12:17:18
то есть выделится кусок памяти в 2 раза больше
потом начнётся вызов либо move либо копи конструктора, смотря что есть
для каждого объекта
и если в этот момент выкинется исключение

Andrei
15.05.2016
12:18:13
Еще раз, пушбек имеет строгую гарантию, всё будет ок.
Если выкинется исключение, то ничего страшного не произойдет.

Aldar
15.05.2016
12:18:34
как будет ок?

Andrei
15.05.2016
12:18:43
А почему не ок-то?

Aldar
15.05.2016
12:19:14
потому что часть объектов переместится к примеру, а часть нет
и что с этим хозяйством делать?

Andrei
15.05.2016
12:19:46
Такого вообще не может быть.

Google

Andrei
15.05.2016
12:19:52
Скопированы может быть?

Aldar
15.05.2016
12:20:32
такого не может быть, потому что вектор требует для move конструктора noexcept
?

Andrei
15.05.2016
12:20:36
Да.
Если move конструктор выкинет исключение это будет std::terminate
завершение программы

Aldar
15.05.2016
12:21:29
а если будет вызван конструктор копирования, то что произойдёт, часть объектов мы скопировали, а часть нет

Andrei
15.05.2016
12:21:43
Если там будет копирование, то ничего страшного, у того, что успело накопироваться будет вызваны опять же небросающие деструкторы.
И память возвращена системе

Aldar
15.05.2016
12:22:11
и будет кинуто снова исключение?

Andrei
15.05.2016
12:22:15
и исключение дальше пробросится пользователю
конечно

Andrei
15.05.2016
12:22:29
pushback это трайкетч
внутри catch(...)
revert; throw;

Aldar
15.05.2016
12:23:10
хм, сейчас понятнее стало
в общем требование noexcept для move constructor только

Andrei
15.05.2016
12:24:36
в пушбеке, да.
еще есть другие функции
emplace_back там

Google

Andrei
15.05.2016
12:25:00
resize

Сергей
15.05.2016
14:08:29
Поясните нубу
while (count -= this->FREQ >= 0)
в this->FREQ = 5
а отнимает за раз 1

Alex Фэils?︙
15.05.2016
14:09:37
потому что приоритет выше
у >=

Сергей
15.05.2016
14:09:46
Ну я понимаю
Но почему оно делает -- тогда

Admin
ERROR: S client not available

Alex Фэils?︙
15.05.2016
14:09:56
надо сделать while ( (count -= this->FREQ) >= 0)

Сергей
15.05.2016
14:10:00
Дада

Alex Фэils?︙
15.05.2016
14:10:10
потому что без скобок сначала >= сработает
он тебе 1 вернет

Сергей
15.05.2016
14:10:28
лол
спс

KrivdaTheTriewe
15.05.2016
14:12:51
это же не читабельно

Alex Фэils?︙
15.05.2016
14:13:02
не знаю
я так не делаю)

Google

Alex Фэils?︙
15.05.2016
19:45:43
кстати, напомните, что для html-гуя хорошо делать?
какая там клевая либа была
а, вспомнил. HTMLayout

Ned Ogl
15.05.2016
20:45:20
как по умолчанию линкует GCC?

Penter
15.05.2016
20:45:40

Ned Ogl
15.05.2016
20:45:55
статически или динамически?

Penter
15.05.2016
20:46:15

Ned Ogl
15.05.2016
20:46:22
ПО УМОЛЧАНИЮ!

Penter
15.05.2016
20:46:23
По -l так динамика ж
Динамика по дефолту

Ned Ogl
15.05.2016
20:46:34
gcc main.c -o main
то есть и STL линкуются динамически?

Penter
15.05.2016
20:47:11

Ned Ogl
15.05.2016
20:48:17
кхм
а если у меня есть статиклиба, как она линкуется?
то есть просто cpp и h к нему, после того как cpp превратили в о?

Penter
15.05.2016
20:48:49

Ned Ogl
15.05.2016
20:51:04

Penter
15.05.2016
20:51:22
Заголовки тупо копируются препроцессором
Полностью