Клиент не может знать заранее, что сервер понял бы запрос gzipped, но сервер может знать, что клиент примет тот.
Нет, не копируемые элементы не могут быть в классах контейнеров C ++.
Согласно стандарту, параграф 3 23.1, «Тип объектов, хранящихся в этих компонентах, должен соответствовать требованиям. CopyConstructible
типов (20.1.3), а также дополнительные требования присваиваемых
типов. "
Один из вариантов - создать список указателей на элементы (предпочтительно shared_ptr). Это не совсем то, что вам нужно, но с этим можно справиться.
Другой вариант - использовать библиотеку контейнера указателя ускорения . Это действует так же, как и стандартный контейнер std :: auto_ptrs, если бы такое было возможно: он сохраняет исключительное право собственности на свои элементы и не может быть скопирован. Он также имеет меньше накладных расходов, чем стандартный контейнер shared_ptrs.