[cfe-dev] Concepts status

Andrew Marshall via cfe-dev cfe-dev at lists.llvm.org
Wed Jun 15 05:59:39 PDT 2016


Thanks Hubert,

Let me first get to grips with working on the Clang source and familiarise
myself with current Concepts spec then I'll see where I can contribute most
usefully.

Cheers,
Andrew.

On Tue, Jun 14, 2016 at 7:21 PM Hubert Tong <
hubert.reinterpretcast at gmail.com> wrote:

> Hi Andrew,
>
> I have an idea of the dependencies behind the various part of the work and
> could hopefully help coordinate the implementation effort.
> Brain dump follows; please let me know what part of the implementation you
> are interested in. Note that Nathan may already have plans to work on
> certain things.
>
> The implementation is still in its early stages. As Nathan mentioned, it
> is currently controlled by a cc1 flag -fconcepts-ts.
>
> Broadly, there are various sides to the "core concepts" implementation.
> One is allowing for constrained templates. Another is allowing for concept
> definitions. A third is requires-expressions.
>
> Nathan Wilson has been implementing concept definitions.
> The acceptance of "concept" as a specifier for that purpose has been
> implemented, as have various diagnostics associated with its use.
> The last I know of, Nathan noted that there are still a few things that
> need to be completed on that front (such as 7.1.7 p3). The tests are under
> the tests/CXX/concepts.ts directory.
>
> The presence of concept definitions lends itself to adding an
> implementation of constrained-parameters (at least the parsing is safe to
> do for now--see below for the state of representing constrained templates).
> I'm not a fan of template-introducers, but those are also in a similar
> state.
>
> I suggest avoiding abbreviated function template syntax for now.
>
> Since require-expressions are allowed in limited contexts, and a concept
> definition is one of them, it is also a great time to start work on
> requires-expressions.
> I believe Nathan is planning to work on this.
>
> For constrained templates, the idea is to first allow for requires-clauses
> in template-declarations.
> The parsing for that is complete.
>
> We still need to attach the parsed constraint-expression to the
> declaration.
> I submitted patches to add a field to TemplateParameterList to allow the
> constraint-expression to flow from the Parser to the point where we create
> the declaration.
> My next step is to attach constraints to declarations properly.
>
> At this stage, the associated constraint (which is used for matching
> declarations) for the template would still be the same as the
> constraint-expression; however, as additional forms of constraining
> templates is added, this will change (and so different declarations of the
> same templated entity may syntactically have their constraints expressed
> differently). The canonical representation of the associated constraint is
> that specified by the TS (a single expression).
>
> When we have the canonical representation attached to a declaration of the
> template, we can move forward with several things immediately.
>
> The resolution of declarations to prior declarations will need to be done
> (which will involve comparison of template-dependent expressions)--this is
> the part I'm working towards.
>
> Implementing mangling for the associated constraints is another.
>
> Determining whether the associated constraint is satisfied is yet another.
> This will involve normalizing the constraint into a form which, in terms
> of the implementation, will be conducive to doing the as-needed template
> argument substitution.
> Once this is implemented, then triggering substitution failure when
> appropriate could be considered "cutting the ribbon".
>
> There is more to do for the partial ordering and subsumption
> determination. Those work upon the normalized constraint. A theorem prover
> would be useful.
>
> -- Hubert Tong
>
>
> On Tue, Jun 14, 2016 at 9:59 AM, Nathan Wilson <nwilson20 at gmail.com>
> wrote:
>
>> Hi Andrew,
>>
>> There isn't a branch devoted to Concepts; patches are created and merged
>> into trunk (master). If you look through the logs you'll see some commits
>> with [Concepts] or [CONCEPTS] in the subject.
>>
>> Currently there is a front end only (cc1 only)
>> -fconcepts-ts flag which may be specified with -Xclang -fconcepts-ts as
>> well.
>>
>> Thanks,
>> Nathan
>> Thanks Hubert.
>>
>> Is there a public branch available? I'd be interested in getting involved.
>>
>> On Tue, Jun 14, 2016 at 1:40 PM Hubert Tong <
>> hubert.reinterpretcast at gmail.com> wrote:
>>
>>> Hi Andrew,
>>>
>>> Concepts support is still ongoing in Clang. There is no published
>>> roadmap, but the goal is to have a full implementation (at least using the
>>> *requires-clause* syntax) in Spring of 2017.
>>>
>>> -- HT
>>>
>>> On Tue, Jun 14, 2016 at 8:03 AM, Andrew Marshall via cfe-dev <
>>> cfe-dev at lists.llvm.org> wrote:
>>>
>>>> What is the status of adding support for Concepts in Clang? Is there
>>>> any kind of roadmap for this?
>>>>
>>>> Thanks,
>>>> Andrew.
>>>>
>>>> _______________________________________________
>>>> cfe-dev mailing list
>>>> cfe-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>>
>>>>
>>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160615/f6eb923a/attachment.html>


More information about the cfe-dev mailing list