Количество параметров в пакете параметров? Есть ли для этого функция 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;
};