Re: [cxx-abi-dev] Mangling sizeof
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [cxx-abi-dev] Mangling sizeof




On Mar 9, 2009, at 12:31 PM, Doug Gregor wrote:

On Mon, Mar 9, 2009 at 8:29 AM, John H. Spicer <jhs@xxxxxxx> wrote:

On Mar 9, 2009, at 11:21 AM, Doug Gregor wrote:

On Sun, Mar 8, 2009 at 12:32 PM, John H. Spicer <jhs@xxxxxxx> wrote:


Is there any reason not to just say that doing substitution on an lambda
expression results in a substitution failure?

Implementation cost, for one. We currently have to be able to recover from a substitution failure in any expression or type. If we say that
substitution into a lambda cannot result in a hard error, it means
that we have to be able to recover from substitution failures in any
statement that occurs in the lambda.


No, what I'm saying is that you never actually attempt the substitution. If you encounter a lambda expression when doing substitution you just always
fail.

Oh. So a function template like, e.g.,

 template<typename T> void f(A<sizeof([](int) { return 0; })> *a = 0);

could never be instantiated or invoked. In that case, I'd rather just
ban the use of lambdas in sizeof and decltype. Issue 766 deals with
this, and a favorable resolution there could make this
mangling-the-body-of-a-lambda issue go away.



That works for me.

John.