![]() |
Страницы (3): « 1 [2] 3 » Показать все 35 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- с++: опять запутался в трёх соснах. (https://hlfx.ru/forum/showthread.php?threadid=4795)
thambs
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
ИМХО как делать нельзя должен сообщать компилятор, а не книжки
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro компилятор не подскажет тебе как лучше организовать структуру приложения. Если бы он умел это делать, надобность в программистах отпала бы сама-собой.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
FiEctro
Компилятор и сообщает, но все почему-то потом к нам на форум идут, с уточняющими вопросами.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
>no arrays of references
Это понятно. Я другое имел ввиду. Сейчас у меня функция выглядит так:
1 | template<typename...Is> |
2 | inline T& operator () (Is...args){ |
3 | const int n_args = sizeof...(args); |
4 | int xs[n_args] = {((int)args)...}; |
5 | int i = 0; for(int n=0; n<n_args; n++) i += xs[n] * helper[n]; |
6 | return data[i]; |
7 | } |
T& operator () (int& arg1, int& arg2, int& arg3, int& arg4) |
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Так ты хочешь изменять аргументы, беря их по ссылке, или ты так пытаешься "оптимизировать" код?
Если второе, то забудь. Ассемблерный код почти не отличается, особенно когда ты потом кладешь все аргументы в массив под который выделяется память в любом случае. Да и не думай, что ты умнее компилятора и процессора в 2016 году, когда пишешь на плюсах.
Ну если сильно хочется, то можешь сделать так:
template<typename...Ts> |
void func (Ts&...args) |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
1 | #include <initializer_list> |
2 |
3 | template<typename...Is> |
4 | int sum (Is&...args) { |
5 | int s = 0; |
6 | auto add = [&s](int arg) { s+=arg; }; // Лямба-функция |
7 | if (sizeof...(args)) |
8 | std::initializer_list<int>({ (add(args), 0)... }); |
9 | return s; |
10 | } |
ComradeAndrew
Я не говорю - всё бросить и оптимизировать. Я предлагаю избегать пессимизации, понадеявшись на мудрость компилятора. Некоторые этим грешат, увы.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А можешь пояснить (или лучше кинуть статьёй) как вот эта распаковка работает?
std::initializer_list<int>({ (add(args), 0)... }); |
//Конкретно, не понятно, для чего 0 в (add(args), 0) и как вообще подскобочное выражение работает. |
__________________
http://www.moddb.com/mods/monorail-quest
Временная зона GMT. Текущее время 16:57. | Страницы (3): « 1 [2] 3 » Показать все 35 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024