@ProCxx

Страница 2293 из 2477
Казимир
22.08.2018
20:36:59
Как вывести переменное кол-во параметров template<typename... T> без рекурсии? (если это конечно вообще возможно) https://pastebin.com/Wz6Ut6wp

Denis
22.08.2018
20:40:28
можно еще обернуть их в тупл и циклом до размера тупла

Побитый
22.08.2018
20:46:31
можно еще обернуть их в тупл и циклом до размера тупла
Цикл по туплу? Это как? Я только обход с помощью рекурсии знаю.

Google
Denis
22.08.2018
20:48:21
тогда остановлюсь на первом своем ответе про фолд

Казимир
22.08.2018
20:49:13
лол, точно

Constantine
22.08.2018
20:49:22
а я понял, что туплю

прочитал ссылку)

Казимир
22.08.2018
20:49:40
а стоп

Constantine
22.08.2018
20:49:52
sizeof... это только количество

Побитый
22.08.2018
20:49:54
тогда остановлюсь на первом своем ответе про фолд
До 17 стандарта есть ещё трюк с инициализацией массива. Возможно его можно тут применить.

Казимир
22.08.2018
20:50:34
https://ideone.com/a87930
разные типы

Surreal
22.08.2018
20:50:43
Враппер над нужными типами.

Constantine
22.08.2018
20:50:47
вообще boost::fusion умеет что-то про циклы по туплу

Google
Побитый
22.08.2018
20:52:25
но ведь там данные разных типов?
Не, я про другой трюк. Там используется оператор "запятая", и массив как бы интами инициализируется, попутно выполняя полезную работу. Я щас с телефона, не могу пример написать(

Constantine
22.08.2018
20:53:30
что-то в духе "((void)(cout « x), 0)..." ?

Побитый
22.08.2018
20:53:37
Да

Surreal
22.08.2018
20:55:05
^ это с 17 стандарта.

Constantine
22.08.2018
20:55:48
https://ideone.com/XI4FjP

Да
Точно, забыл совсем про это

Побитый
22.08.2018
20:56:17
Во, именно это имел ввиду)

Constantine
22.08.2018
20:56:28
Я даже пользовался как-то раз, просто забыл)

Казимир
22.08.2018
20:57:16
https://ideone.com/XI4FjP
как это работает? не могу понять

Constantine
22.08.2018
20:57:40
как это работает? не могу понять
используется перечисление элементов массива

каждый элемент выглядит как "вывести параметр инпута, записать значение 0 в массив"

понятно стало?)

Казимир
22.08.2018
20:59:39
не очень)

зачем void

Constantine
22.08.2018
20:59:56
чтобы запятой перегруженной не было!

Казимир
22.08.2018
21:00:00
и блин вообще все-таки ничего не понятно)

Constantine
22.08.2018
21:00:25
посмотрите на выражение "(void)(cout << x), 0"

Evgeniy
22.08.2018
21:00:49
посмотрите на выражение "(void)(cout << x), 0"
бейте себя головой об стол пока оно не перестанет казаться нормальным

Constantine
22.08.2018
21:01:06
неперегруженный оператор запятая вычисляется слева направо и возвращает правое значение

вычисление левой части выведет х

Google
Constantine
22.08.2018
21:01:34
результатом всего оператора будет 0

итого мы написали выражение, которое выводит x в std::cout, а результатом вычисления является 0

остается только инициализировать набором из таких выражений массив

Казимир
22.08.2018
21:03:37
все равно не понимаю зачем тут void

Constantine
22.08.2018
21:03:51
потому что если вам нужна неперегруженная запятая

всегда надо кастить выражение к void

Казимир
22.08.2018
21:04:08
аа

все ок

туплю сорри)

Constantine
22.08.2018
21:26:23
@antoshkka хотите шутку?) https://godbolt.org/z/6nTmPn

Evgeniy
22.08.2018
21:27:19
'this' cannot be used in a static member function declaration

Constantine
22.08.2018
21:27:43
два компилятора в примере уверены, что можно

:)

Constantine
22.08.2018
21:28:27
а стандарт?
ой как не думаю, что стандарт разрешает this в статических функциях

Constantine
22.08.2018
21:29:35
9.4.1
можно ссылочкой?

Evgeniy
22.08.2018
21:29:46
Note: A static member function does not have a this pointer (9.3.2).

можно ссылочкой?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf страница 221 внизу

Google
Constantine
22.08.2018
21:31:40
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf страница 221 внизу
а -> decltype() вообще трактуется как что?

как выражение в контексте тела функции?

Konstantin
22.08.2018
22:24:32
парни, привет! У меня тут очень странная дичь. Есть дефайн в CMakeLists.txt, например, foo. add_definitions(-DFOO) так вот, хидер его не видит, а cpp файлы - видят

как это вообще возможно?

разобрался

Igor
23.08.2018
09:10:28
товарищи, а есть какой-то способ повлиять на такое поведение? https://godbolt.org/z/fi43fR чтобы кусок базового класса инициализировался виртуальной функцией из наследного

или к моим услугам только передача в конструктор нужного значения?

Egor
23.08.2018
09:11:36
вроде не рекомендуется виртуальные функции из конструкторов вызывать

Igor
23.08.2018
09:12:28
угу, даже у Майерса помню было про это меня тут просто упрекают что мол в шарпах такое прокатывает, вот я и задумался)

Egor
23.08.2018
09:12:42
нижний класс ещё не создался, поэтому вызывать нечего

Spoonson
23.08.2018
09:13:55
ну, технически всегда можно было сделать, что vptr устанавливается не в конструкторе, а до и тогда все вызывалось бы в нужный момент. Но я так понимаю, специально было сделано именно так как сделано

чтоб был меньше шанс отстрелить ногу

Igor
23.08.2018
09:15:01
аргументация, вроде бы, такова, что реализация виртуальной функции из наследника может пользоваться полями самого наследника, а они в этот момент ещё неинициализированы

Spoonson
23.08.2018
09:17:42
https://isocpp.org/wiki/faq/strange-inheritance#calling-virtuals-from-ctors там дальше даже воркараунды есть

Борис
23.08.2018
09:22:48
Как в cmake установку хидеров сделать отдельным таргетом? В свой каталог.

Есть add_custom_target. Вот как туда прикурутить команду install.

Stanislav
23.08.2018
09:25:33
Как в cmake установку хидеров сделать отдельным таргетом? В свой каталог.
add_library(my-library-name INTERFACE) target_include_directories(my-library-name INTERFACE include/) install(target my-library-name ...)

если пути в сорцах и пути инстала нужны разные то target_include_directories(my-library-name INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib> $<INSTALL_INTERFACE:include/> # <prefix>/include/ )

Antony
23.08.2018
10:31:34
@antoshkka хотите шутку?) https://godbolt.org/z/6nTmPn
Весёлая... А багу зарепортили в GCC?

Google
Stanislav
23.08.2018
10:34:41
надо и в студию репортить, 15.8 тоже это компилирует

Nikita
23.08.2018
11:08:31
Как смержить одну ветку в другую так, чтобы git show <commit> показывал, что изменилось?

(git)

Страница 2293 из 2477