Actions

icon Post
text/html Subscribe
text/html Unsubscribe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [cxx-abi-dev] restrict & overloading


  • To: cxx-abi-dev@xxxxxxxxxxxxxxxx
  • Subject: Re: [cxx-abi-dev] restrict & overloading
  • From: Daveed Vandevoorde <daveed@xxxxxxx>
  • Date: Wed, 18 Feb 2004 17:42:22 -0500


On Feb 18, 2004, at 5:25 PM, Mark Mitchell wrote:


Adding restrict changes the type.  It is an
interface element (e.g., telling the client code:
Passing aliased arguments may burn you).  In that
way, restrict is different from e.g. "const."

Yes, I understand: you are arguing that by mangling restrict you could prevent a class of user errors involving linking together things that should not be linked together.

I don't think the ABI design philosophy involved trying to prevent user errors -- it was just on doing what the standard required in an efficient manner.

True but there is more to it than invalid programs.

// File 1:
void f(int **) {}

// File 2:
void f(int *restrict*) {}

If this ends up being allowed by WG21 (while overload
resolution will likely not distinguish these), the ABI
note will keep us from being conformant.

I find it strange that an ABI constraint is formulated
in terms of "overload resolution" which is not really
an ABI element.  What does it buy us?

I suspect that the words "for overloading purposes" were
not really intended.  I.e., think it should say: if an
implementation treats restrict as part of the type, it
mangles it; if not, it doesn't.

	Daveed