Compound conversion sequence::convert
Перейти к навигации
Перейти к поиску
template <class U>
static constexpr sequence_element<0> convert(U&& arg);
Осуществляет последовательное преобразование типов для своего аргумента в соответствии с параметрами шаблона compound_conversion_sequence.
- Параметры шаблона
U Тип входного параметра, преобразуемого методом. - Параметры
arg Универсальная ссылка на входной объект, преобразуемый методом. - Возвращаемое значение:
- Результат преобразования.
Пусть задана специализация typedef compound_conversion_sequence<convert1_t, convert2_t, ..., convertN_t> instantiation_type;
, определенная для преобразований типов convert1_t, convert2_t, ...convertN_t, а также некоторый объект x. Тогда применение метода convert над этим объектом:
instantiation_type::convert(x);
будет эквивалентно последовательному преобразованию:
convert1_t::convert(convert2_t::convert(...convertN_t::convert(x)...))
Пример
struct A {};
struct B:A {};
struct C:A {};
struct D:B, C
{
explicit D(int n) {}
D(short n) {}
};
int main(int argc, char** argv)
{
auto a = compound_conversion_sequence<
implicit_conversion_sequence<A, B>,
explicit_conversion_sequence<D>,
implicit_conversion_sequence<int>
>::convert(short());
D d = int();
C& c_ref = d;
auto& a_of_b_ref = compound_conversion_sequence<
implicit_conversion_sequence<A&, B&>,
static_conversion_sequence<D&>
>::convert(c_ref);
return 0;
}