Сообщение Как узнать хранит ли variant... от 19.04.2025 18:33
Изменено 19.04.2025 18:35 Marty
Как узнать хранит ли variant...
Здравствуйте!
Как узнать хранит ли variant шаблонное значение, где аргумент мне неизвестен?
Есть шаблонный функтор вида
Есть специализация
Есть стандартный вариант
Есть моя шаблонная функция, которая принимает контейнер вариантов, но там могут лежать не мои стандартные варианты, а пользовательские, в тч в пользовательском варианте могут лежать как функторы FormatValueFilter, так пользовательские типы функторов на базе BasicFormatValueFilter.
Вопросы такие.
1. Мне надо узнать, есть ли в варианте, который хранит контейнер, что-либо на базе BasicFormatValueFilter, и получить его точный тип
2. Проверить, является ли текущее значение варианта экземпляром функтора
Сначала был второй вопрос, но пока размышлял, появился и первый, и если по второму есть кой-какие идеи, то по первому что-то ничего в голову не приходит
Как узнать хранит ли 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 | |
| |
Есть моя шаблонная функция, которая принимает контейнер вариантов, но там могут лежать не мои стандартные варианты, а пользовательские, в тч в пользовательском варианте могут лежать как функторы FormatValueFilter, так пользовательские типы функторов на базе BasicFormatValueFilter.
Вопросы такие.
1. Мне надо узнать, есть ли в варианте, который хранит контейнер, что-либо на базе BasicFormatValueFilter, и получить его точный тип
2. Проверить, является ли текущее значение варианта экземпляром функтора
Сначала был второй вопрос, но пока размышлял, появился и первый, и если по второму есть кой-какие идеи, то по первому что-то ничего в голову не приходит
Как узнать хранит ли variant...
Здравствуйте!
Как узнать хранит ли variant шаблонный тип, где тип/типы, которыми инстанциирован шаблон, мне неизвестны?
Есть шаблонный функтор вида
Есть специализация
Есть стандартный вариант
Есть моя шаблонная функция, которая принимает контейнер вариантов, но там могут лежать не мои стандартные варианты, а пользовательские, в тч в пользовательском варианте могут лежать как функторы FormatValueFilter, так пользовательские типы функторов на базе BasicFormatValueFilter.
Вопросы такие.
1. Мне надо узнать, есть ли в варианте, который хранит контейнер, что-либо на базе BasicFormatValueFilter, и получить его точный тип
2. Проверить, является ли текущее значение варианта экземпляром функтора
Сначала был второй вопрос, но пока размышлял, появился и первый, и если по второму есть кой-какие идеи, то по первому что-то ничего в голову не приходит
Как узнать хранит ли 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 | |
| |
Есть моя шаблонная функция, которая принимает контейнер вариантов, но там могут лежать не мои стандартные варианты, а пользовательские, в тч в пользовательском варианте могут лежать как функторы FormatValueFilter, так пользовательские типы функторов на базе BasicFormatValueFilter.
Вопросы такие.
1. Мне надо узнать, есть ли в варианте, который хранит контейнер, что-либо на базе BasicFormatValueFilter, и получить его точный тип
2. Проверить, является ли текущее значение варианта экземпляром функтора
Сначала был второй вопрос, но пока размышлял, появился и первый, и если по второму есть кой-какие идеи, то по первому что-то ничего в голову не приходит