- 1
- 2
- 3
//! Set this value as an empty object.
/*! \post IsObject() == true */
GenericValue& SetObject() { this->~GenericValue(); new (this) GenericValue(kObjectType); return *this; }
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+3
//! Set this value as an empty object.
/*! \post IsObject() == true */
GenericValue& SetObject() { this->~GenericValue(); new (this) GenericValue(kObjectType); return *this; }
Парсер json'ок писали сверхлюди
https://github.com/Tencent/rapidjson/blob/master/include/rapidjson/document.h#L1188
https://en.cppreference.com/w/cpp/language/lifetime , раздел "Storage reuse".
Вся эта либа ориентированя ня максимальную производительнясть, так что ничего удивительного, что они используют такую низроуровнявую функционяльность.
Так работают некоторые контейнеры, например
Так что всё вроде логично
Зачем восклицательный знак?
а ниже типа summary
"this->" - это чтобы не перепутать с унарным оператором "~"?
Но я знаю какой ты следующий вопрос задашь