Количество параметров в пакете параметров? Есть ли для этого функция C++0x std lib?

Мне было просто интересно, есть ли что-нибудь в библиотеке C++0x std, уже доступной для подсчета количества параметров в пакете параметров? Я хотел бы избавиться от field_count в коде ниже. Я знаю, что могу создать свой собственный счетчик, но кажется, что это было бы очевидным для включения в C++0x std lib, и я хотел быть уверен, что его там еще нет:) Реализации счетчиков, выращенные на дому. также приветствуются.

template<const int field_count, typename... Args> struct Entity {
    const tuple<Args...> data;
    const array<const char*, field_count> source_names;

    Entity() : data() {
    }
};

2 ответа

Решение

Да, вы можете использовать sizeof..., Из C++0x FCD (§5.3.3/5):

Идентификатор в sizeof... выражение должно называть пакет параметров. sizeof... Оператор возвращает количество аргументов, предоставленных для идентификатора пакета параметров. Пакет параметров расширяется (14.5.3) sizeof... оператор. [Пример:

template<class... Types>
struct count {
    static const std::size_t value = sizeof...(Types);
};

-конец примера ]

Вот ссылка, которая может вам помочь. Пример источника по ссылке:

template<typename... Args> struct count;

template<>
struct count<> {
    static const int value = 0;
};

template<typename T, typename... Args>
struct count<T, Args...> {
    static const int value = 1 + count<Args...>::value;
};
Другие вопросы по тегам