Я пытаюсь получить boost :: hana :: string по порядку, как вставлено в кортеж, ища по имени std :: string_view в массиве (пожалуйста, проверьте код, там легче понять, чем в моих словах). У меня есть ...

1
Pablo 9 Апр 2021 в 03:11

1 ответ

Лучший ответ

Вместо этого вы можете передать boost::hana::string в combined(), чтобы вызвать image() во время компиляции с помощью std::string_view:

template <class CharT, CharT... s>
constexpr auto combined(const boost::hana::string<s...>& name)
{
   constexpr auto index = image(name.c_str());
   return source<index>();
}

И вот как им пользоваться:

using boost::hana::literals::operator""_s;
constexpr auto hana_str = combined("LESSONS.PNG"_s);
static_assert(hana_str.c_str() == "2"sv);

Но BOOST_HANA_CONFIG_ENABLE_STRING_UDL перед включением <boost/hana/string.hpp>:

#define BOOST_HANA_CONFIG_ENABLE_STRING_UDL
#include <boost/hana/string.hpp>
1
Patrick Roberts 9 Апр 2021 в 01:06