![]() |
Страницы (9): « 1 2 3 [4] 5 6 7 8 » ... Последняя » Показать все 123 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- нубовопросы по c++ (https://hlfx.ru/forum/showthread.php?threadid=5083)
thambs
Да, правильно. Это всё нужно по большому счёту для шаблонного программирования.
__________________
XaeroX т.е. при компиляции конструкции
иcode:
template<int a> void foo(){ if constexpr (a>1) do_stuff(); };
эквивалентны и условный переход исчезнет для любого инстанса?code:
template<int a> void bar(){ constexpr bool tmp = a>1; if (tmp) do_stuff(); };
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Насколько я знаю, if constexpr ведёт себя идентично if в обычных функциях.
Разница возникает в constexpr-функциях. Такие функции не скомпилируются с обычным if, потому что он гарантирует, что лишь одна из веток будет выполняться, а вот constexpr-if гарантирует, что лишь одна из веток будет компилироваться.
Ещё раз - это всё нужно в метапрограммировании, когда мы из-за отсутствия if constexpr в С++14 (интересно, многие ли уже на С++17 перешли?) городим этажерки с std::enable_if.
__________________
А чо, если я в шестёрке напишу if( 1 ) она это не выкинет?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
мультидефайн в зависимости от параметра
Что-то так и не придумал как это сделать, лучше опишу что я хочу, а потом спрошу, можно-ли и как это сделать.
вообщем, хочется что-то вроде макроса, который в зависимости от параметра делает много дефайнов, и другого, который чистит за ним. Что-то вроде:
макрос def_args(n): делает
code:
#define $a foo<n> #define $b bar<n> ...
Можно-ли, и как?code:
#undef $a #undef $b
__________________
http://www.moddb.com/mods/monorail-quest
Вроде бы нельзя.
__________________
Снова вопрос. Есть например функция от n-аргументов, можно ли её как-то вызвать использовав массив из n-аргументов, не прописывая их вручную? Т.е. хочется что-то вроде рекурсивного шаблона, каждый из которого добавляет ещё один аргумент к частичному применению функции:
code:
foo(...); int xs[n]; apply<xs,n>(foo);
__________________
http://www.moddb.com/mods/monorail-quest
Я не знаю способа так сделать. Если узнаешь - напиши.
Но вообще говоря, если ты хочешь передавать аргументы в функцию как массив, то и надо передавать массив, можно даже compile time (std::array).
Идея вариативных шаблонов в том, чтобы поддерживать произвольное число аргументов у функции, а у тебя число аргументов фиксированное.
__________________
thambs here, I googled that for you https://embeddedartistry.com/blog/2...unctions-c-vs-c
может, там найдутся варианты.
Добавлено 11-03-2019 в 12:20:
https://stackoverflow.com/questions...c-function-in-c
в ответах нашлись вроде.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ стесняюсь спросить, а по каким именно ключевым словам ты гуглил? Вроде бы это вообще не по теме.
__________________
Тебе зайцев не жалко? И постыдился, и спросил
А я, похоже, не понял его вопроса.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Зачем битовые сдвиги оформляют в табличку? Неужели такой подход даёт хоть какой-то выигрыш в производительности? В качестве примера вальвовский bistream buffer.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А вот поясните мне, что-то я совсем запутался с тем как c++ осуществляет неявное преобразование типов.
1 | #include <complex> |
2 | #include <cmath> |
3 | typedef std::complex<float> cfloat; |
4 | int main(int argc, char **argv){ |
5 | int i,n; constexpr cfloat _coeff(0, (-4)*atan2(1,1)); |
6 | cfloat x = exp(_coeff * cfloat(i)/cfloat(n)); //fine |
7 | cfloat y = exp(_coeff * i/cfloat(n)); //fail |
8 | return 0; |
9 | } |
__________________
http://www.moddb.com/mods/monorail-quest
Ну а слеш перегружен для такой пары типов?
Не знаю даже, с чего начать свой нубский вопрос. Столкнулся с порчей памяти, которую никак не могу отдебажить. Проявляется в FLTK-поделке при повторении операций undo-redo, реализованных через перезапись структов их сохранёнными состояниями (сейчас через приведение, но через мемкпю тоже делал, разницы нету). Поправил все невысвобождения, какие смог найти, проверил аллоцируемые размеры. В результате под линуксом уже не валится, но под вендой продолжает. Самое интересное, данные в слепках структов верные, и анду-реду даёт ожидаемые результаты. Но на какой-то по счёту тудымсюдым (причём это число воспроизводимое) память оказывается перепаханной.
Когда у вас, опытные товарищи, начинается чертовщина с порчей памяти, где кроме аллокации-высвобождения вы ищете её причины?
Временная зона GMT. Текущее время 04:17. | Страницы (9): « 1 2 3 [4] 5 6 7 8 » ... Последняя » Показать все 123 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024