Использует ли кортеж c ++ 0x новые шаблоны с переменными числами или реализацию кортежа Boost для макросов? - PullRequest
4 голосов
/ 17 августа 2010

Я читал, что это основано на версии Boost, но я не совсем уверен, что это значит, когда дело доходит до реализации.Я знаю, что Boost создает собственный шаблон переменных, но я предполагаю, что c ++ 0x будет использовать собственные шаблоны переменных для нового кортежа.

1 Ответ

6 голосов
/ 17 августа 2010

tuple в черновом стандарте C ++ 0x использует шаблоны переменных C ++ 0x. Он объявлен как (§20.4.1):

template <class... Types> class tuple;

Обратите внимание, однако, что расширения языка TR1 также включают в себя tuple, в котором не используются вариадические шаблоны, поскольку при написании TR1 такого не было В TR1 tuple объявлено как (§6.1):

template <class T1 = unspecified ,
          class T2 = unspecified ,
          ...,
          class TM = unspecified > class tuple;

где M - это значение, определяемое реализацией, которое должно быть не менее десяти.

TR1 формально не является частью языка C ++, но многие недавние реализации поддерживают его. Если у вас есть реализация, которая еще не поддерживает шаблоны переменных, она может поддерживать TR1 tuple.

Вы можете загрузить последний проект стандарта, Окончательный проект комитета (PDF-ссылка 10,5 МБ).

...