Здравствуйте!
Как узнать хранит ли variant шаблонный тип, где тип/типы, которыми инстанциирован шаблон, мне неизвестны?
Есть шаблонный функтор вида
template<typename InputIteratorType, typename OutputIteratorType>
using BasicFormatValueFilter = std::function< OutputIteratorType( InputIteratorType // begin
, InputIteratorType // end
, OutputIteratorType
)
>;
Есть специализация
using FormatValueFilter = BasicFormatValueFilter< marty::utf::UtfInputIterator<char>
, marty::utf::UtfOutputIterator<char>
>;
Есть стандартный вариант
| | FormatArgumentVariant |
| | using FormatArgumentVariant =
std::variant< bool
, char
, unsigned char // std::uint8_t
, signed char // std::int8_t
, unsigned short // std::uint16_t
, signed short // std::int16_t
, unsigned int // std::uint32_t
, int // std::int32_t
, unsigned long // 32/64, it's depends
, long // 32/64, it's depends
, unsigned long long // std::uint64_t
, long long // std::int64_t
, float
, double
, long double
, const char*
, const wchar_t*
, std::string
, std::wstring
, marty::Decimal
, FormatValueFilter
>;
|
| | |
Есть моя шаблонная функция, которая принимает контейнер вариантов, но там могут лежать не мои стандартные варианты, а пользовательские, в тч в пользовательском варианте могут лежать как функторы
FormatValueFilter, так пользовательские типы функторов на базе
BasicFormatValueFilter.
Вопросы такие.
1. Мне надо узнать, есть ли в варианте, который хранит контейнер, что-либо на базе BasicFormatValueFilter, и получить его точный тип
2. Проверить, является ли текущее значение варианта экземпляром функтора
Сначала был второй вопрос, но пока размышлял, появился и первый, и если по второму есть кой-какие идеи, то по первому что-то ничего в голову не приходит