@ProCxx

Страница 2146 из 2477
Vhäldemar
20.06.2018
13:03:23
магия!

Alexey
20.06.2018
13:03:24
А если бы это была не std::function, а свой собственный тип, писанный руками?

Google
Vhäldemar
20.06.2018
13:03:46
что за ИДЕ

Alexey
20.06.2018
13:03:51
(из std::function вроде как эти first_arg_type повыкинули)

Constantine
20.06.2018
13:03:57
Там хитрые правила, вроде, но как я понял, внутренние тайпалиасы классов разворачиваются

Aidar
20.06.2018
13:04:02
Думаю, не важно
ты вроде говорил что раскрывть тип до конца плохо, нет?

Alexey
20.06.2018
13:04:04
Думаю, не важно
а что за магическая IDE?

Constantine
20.06.2018
13:04:19
Alexey
20.06.2018
13:04:33
интересно как оно на 2015...

Constantine
20.06.2018
13:04:40
вроде правила такие же

Vhäldemar
20.06.2018
13:04:41
ну, хоть не на 2008

Constantine
20.06.2018
13:04:42
я не реверсил

он разворачивает typedef-ы в классах и ищет максимально похожий для внешних тайпдефов

что-то такое

Google
Alexey
20.06.2018
13:06:32
decltype(std::declval<X>())?
ну, надо еще референс убрать, видимо.

Vhäldemar
20.06.2018
13:09:52
пиши багу

или фича риквест

Alexey
20.06.2018
13:09:57
ну, я в qt creator'e и щупаю пока что.

надо сделать, чтобы пользователям не было больно в qt creator'e, clion, msvs2015

Vhäldemar
20.06.2018
13:10:51
значит вендор должен позаботиться, такео в стандарт никому не нужно

Alexey
20.06.2018
13:11:19
все вендоры всех IDE?

Vhäldemar
20.06.2018
13:11:47
а что, проще будет, если поменяют стандарт?

ради чего?

Alexey
20.06.2018
13:12:17
я пока ничего не предлагаю менять.

Vhäldemar
20.06.2018
13:12:18
QT Crator не сможет - с него свалят

порешает market

всяко,конкуренция есть

Constantine
20.06.2018
13:12:49
это в любом случае вопрос IDE

Alexey
20.06.2018
13:13:11
в 2015 норм
спасибо

ну, IDE тут приходится полагаться на эвристики. нет четкого правила ведь.

а так можно было бы подсказывать.

Vhäldemar
20.06.2018
13:14:04
и так там столько евристик, что одной больше пофиг

Google
Igor
20.06.2018
13:14:05
правила нет, но is_same<F::first_argument_type, int>::value == 1, так что с точки зрения стандарта всё итак уже работает

Alexey
20.06.2018
13:16:03
правила нет, но is_same<F::first_argument_type, int>::value == 1, так что с точки зрения стандарта всё итак уже работает
ну там цепочка же typedef'ов может быть. и все эти алиасы типов будут is_same. до куда именно раскрывать - не очень ясно.

А на что в c++17/20 предлагается заменить first_argument_type в std::function?

Vyacheslav
20.06.2018
13:23:28
На шаблонную магию какую-нибудь? https://stackoverflow.com/questions/30501496/iterate-over-function-parameter-types-in-compile-time

Alexey
20.06.2018
13:23:44
perfect forwarding
А где про это прочитать можно? То есть мне допустим нужно сконструировать функцию с первым и третьим аргументов от вот той вот функции.

Alexey
20.06.2018
13:24:38
На шаблонную магию какую-нибудь? https://stackoverflow.com/questions/30501496/iterate-over-function-parameter-types-in-compile-time
кажется в c++20 хотят какой-то рефлекшн времени компиляции запилить. чуть ли не через constexpr.

Aidar
20.06.2018
13:24:58
странно кстати first/second, это со времен bind1st?

Constantine
20.06.2018
13:25:21
это видимо со времен unary_function и binary_function

Aidar
20.06.2018
13:25:30
логично было бы ::arg_type<1>

но хз как реализовывать, копипастой?

Constantine
20.06.2018
13:25:53
это вроде работало пушо наследовались unary_function и binary_function

Aidar
20.06.2018
13:25:55
а стоп

изи же

Constantine
20.06.2018
13:26:34
технически не очень понятно, зачем вычислять точные аргументы функции

хотя у меня на это трейты есть)

Mikhail Voronov
20.06.2018
13:26:46
но хз как реализовывать, копипастой?
https://functionalcpp.wordpress.com/2013/08/05/function-traits/

Constantine
20.06.2018
13:27:19
https://functionalcpp.wordpress.com/2013/08/05/function-traits/
да, похоже на то, что я как прототип использовал)

