std::meta::can_substitute
С ru.cppreference.net
| Определено в заголовочном файле <meta>
|
||
template< std::meta::reflection_range R = std::initializer_list<std::meta::info> >
consteval bool can_substitute( std::meta::info templ, R&& arguments );
|
(начиная с C++26) | |
Пусть Z обозначает шаблон, представленный templ, Args... обозначает значения, типы или шаблоны, представленные последовательными элементами arguments, определяет, является ли Z<Args...> допустимым идентификатором шаблона.
Возвращает true если Z<Args...> является допустимым и не именует функцию с невыведенным замещающим типом возврата; в противном случае возвращает false.
Параметры
| templ | - | отражение шаблона |
| arguments | - | диапазон range отражений |
Возвращаемое значение
Логическое значение, указывающее, допустима ли подстановка.
Исключения
Выбрасывает std::meta::exception если только templ не представляет шаблон, и каждый элемент arguments не представляет конструкцию, подходящую в качестве аргумента шаблона.
Примечания
Если формирование Z<Args...> приводит к сбою за пределами непосредственного контекста, программа считается некорректной.
Пример
Запустить этот код
#include <meta>
#include <tuple>
static_assert(std::meta::can_substitute(^^std::tuple, {^^void}));
static_assert(can_substitute(^^std::tuple, {^^int, ^^int})); // using argument-dependent lookup
static_assert(!can_substitute(^^std::tuple, {std::meta::reflect_constant(42)}));
consteval
{
try
{
can_substitute(^^std::tuple, {^^::}); // Throws std::meta::exception
// the global namespace cannot be a template arg
} catch (std::meta::exception&) {}
}
int main() {}
См. также
(C++26) |
получает отражение результата подстановки отраженных аргументов в отраженный шаблон (шаблон функции) |
(C++26) |
возвращает отражение, представляющее значение или объект параметра шаблона, подходящее для использования в качестве константного аргумента шаблона (шаблон функции) |
(C++26) |
возвращает отражение, представляющее объект, подходящее для использования в качестве константного аргумента шаблона (шаблон функции) |
(C++26) |
возвращает отражение, представляющее функцию, подходящее для использования в качестве константного аргумента шаблона (шаблон функции) |