Попытка разделить пакет параметров на две меньшие пакеты, используя индексную последовательность, а вложенные лямбдас прC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Попытка разделить пакет параметров на две меньшие пакеты, используя индексную последовательность, а вложенные лямбдас пр

Сообщение Anonymous »

Итак, я пытался придумать способ разделить заданный пакет параметров Args ... на два отдельных пакета args1 ... и args2 ... (при некотором указанном индексе, 3 в этом случае). Я также хотел как можно больше минимизировать накладные расходы (я скорее хочу избежать решений, включающих в себя экземпляры кортежей и std :: Apply , если это даже поможет).
sake sizeof ... (ts) == n+m . Решение, которое я придумал, заключалось в том, чтобы сначала создать индексную последовательность длины n , что позволило нам иметь доступ к пакету i1 ... индексов 0, 1, ..., N-1 . Я также поместил TS ... в тип кортежа и подсеил его с помощью Tuple_t . Затем, используя вторую лямбду, я могу использовать индексную последовательность, поместив std :: tuple_element_t && ... args1 в качестве первых аргументов, которые заставляют первые n элементы Args ... совпадать с Args1 ... и оставшимся с Args2 ... . Отсюда теперь я могу получить доступ к args1 ... , args2 ... и ts2 ... . Наконец, я обернул вещи в третью лямбду, чтобы также иметь возможность получить доступ к TS1 ... .

Код: Выделить всё

#include 

template 
constexpr void test(Ts&&... args) {}

template 
void split_pack(Ts&&... args) {
using tuple_t = std::tuple;
[&](std::index_sequence) {
[&](std::tuple_element_t&&... args1, Ts2&&... args2) {
std::cout 
Теперь проблема, с которой я сталкиваюсь, заключается в том, что, хотя он компилируется и работает просто хорошо, используя Clang, она не может компилировать с помощью GCC и дает неожиданный результат, используя MSVC. < /p>
gcc дает следующую ошибку: < /p>
 < /p>


Подробнее здесь: [url]https://stackoverflow.com/questions/79706366/trying-to-split-parameter-pack-into-two-smaller-packs-using-an-index-sequence-an[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать индексную последовательность для развертывания циклов?
    Anonymous » » в форуме C++
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Разделить строку на меньшие строки по переменной длины
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Недопустимый пакет, пакет содержит запрещенные вложенные пакеты, содержит отклоненный файл «Фреймворки»
    Anonymous » » в форуме IOS
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Spring: возврат на индексную страницу после отправки данных.
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Java 8 лямбдас, function.identity () или t-> t
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»