HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > нубовопросы по c++
Страницы (9): « 1 2 3 [4] 5 6 7 8 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


thambs
Да, правильно. Это всё нужно по большому счёту для шаблонного программирования.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 174966

Старое сообщение 06-02-2019 17:56
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



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

Сообщить модератору | | IP: Записан
Сообщение: 174967

Старое сообщение 06-02-2019 18:03
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


thambs
Насколько я знаю, if constexpr ведёт себя идентично if в обычных функциях.
Разница возникает в constexpr-функциях. Такие функции не скомпилируются с обычным if, потому что он гарантирует, что лишь одна из веток будет выполняться, а вот constexpr-if гарантирует, что лишь одна из веток будет компилироваться.
Ещё раз - это всё нужно в метапрограммировании, когда мы из-за отсутствия if constexpr в С++14 (интересно, многие ли уже на С++17 перешли?) городим этажерки с std::enable_if.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 174968

Старое сообщение 06-02-2019 18:48
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



А чо, если я в шестёрке напишу 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'

Сообщить модератору | | IP: Записан
Сообщение: 174969

Старое сообщение 06-02-2019 19:43
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



мультидефайн в зависимости от параметра

Что-то так и не придумал как это сделать, лучше опишу что я хочу, а потом спрошу, можно-ли и как это сделать.

вообщем, хочется что-то вроде макроса, который в зависимости от параметра делает много дефайнов, и другого, который чистит за ним. Что-то вроде:

макрос def_args(n): делает

code:
#define $a foo<n> #define $b bar<n> ...

и undef_args:
code:
#undef $a #undef $b
Можно-ли, и как?

__________________
http://www.moddb.com/mods/monorail-quest

Сообщить модератору | | IP: Записан
Сообщение: 175109

Старое сообщение 19-02-2019 14:08
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Вроде бы нельзя.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 175112

Старое сообщение 19-02-2019 14:59
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Снова вопрос. Есть например функция от n-аргументов, можно ли её как-то вызвать использовав массив из n-аргументов, не прописывая их вручную? Т.е. хочется что-то вроде рекурсивного шаблона, каждый из которого добавляет ещё один аргумент к частичному применению функции:

code:
foo(...); int xs[n]; apply<xs,n>(foo);

__________________
http://www.moddb.com/mods/monorail-quest

Отредактировано thambs 10-03-2019 в 12:53

Сообщить модератору | | IP: Записан
Сообщение: 175589

Старое сообщение 10-03-2019 12:48
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Я не знаю способа так сделать. Если узнаешь - напиши.
Но вообще говоря, если ты хочешь передавать аргументы в функцию как массив, то и надо передавать массив, можно даже compile time (std::array).
Идея вариативных шаблонов в том, чтобы поддерживать произвольное число аргументов у функции, а у тебя число аргументов фиксированное.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 175591

Старое сообщение 10-03-2019 13:05
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


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]

Сообщить модератору | | IP: Записан
Сообщение: 175602

Старое сообщение 11-03-2019 09:20
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


~ X ~ стесняюсь спросить, а по каким именно ключевым словам ты гуглил? Вроде бы это вообще не по теме.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 175610

Старое сообщение 11-03-2019 15:35
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Тебе зайцев не жалко? И постыдился, и спросил
А я, похоже, не понял его вопроса.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 175624

Старое сообщение 11-03-2019 18:38
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Зачем битовые сдвиги оформляют в табличку? Неужели такой подход даёт хоть какой-то выигрыш в производительности? В качестве примера вальвовский 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'

Сообщить модератору | | IP: Записан
Сообщение: 175688

Старое сообщение 14-03-2019 21:55
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



А вот поясните мне, что-то я совсем запутался с тем как c++ осуществляет неявное преобразование типов.

C++ Source Code:
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

Отредактировано thambs 27-03-2019 в 21:59

Сообщить модератору | | IP: Записан
Сообщение: 176556

Старое сообщение 27-03-2019 21:58
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Ну а слеш перегружен для такой пары типов?

Сообщить модератору | | IP: Записан
Сообщение: 176558

Старое сообщение 27-03-2019 22:29
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Не знаю даже, с чего начать свой нубский вопрос. Столкнулся с порчей памяти, которую никак не могу отдебажить. Проявляется в FLTK-поделке при повторении операций undo-redo, реализованных через перезапись структов их сохранёнными состояниями (сейчас через приведение, но через мемкпю тоже делал, разницы нету). Поправил все невысвобождения, какие смог найти, проверил аллоцируемые размеры. В результате под линуксом уже не валится, но под вендой продолжает. Самое интересное, данные в слепках структов верные, и анду-реду даёт ожидаемые результаты. Но на какой-то по счёту тудымсюдым (причём это число воспроизводимое) память оказывается перепаханной.
Когда у вас, опытные товарищи, начинается чертовщина с порчей памяти, где кроме аллокации-высвобождения вы ищете её причины?

Сообщить модератору | | IP: Записан
Сообщение: 182740

Старое сообщение 21-08-2019 15:44
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 15:23. Новая тема    Ответить
Страницы (9): « 1 2 3 [4] 5 6 7 8 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > нубовопросы по c++
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024