Spec-Zone.ru › C++

std::meta::has_default_argument

Объявлен в заголовочном файле <meta>
consteval bool has_default_argument( std::meta::info r );
(начиная с C++26)

Возвращает true, если r представляет параметр функции P, имеющий аргумент по умолчанию D. В противном случае возвращает false.

Формально пусть P обозначает параметр функции, F — функцию, а D — аргумент по умолчанию.

  • Если F является специализацией шаблонной функции T, то возвращает true, если существует объявление D для T, достижимое из точки в контексте вычисления, и D задаёт аргумент по умолчанию для параметра T, соответствующего P. В противном случае возвращает false.
  • В противном случае, если существует объявление D для F, достижимое из точки в контексте вычисления, и D задаёт аргумент по умолчанию для P, то возвращает true. В противном случае возвращает false.

Параметры

r - значение отражения

Возвращаемое значение

true, если r представляет параметр функции, имеющий аргумент по умолчанию; в противном случае false.

Пример

#include <meta>

void foo(int x, double y = 3.14);

constexpr auto rx{std::meta::parameters_of(^^foo)[0]}; // int x
constexpr auto ry{std::meta::parameters_of(^^foo)[1]}; // double y = 3.14

static_assert(std::meta::type_of(rx) == ^^int);
static_assert(has_default_argument(rx) == false);

static_assert(std::meta::type_of(ry) == ^^double);
static_assert(has_default_argument(ry) == true);

int main() {}

См. также

parameters_of
(C++26)
получает параметры отражённой функции
(функция)
variable_of
(C++26)
получает переменную параметра отражённой функции в определении функции
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/has_default_argument

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API