Я безуспешно пробовал несколько подходов. Первый подход - использовать структурированные привязки с переменным числом вариантов, но я пока не вижу ни одного компилятора, реализующего его (https://gcc.godbolt.org/z/1hrzT9hMe). Это находится в разработке любого текущего компилятора?
Код: Выделить всё
template
consteval auto count(T&& t)
{
auto&& [...a] = t;
return sizeof...(a);
}
Код: Выделить всё
template
constexpr auto count(T&& t) requires requires
{
[](T&& f){auto [a, b] = f;}(std::forward(t));
}
{
return 2;
}
template
constexpr auto count(T&& t) requires requires
{
[](T&& f){auto [a, b, c] = f;}(std::forward(t));
}
{
return 3;
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... of-a-class
Мобильная версия