Aidar
20.06.2018
13:27:25
Google
Mikhail Voronov
20.06.2018
13:27:57
они в бусте вроде не так давно ещё появились

Roma
20.06.2018
13:28:48
Всем привет, хочу начать кодить свой игровой ддвижок, может ктото подскажеть, откуда можна взять хороший материал?

Constantine
20.06.2018
13:29:34
у меня только вот так почему-то using arity = std::integral_constant<size_t, sizeof...(Args)>;

https://functionalcpp.wordpress.com/2013/08/05/function-traits/
там, правда, надо еще noexcept версии подпиливать)

и для member function разворачивать ref qualifier

Mikhail Voronov
20.06.2018
13:34:00
Александр
20.06.2018
13:38:35
Admin
ERROR: S client not available

Mikhail Voronov
20.06.2018
13:40:41
блин, я криво прочитал сообщение(

Vyacheslav
20.06.2018
13:40:54
кажется в c++20 хотят какой-то рефлекшн времени компиляции запилить. чуть ли не через constexpr.
Нужно больше вложенных абстракций. Я уже переживаю за молодых разработчиков.

Vyacheslav
20.06.2018
13:42:15
Alexander
20.06.2018
13:42:22
В С++20 никакой рефлексии не будет

Alexey
20.06.2018
13:42:43
А когда будет? 23?

Alexander
20.06.2018
13:43:34
при хорошем раскладе - да. при плохом - в 26

Igor
20.06.2018
13:43:44
кажется в c++20 хотят какой-то рефлекшн времени компиляции запилить. чуть ли не через constexpr.
да, Саттер очень топит за constexpr { for (p : this::some_function.parameters) static_assert(is_uppercase(p.name[0])); } и подобные чудеса, но раньше 23 это не появится

Alexander
20.06.2018
13:45:01
сейчас бы на constexpr ещё один язык придумать ?

я гораздо более внимательно слежу за успехами группы по тулингу

это намного более важно по крайней мере для меня, чем констекспр

Google
Igor
20.06.2018
13:45:41
сейчас бы на constexpr ещё один язык придумать ?
зачем? всё же идет к тому, что язык будет тот же самый, но в компилтайме

Alexey
20.06.2018
13:48:10
лямбды в constexpr уже разрешены вроде

Constantine
20.06.2018
13:48:28
просто такие фрагменты-подпрограммы у нас нынче традиционно делаются вызовом лямбд

Bogdan
20.06.2018
13:49:33
Какой библиотекой можно отслеживать обработку нажатий под linux?

Constantine
20.06.2018
13:52:05
речь про [&](){ something(); smth(); }();?
ага, я тут даже набрасывал auto deciphered = [&] () { auto fail = [&] () -> std::vector<BYTE> { failed = true; return {}; }; auto deciphered = /*expression*/; if (/*condition 1*/) return fail(); if (/*condition 2*/) return fail(); return deciphered; }();

Igor
20.06.2018
13:58:18
Должна ли IDE раскрывать тайпдефы это непростой вопрос. Например вам захочется чтобы вместо std::string в параметре показывалось std::basic_string<char, std::char_traits<char>, std::allocator<char>>? Априори неясно хочется видеть тип с или без тайпдефов.

Igor
20.06.2018
13:59:34
ага, я тут даже набрасывал auto deciphered = [&] () { auto fail = [&] () -> std::vector<BYTE> { failed = true; return {}; }; auto deciphered = /*expression*/; if (/*condition 1*/) return fail(); if (/*condition 2*/) return fail(); return deciphered; }();
соль constexpr-blocks всё же в том, что их можно будет класть хоть в глобальный скоуп, хоть прямо в описание класса, не создавая фиктивные переменные и не ограничиваясь телом метода

Igor
20.06.2018
14:04:43
не совсем, статик блок вызывается при первом обращении к классу в рантайме, а здесь будет произвольный код в компилтайме, знающий о своём окружении и о прочей рефлексии

Terik23
20.06.2018
14:13:36
А прополз или какая еще бумага есть? я бы глянул

Igor
20.06.2018
14:16:00
если не ошибаюсь, http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0633r0.pdf

и вот эти два сильно похожих доклада https://www.youtube.com/watch?v=6nsyX37nsRs https://www.youtube.com/watch?v=4AfRAVcThyA

Влад
20.06.2018
14:23:22
А можно ли как-то в С++ получить данные для переменной по адресу? Допустим, у меня есть класс A, и такой код: { size_t c; if (true) { A *a = new A; size_t c = (size_t) a; } } Можно ли с помощью значения 'c' получить данные в указателе 'a'?

Aleksandr
20.06.2018
14:24:55
скасти обратно в A* и разыменуй

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