std::meta::can_substitute
Определён в заголовочном файле <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) | возвращает отражение, представляющее функцию, пригодное для использования в качестве константного аргумента шаблона (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/can_substitute