
Aidar
02.10.2018
15:53:11
хм

Ioann V
02.10.2018
15:55:58
я спрашивал же про args

Google

Aidar
02.10.2018
15:56:18

Ioann V
02.10.2018
15:56:27
здесь аргс - это аргументы функции. смотри внимательно, тут два декл вала.

Aidar
02.10.2018
15:56:37
я и сказал про args

Ioann V
02.10.2018
15:56:42

Aidar
02.10.2018
15:57:16
ну можно и просто аргуметы упихать наверн
какая разница

Ioann V
02.10.2018
15:57:59
разница большая. Если сделано, значит смысл кой то есть. Вопрос к тем кто знает наверняка, какой?

Aidar
02.10.2018
15:58:23
что делает declval что не делает остальное? создает временные объекты как будто
еще может аргументов там нет
result_of?
invoke_result?
какой из

Google

Ioann V
02.10.2018
15:58:55
так может тут форвард покатит?

Aidar
02.10.2018
15:59:48
это все классы
ну смысле только шаблонные

Ioann V
02.10.2018
16:00:12
ага, есть такое

Aidar
02.10.2018
16:00:23
как ты псевдовызовешь функцию зная только тип аргумента?

Ioann V
02.10.2018
16:01:18

Aidar
02.10.2018
16:01:32
decltype(foo(T{})) не подходит

Побитый
02.10.2018
16:01:45

Aidar
02.10.2018
16:01:48
потомучто у T может не быть конструктора

Ioann V
02.10.2018
16:01:59
Так я ж про второй деклвал

Aidar
02.10.2018
16:02:14
decltype(foo(declval<T>())) только
я про аргументы

Ioann V
02.10.2018
16:02:44

Igor
02.10.2018
16:02:49

Aidar
02.10.2018
16:02:55
форварду надо чтото передать

Igor
02.10.2018
16:02:56
а поскольку такого не бывает, то можно пофантазировать, как этого бы хотелось)

Ioann V
02.10.2018
16:03:30
точно. туплю. сорян. вроде понял, или нет... Чем мешает отсутствие конструктора у Т?

Google

Ioann V
02.10.2018
16:03:46
Мы же тип передаем.

Aidar
02.10.2018
16:03:55

Moon
02.10.2018
16:04:12
хм

Aidar
02.10.2018
16:04:17
ошибка будет

Ioann V
02.10.2018
16:05:04
так вродь деклвал не создает ничего, а только добавляет ссылку?

Aidar
02.10.2018
16:05:39
он ничего не принимает, это главное
он генерит псевдозначение

Ioann V
02.10.2018
16:06:08
ничего не понимаю
он генерит ссылку ж

Aidar
02.10.2018
16:06:23
рассматривай его просто как T foo<T>()
тебе надо получить тип результата bar(T) что ты сделаешь?

Constantine
02.10.2018
16:07:01
template <typename T> T declval();

Ioann V
02.10.2018
16:07:39
ничего себе, буду иметь в виду. Чот я по цппрефу этого не понял. Thx гайз.

Aidar
02.10.2018
16:07:59

Admin
ERROR: S client not available

Constantine
02.10.2018
16:08:05

Aidar
02.10.2018
16:08:21
чо?
https://en.cppreference.com/w/cpp/utility/declval

Constantine
02.10.2018
16:08:27
омг зачем

Google

Aidar
02.10.2018
16:08:40
потомучто чтото не умеет копироваться наверн
и перемещаться

Zorro
02.10.2018
16:11:33
> а есть бенчмарки, которые говорят что действительно при foo<5>() циклы разворачиваются
да, конечно.

Ioann V
02.10.2018
16:11:34
То есть это нужно в тех случаях, когда у нас в аргументах функции, есть тип Т, переданный по значению, но не имеющий конструктора копирования?

Constantine
02.10.2018
16:12:21

Aidar
02.10.2018
16:12:39
может когда Foo(Foo&&) = delete;
и bar(Foo&&){}

Ilia
02.10.2018
16:13:05
Что же странного?

Zorro
02.10.2018
17:14:01
а еще вопрос из 96 года, вот у меня массив double выровненный, я хочу его мувнуть. Если использовать memmove, оно будет слишком generic и проверять вначале, а выровнен ли он, чтобы запустить по байту краешки итп. Есть ли плюсовый аналог который понимает в типы и не будет заморачиваться, а сделает сразу как надо?

Ilia
02.10.2018
17:14:40

Zorro
02.10.2018
17:14:44
aligned

Ilia
02.10.2018
17:15:14
aligned
Ну и наверное alligned array , да?

Zorro
02.10.2018
17:15:24
дык

Ilia
02.10.2018
17:16:01

Zorro
02.10.2018
17:18:47
overlapping норм?

Alexander
02.10.2018
17:22:39

Ilia
02.10.2018
17:23:20
overlapping норм?
/cppref std::copy
1) Copies all elements in the range [first, last) starting from first and proceeding to last - 1. The behavior is undefined if d_first is within the range [first, last). In this case, std::copy_backward may be used instead.
/cppref std::copy


FailsBot
02.10.2018
17:24:04
Search results for "std::copy"
1. std::copy
2. std::string::copy
3. std::wstring::copy
4. std::u16string::copy
5. std::u32string::copy
6. std::filesystem::copy
7. std::char_traits::copy
8. std::pmr::string::copy
9. std::string_view::copy
10. std::basic_string::copy
11. std::pmr::wstring::copy
12. std::wstring_view::copy
13. std::pmr::u16string::copy
14. std::pmr::u32string::copy
15. std::u16string_view::copy
16. std::u32string_view::copy
17. std::basic_string_view::copy
18. std::experimental::filesystem::copy
19. std::experimental::string_view::copy
20. std::experimental::wstring_view::copy
21. std::experimental::u16string_view::copy
22. std::experimental::u32string_view::copy
23. std::experimental::basic_string_view::copy
24. std::remove_copy

Zorro
02.10.2018
17:25:33
щас сравню

Google

Andrew
02.10.2018
17:48:40
фронтенд?

Aidar
02.10.2018
18:07:11
Еще не юзай ни массивы ни меммув ни прочие сишные структуры
Хочешь делать вручную - обарачивай