Есть ли способ подсчитать членов класса?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли способ подсчитать членов класса?

Сообщение Anonymous »

Я пытаюсь написать функцию, которая возвращала бы количество нестатических членов класса. Мне это нужно для библиотеки сериализации, над которой я работаю. Мне нужно, чтобы он работал с C++23.
Я безуспешно пробовал несколько подходов. Первый подход - использовать структурированные привязки с переменным числом вариантов, но я пока не вижу ни одного компилятора, реализующего его (https://gcc.godbolt.org/z/1hrzT9hMe). Это находится в разработке любого текущего компилятора?

Код: Выделить всё

template
consteval auto count(T&& t)
{
auto&& [...a] = t;
return sizeof...(a);
}
Я также попробовал обходной путь, используя перегрузку ограничений, но вместо этого весь компилятор выдал серьезную ошибку: https://gcc.godbolt.org/z/x7vcT8qhM

Код: Выделить всё

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;
}
Это ошибка компилятора или ошибка в коде? Должен ли компилятор, совместимый с C++23, не выполнять ограничения, а не выдавать серьезную ошибку?

Подробнее здесь: https://stackoverflow.com/questions/786 ... of-a-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»