-
Notifications
You must be signed in to change notification settings - Fork 100
Description
See prior discussion here: http://sourcerytools.com/pipermail/cxx-abi-dev/2014-November/002785.html
Recent language changes (in particular, auto
template parameters and the allowance of arbitrary constant expressions for pointer and member pointer non-type template arguments) mean that encoding the target of a non-type template argument is not sufficient to uniquely identify the argument. We also need the type in some cases, and for pointers to members, we need the conversion path used to form the type too.
One previously-discussed approach that seemed to have support was to use a cv
... expression to describe the conversion if the natural type of the non-type template argument differs from the actual type, and can't be inferred from the parameter (eg, for a function template or when the parameter has a deduced type). For a pointer-to-member, a minimal sequence of cv
... expressions would be used to express the derived-to-base or base-to-derived conversion path.
We need concrete rules describing exactly how this should work, of course :)