Size: a a a

2020 July 15

D

Danya in pro.cxx
Constantine Drozdov
а теперь полную твою версию
#define LIFT(foo) \
 [](auto&&... x) \
   noexcept(noexcept(foo(std::forward<decltype(x)>(x)...))) \
  -> decltype(foo(std::forward<decltype(x)>(x)...)) \
 { return foo(std::forward<decltype(x)>(x)...); }
Люблю С++
источник

AT

Andrew Titov in pro.cxx
Кажется, ваше утверждение про std::forward и const ничем не обосновано.std::forward и const ничем не обосновано.

Ошибся адресатом, извините.
источник

CD

Constantine Drozdov in pro.cxx
Разумеется, там просто всё в порядке с const и всё в порядке со ссылками :)
источник

Р

Роман in pro.cxx
Та ниче
источник

ИИ

Иванов Иванов... in pro.cxx
Vlad Serebrennikov
я больше про поддержку этого направления языком

смотрите, как с каждым новым стандартом в constexpr можно делать все больше и больше
хотелось бы, например, в стандартной библиотеке раздел для работы исключительно с тривиальными типами
источник

A

Alexander in pro.cxx
На самом деле эта ссылка далее уходит в темплейт с Arg&&... и уже оттуда статический анализатор ругается на no instance of overloaded function "std::forward" matches the argument list: (const MyClass), где на мой взгялд человека вчера познакомившегося с std::forwsrd не хватает амперсанда
источник

CD

Constantine Drozdov in pro.cxx
Иванов Иванов
хотелось бы, например, в стандартной библиотеке раздел для работы исключительно с тривиальными типами
Смотрите, когда вы говорите о каком-то методе решения проблемы, для начала стоит упомянуть, что за проблему вы решаете. Этим вы избавитесь от очень, очень большого количества взаимного недопонимания. Какая у вас проблема, что вам так захотелось сделать?
источник

CD

Constantine Drozdov in pro.cxx
Alexander
На самом деле эта ссылка далее уходит в темплейт с Arg&&... и уже оттуда статический анализатор ругается на no instance of overloaded function "std::forward" matches the argument list: (const MyClass), где на мой взгялд человека вчера познакомившегося с std::forwsrd не хватает амперсанда
давайте вы весь фрагмент кода покажете, а то с минимальным примером вы уже не справились :)
источник

A

Alexander in pro.cxx
void foo(const MyClass& class){
bar(class);
}

template <typename... Args>
void bar(Args&&... args)
{
baz(std::forward<Args>(args)...);
}
источник

AT

Andrew Titov in pro.cxx
А где baz?
источник

A

Alexander in pro.cxx
Так причем тут baz если вопрос в forward?
источник

AT

Andrew Titov in pro.cxx
Скорее всего, дело в сигнатуре функции baz.
источник

A

Alexander in pro.cxx
То что она принимает как раз const MyClass а не const MyClass&?
источник

A

Alexander in pro.cxx
Сча проверим
источник

В

Владимир in pro.cxx
Alexander
void foo(const MyClass& class){
bar(class);
}

template <typename... Args>
void bar(Args&&... args)
{
baz(std::forward<Args>(args)...);
}
Баз это бар?
источник

AT

Andrew Titov in pro.cxx
Alexander
То что она принимает как раз const MyClass а не const MyClass&?
Тут нет особой разницы.
источник

A

Alexander in pro.cxx
Нет, baz это baz
источник

В

Владимир in pro.cxx
Alexander
Нет, baz это baz
Вариативная войд функция я так понял. Просто выше определен бар, сбивает с толку, как выглядит весь код?
источник

A

Alexander in pro.cxx
void foo(const MyClass& class){
bar(class);
}

void baz(const MyClass& class){
}

template <typename... Args>
void bar(Args&&... args)
{
baz(std::forward<Args>(args)...);
}
источник

A

Alexander in pro.cxx
Владимир
Вариативная войд функция я так понял. Просто выше определен бар, сбивает с толку, как выглядит весь код?
Я бы с радостью скинул весь код, но он очевидно гораздо больше
источник