Re[6]: количество аргументов из шаблона
От: B0FEE664  
Дата: 21.11.19 15:38
Оценка:
Здравствуйте, ArtDenis, Вы писали:

BFE>>Макросы всегда труднее поддерживать,

AD>Это спорный вопрос. Например, чтобы понять смысл Param<I>... мне пришлось напрячься + я не сразу въехал зачем нужен template <size_t> using Param = Arg, несмотря на то, что я стараюсь держать себя в курсе фишек новых плюсов.

А устройство BOOST_PP_ENUM_PARAMS напряжения не вызвало?
И каждый день — без права на ошибку...
Re[7]: количество аргументов из шаблона
От: ArtDenis Россия  
Дата: 21.11.19 18:00
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>А устройство BOOST_PP_ENUM_PARAMS напряжения не вызвало?


Я не изучал его устройства. Просто использовал по необходимости.
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: количество аргументов из шаблона
От: Vain Россия google.ru
Дата: 22.11.19 11:17
Оценка:
Здравствуйте, rg45, Вы писали:

A>>А что просто указатель на инты и их количество в bar не передать? Один предок, имхо получишь большее удобство пользования полиморфизмом времени исполнения, он же тебе явно нужен, раз ты хочешь виртуальный bar.

R>Тогда ему пришлось бы в рантайме контролировать число переданных фактических параметров. Организовывать диспетчеризацию и обрабатывать ошибки, которые мог бы предотвратить компилятор. Где же тут удобство?
А гору шаблонов с кучей параметров типа удобнее поддерживать?

R>И удобств меньше и качество кода страдает.

Сильно сомнительно, что про первое, что про второе.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: количество аргументов из шаблона
От: rg45 СССР  
Дата: 22.11.19 12:55
Оценка:
Здравствуйте, Vain, Вы писали:

V>Сильно сомнительно, что про первое, что про второе.


Ваше мнение очень ценно для нас.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[2]: количество аргументов из шаблона
От: Dair Россия https://dair.spb.ru
Дата: 23.11.19 06:44
Оценка:
Здравствуйте, andyp, Вы писали:

D>>Можно ли?


A>А что просто указатель на инты и их количество в bar не передать? Один предок, имхо получишь большее удобство пользования полиморфизмом времени исполнения, он же тебе явно нужен, раз ты хочешь виртуальный bar.


Увы, сторонний код, который у меня поправить нет возможности, предоставляет интерфейс такого вида:

(это Objective-C)
jsContext[@"function_name"] = ^JSValue*(JSValue* v1, JSValue* v2, JSValue* v3) {
}


Причём у блока (это objc-шный аналог лямбды, вот то что с "^" и до "}") — JSValue* на выходе и некоторый набор JSValue* на входе, при этом это не переменный список аргументов, поэтому va_list не воспользоваться, я уже пробовал.

Поэтому мне надо сформировать шаблон, который бы делал бы вот такой вызов.


Я сделаль, работает.
Но появилась другая проблема — как это спрятать внутрь чисто-c++-кода. Ответ — никак.

Потому что Objc++ шаблон не скомпилируется в чистом C++.
Re[2]: количество аргументов из шаблона
От: Dair Россия https://dair.spb.ru
Дата: 23.11.19 06:46
Оценка:
Здравствуйте, ArtDenis, Вы писали:

D>>Можно ли?

AD>Для этого больше подходит препроцессор (например BOOST_PP_ENUM_PARAMS), а не шаблоны

Кодогенерация — да, тоже выход в принципе.
Re[4]: количество аргументов из шаблона
От: Dair Россия https://dair.spb.ru
Дата: 23.11.19 06:46
Оценка:
Здравствуйте, Vain, Вы писали:

R>>Тогда ему пришлось бы в рантайме контролировать число переданных фактических параметров. Организовывать диспетчеризацию и обрабатывать ошибки, которые мог бы предотвратить компилятор. Где же тут удобство?

V>А гору шаблонов с кучей параметров типа удобнее поддерживать?

Так а нет же кучи параметров.

Один шаблон. Да, vairadic.
Re[5]: количество аргументов из шаблона
От: Vain Россия google.ru
Дата: 23.11.19 10:39
Оценка:
Здравствуйте, rg45, Вы писали:

V>>Сильно сомнительно, что про первое, что про второе.

R>Ваше мнение очень ценно для нас.
Это приятно, что ты помнишь про свой камингаут в политике.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[6]: количество аргументов из шаблона
От: rg45 СССР  
Дата: 23.11.19 10:42
Оценка: +1
Здравствуйте, Vain, Вы писали:

V>Это приятно, что ты помнишь про свой камингаут в политике.


Не понял, о чем ты. Хочешь говорить о политике — иди в политику. А здесь взрослые дяди обсуждают серьезные вещи.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 23.11.2019 10:48 rg45 . Предыдущая версия .
Re[3]: количество аргументов из шаблона
От: andyp  
Дата: 23.11.19 15:16
Оценка:
Здравствуйте, Dair, Вы писали:


D>Увы, сторонний код, который у меня поправить нет возможности, предоставляет интерфейс такого вида:


D>(это Objective-C)

D>
D>jsContext[@"function_name"] = ^JSValue*(JSValue* v1, JSValue* v2, JSValue* v3) {
D>}
D>


На сколько понял, ты умеешь вызывать такую мумбу-юмбу из плюсов и тебе надо ее дергать в зависимости от имени функции с нужными параметрами? Ну так сделай на плюсах map с ключом-именем функции, в мап положи std::function, в которые засунь лямбды, хватающие нужные параметры через замыкание. Внутри лямбд вызывай obj-c?
Re[4]: количество аргументов из шаблона
От: Chorkov Россия  
Дата: 25.11.19 08:08
Оценка: 9 (1)
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, Dair, Вы писали:



R>>>using Foo = Foo_<Ret, Arg, std::make_index_sequence<N>>;

D>>Отлично, спасибо большое!
D>>(не знал про std::make_index_sequence)

R>При желании можно было бы оформить небольшую утилитку, которая щьет сразу последовательность типов (tuple) вместо последовательности индексов. С другой стороны, я сомневаюсь, что этот инструмент найдет хоть сколько-нибудь широкое применение, тогда как цена всего-то одна лишняя строчка в базаовом классе Foo_.


Долго не понимал зачем нужен boost::mp11, а это как-раз оно и есть.

template <typename Ret, typename... Args>
class Foo_ {
public:
 virtual Ret bar(Args...) = 0;
};

template <typename Ret, typename Arg, size_t N >
using Foo = boost::mp11::mp_append< Foo_<Ret>, boost::mp11::mp_repeat_c< boost::mp11::mp_list<Arg>, N > >;
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.