Да, part-concept-id s, безусловно, вещь C ++ 20. Специальный статус первого аргумента, хотя и удивительно, допускает такие случаи, как std::constructible_from
, который объявлен как
template<class T,class ...Args>
concept constructible_from=…;
std::constructible_from<int,int>
и является ограничением типа что требует , чтобы все, что он вводит, было конструируемым из двух int
аргументов. Однако это также может быть выражение , и в этом случае оно сообщает , может ли int
быть построено из int
(спойлеры: true
), но этот потенциал путаница существует независимо от порядка аргументов.
Если бы T
должен был go в конце, не было бы никакого способа использовать такую концепцию: только вычет аргумента шаблона или аргументы шаблона по умолчанию могут предоставлять значения для параметр шаблона, выходящий за пределы параметра pack , и здесь ни один из них не применим.
Каждая рассылка, опубликованная на сайте, на который вы ссылаетесь, содержит последний черновик стандарта, а альтернативные рассылки включают аннотации в виде на какие документы были приняты. Или вы можете просто посетить хранилище черновиков (по крайней мере, если вы счастливы, читая LaTeX).