to post messages and comments.

← All posts tagged C++

C++

TIL en.cppreference.com А нахрена неквалифицированные перегруженные функции протекают из неймспейсов? С учётом того что перегруженные функции никак перегруженными не объявляются это выглядит как отстрел ноги, нет?

gist.github.com — Почему если в 48ой строке заменить явный захват указателя на сокет на & (захватывать всё по ссылке) всё 1) компилируется 2) но сегфолтится при любой попытке обратиться к переменной socket внутри лямбды? При этом, если определить socket вне лямбды вообще, то всё прекрасно захватывается по &.

Пришлось сесть за кресты впервые за последние года два. То ощущение когда внезапно на крестах проще городить абстракции и сложнее работать с данными чем в хаскеле.

C++

«…Звонит какой-то левый номер, и быдловатый голос «на ты», не представившись, начинает расспрашивать, как в крестах гарантировать корректность создания объекта на стеке…»

Раньше когда в основном приходилось писать код на крестах, я время от времени релаксировал тыкая что-нибудь наколенное на хаскеле. Теперь, когда основные задачи завязаны на хаскель, захотелось немного монотонных крестов.

C++

А Doxygen совсем-совсем не умеет c++11? А то лазить каждый раз в заголовки на предмет наличия constexpr-аттрибута очень утомительно. А ведь есть же ещё и finaly. И explicit у классов. И уж если пошла такая пьянка, есть enum class'ы которые как минимум надо выделять в документации, а по хорошему указывать от чего они унаследованы.

C++

Все попытки нагенерить строк constexpr'ами упираются в то что нужно из функции вернуть массив. И тут одно из двух: либо указывать длину получившейся строки в компил-тайме (что лишает нас возможности использовать ту же функцию повторно в рантайме), либо страдать. Это кстати вполне себе ответ на вопрос почему QString::number не constexpr.

C++

Есть шаблон:
template <char ... letters>
static char str[] = { letters ... };
С ним всё хорошо, он работает как надо. А вот все мои попытки написать шаблон для рекурсивного заполнения пакета шаблонных параметров упирается либо в проблемы линковки, либо в необходимость инициализации массива только строкой или списком инициализации. Весь день вчера с этим колупался. А ведь я всего-то хотел в компил-тайме развернуть int в строку.

C++

linux.org.ru — Меня затроллили на ЛОРе. Я не испытывал подобного рода переживаний с тех пор как один то ли тролль, то ли школьник с juick'а спрашивал у меня почему шарик с гелием летает, а без гелия — нет, ведь по закону Архимеда он теряет в весе ровно столько сколько весил бы вытесненный его объёмом гелий, что примерно равно или чуть меньше веса гелия в шарике, а значит всё ещё весит по меньшей мере как пустой шарик.

C++

Все слышали о том, что члены класса инициализируются в порядке их следования в объявление класса чтобы не заставлять компилятор в рантайме разбирать в каком порядке потом вызывать их деструкторы. А вот почему компилятор не предсортирует список инициализации сам в нужный порядок следования вместо того чтобы ругаться и сыпать предупреждениями?

Оказывается clang_complete не умеет дополнять код шаблонов в тот момент, когда значение параметров ещё неизвестны. В принципе это логично (поскольку шаблон может быть целиком и полностью переписан для конкретного параметра), но грустно. Интересно умеют ли это делать толстые IDE и какими соображениями они руководствуются при автокомплите.

C++

Перспектива делать обёртку вокруг контейнера со своими итераторами и прочими членами повергает меня в смесь уныния и отчаяние. Дьявольски хочется унаследовать контейнер и перекрыть пару не виртуальных методов…