All streams
Search
Write a publication
Pull to refresh
42
0
Валерий Дмитриев @rotor

Пользователь

Send message
Только что прогнал по g++-4.9.2 c разными флагами. Все ок. Никаких проблем.
Я думаю UB более вероятно :)
На моих clang 3.2-7 и gcc 4.8.1 я воспроизвести не могу. Но по вашей ссылке видно, что выход происходит в строке 72
   assert ( deleter ); // TypeUnion::assign was not called
Т.е. каким то образом deleter == nullptr. Попробую найти GCC 4.9.0 и отдебажить.
Еще чуть выше мне подсказали о возможных проблемах с выравниванием. Может как то с этим связано. Короче, надо будет разобраться.
Копирование запрещено. На счет конструктора перемещения, похоже, вы правы. С TypeUnion(TypeUnion &&) = default я поторопился. Еще одни грабли.
Так он и вызывается автоматически. Во всех примерах. Гляньте еще разок.
У меня тоже компилируется. Я использую clang 3.2-7 и gcc 4.8.1. Ваш пример с Variant я посмотрю. Пока просто не успел. Обязательно разберусь с этим подходом.
Ага понял. Тогда да, — это грабли. Ладно, вечерком посмотрю, подправлю.
Может вернуть только один объект за раз

Потому что это не «фабрика», а «фабричный метод». Собственно переделать всю конструкцию в фабрику по общему принципу тоже можно. Просто на примере фабричного метода проще проиллюстрировать подход.
Деструктор явно вызывать не нужно, т.к.стековые объекты существуют лишь в границах содержащего их блока. Собственно с классическим фабричным методом тоже самое, если он возвращает не сырой указатель, а, как положено, unique_ptr.
Что касается применения, то оно ни чем не отличается от применения обычного фабричного метода с динамическим размещением. См. первый попавшийся пример из гугла
В этом случае как раз и получится то, что у меня представлено во втором варианте. Дело в том, что 1) доступ к членам union осуществляется по их именам, а не типам, и 2) мы не сможем создать объект такого объединения, если он будет содержать более одного не POD типа с нетривиальным конструктором. Попробуйте сами.
Спасибо за интересные ссылки.
По поводу выравнивания. Так ведь sizeof возвращает размер с учетом выравнивания. Так что не вижу с этим проблемы. Или какой то еще подвох здесь есть?
На счет std::aligned_union согласен, вместо unsigned char mem[usize] лучше использовать его.
Мне, напротив, нравится поход Фэйсбука к собственной инфраструктуре и разработке вообще.
А чем вас смущает, что фреймворк от «от фейсбука»?
Тоже присматриваюсь к этому фреймворку. Интересно было бы «пощупать» его в работе.
Автор, вы пробовали что-нибудь на нем делать? Поделитесь своими впечатлениями.
Да, было бы прекрасно, если бы вы смогли найти такую возможность.
В чем подвох тогда? Функционал интересный. Можно подумать как это прикрутить к своему проекту. Но перед тем как использовать хотелось бы оценить стоимость.
Вам же как-то надо элементарно окупать нагрузку на сервер. Если бы это было open source решение, то понятно. А а так легко попасть на vendor lock.
А я благодарен ТМ за то что они позаботились о моем времени и перенесли все оффтопиковые хабы на отдельный ресурс.
Теперь Хабр почти как раньше. Т.е. про IT, а не про космос и гаджеты. Хабр не невеста, всем угодить невозможно, но лично мне это нововведение очень нравится.
На самом деле сильно просела экономика в 14-м году. Я на себе ощутил это очень прилично. Все мои знакомые, занимающиеся бизнесом, отмечают этот факт.
Яндекс и Mail.ru — компании зарабатывающие на продаже рекламы. А рекламный рынок всегда проседает в первую очередь при деградации экономики. В 2008-2009 этот эффект был не так заметен (наоборот был рост интернет рекламы) из-за перераспределения рекламных бюджетов и не насыщенности рынка интернет рекламы. Сейчас ситуация другая.
Если вы попали в этот пост, то вероятно, вы подписаны на «Блог компании Яндекс». Не устраивает отпишитесь. Какие проблемы?
В вашем случае shared_ptr «не знает» размер массива, поэтому он никак не сможет вызвать деструкторы.
При создании shared_ptr можно указать свой deliter либо в C++11 есть контейнер std::array. Он здесь подошел бы идеально.
Не уверен, но, вроде бы, только unique_ptr умеет вызывать delete[] для массивов. shared_ptr тоже?
На первый взгляд выглядит весьма не плохо. Если развивать, мне кажется, может получиться очень даже круто. Со временем можно запилить приложение для планшетов/смартфонов сможете заработать.
Обязательно почитаю вашего Хоббита на досуге.
Я думаю этот пост будет не полон, если не упомянуть в нем о Mathapedia. И в частности о LaTeX2HTML5.

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity