Добрый день. Возможно ли в языке сделать такое? template <class T> T get(int n, tuple<...> entries) { for constexpr (e : entries) { if (n == e.key) return e.value;...
Добрый день. Возник вопрос по C-API (встраивание). Есть ли легальный способ напрямую читать и модифицировать память нод таблиц Lua со стороны С? Решаемая задача: приложение, в...
Добрый вечер. Тема вопроса: sfinae-friendly подход к шаблонному коду (для истории). В случае написания низкоуровневых (библиотечных) шаблонных абстракций есть ли какие-то best...
Хотя блин, там же вроде list-initialization, тогда похоже на баг. А вообще, как понимать эти две противоречивые строки (cppreference): 10) In list-initialization, every value...
Добрый день. Изотерический вопрос: есть ли в рамках стандарта способы выделения места на стеке помимо создания локальных переменных? А динамического (не compile-time) размера ...
Добрый день. Вопрос: есть шаблонный класс с шаблоным конструктором — является ли класс complete в точке инстанцирования шаблонного конструктора? Пример: template <class T> cl...
🤔 Не уверен, что всегда просто их различить и обособить. Вот, например, я пишу враппер сильной типизации над типом, который в точности сохраняет семантику подкапотного типа. С...
Добрый день. Возвращаясь к вчерашней задаче (о фильтрации по разрешённым типам аргументов) — почему этот код компилируется? using filter = tuple<int, double>; template <clas...
Я про оригинальный if((std::lock_guard(mtx), cond)) — вот здесь разве вычисление первого выражения обязано завершиться раньше второго? То, что operator,() "вернёт" последний о...
Какой смачный кейс. А не концентрированное UB ли это, потому что порядок вычисления аргументов функции? На самом деле это же конструктор, и фигурные скобки тут вообще ничего н...
Это шо же, надо для любого геттера get() писать 6 перегрузок (костантность + ref-qualifiers)? У меня аж трещины по роже пошли. Выглядит как многострадальные спецификации исклю...
То есть, алиазинг становится возможным, только когда мы начинаем работать с этой памятью через void*, а для этого обязательно (!) придётся его во что-то скастовать. Если это c...
Добрый день. Возник вопрос: правильно понимаю, что до с++17 единственным способом гарантированно вызвать copy-elision было использование copy-list-initialization? Т.е., наприм...
Добрый вечер. В очередной раз обнаружил, что снова перестал понимать forward. Есть шаблон функции: template <class T> void foo(T&&); Правильно понимаю, что ни при каких услов...
Хорошо. Дальше: как понимаю, forward ничтоже сумняшеся попытается припаять && к T: foo(...){ bar(forward<T>(arg)); } И здесь сработает правило схлопывания ссылок: к lvalue не ...
А можно поподробнее, как сдлеать хоть какой-нибудь вектор с индексацией и push_back за О(1) в худшем случае (НЕ амортизированном)? Честно, мне трудно это предствить, а глубоко...
Помнится, раньше в C++ в принципе нельзя было написать stateful-аллокатор (например, с внутренним буфером), удовлетворяющий всем требованиям Стандарта (но это не точно). Разв...
Добрый вечер. Господа, а это нормально, что std::byte алиасится, как char/unsigned char, а самописный enum class my_byte : unsigned char {} ; — нет, хотя вроде как определения...
А, то есть это фактически нельзя называть copy-elision по определению? Наверное, да, спасибо. Тогда вопрос должен звучать так: вернуть из функции объект by value с удалёнными/...
То есть, правильно понимаю, что по механике не произойдет ничего страшного, если я допишу лишний && в bar(forward<T&&>(arg))?