Что Boost :: Hana :: Всегда делает больше, чем просто «всегда возвращает свой первый аргумент»?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что Boost :: Hana :: Всегда делает больше, чем просто «всегда возвращает свой первый аргумент»?

Сообщение Anonymous »

На странице DOC Boost :: hana :: Always < /code> я читаю, что < /p>

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

always(x)
- функция, такая, что

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

always(x)(y...) == x
для любого y ... .

Это заставляет меня думать, что это не должно вести себя иначе, чем этот лямбда: [] (Auto const & ...) {return false; } .
как бы это ни было. Например, следующий код печатает 11 , но если я изменю третью лямбду на hana :: always (false) , то он печатает 00 , показывая, что всегда глотает любой аргумент.

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

#include 
#include 
#include 

auto fun = boost::hana::overload(
[](int){ return true; },
[](double){ return true; },
[](auto const&...){ return false; }
);

int main() {
std::cout  std::same_as;
#else
{ p(e, e) } -> std::convertible_to;
#endif
}
auto operator()(E&&) const {
}

P p;
};
#if 1
auto const foo = Foo{boost::hana::always(true)};
#else
auto const foo = Foo{[](auto const& ...){ return true; }};
#endif

int main() {
int bar;
foo(bar);
}
Я был настолько озадачен тем фактом, что я мог потребовать , что то, что я знаю, чтобы быть предикатом, вернет что -то std :: convertible_to , но не то, что является std :: some_as !>

Подробнее здесь: https://stackoverflow.com/questions/666 ... st-argumen
Ответить

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

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

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

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

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