[fpc-devel] Question on constref
Michael Van Canneyt
michael at freepascal.org
Thu Feb 2 09:33:50 CET 2023
On Thu, 2 Feb 2023, Sven Barth via fpc-devel wrote:
> Am 02.02.2023 um 02:09 schrieb Hairy Pixels:
>>
>>> On Feb 2, 2023, at 4:38 AM, Sven Barth <pascaldragon at googlemail.com>
> wrote:
>>>
>>> Which types are passed by-value or by-reference when using const is
> determined by the size of the record and the types of the fields based on
> whatever the corresponding ABI defines (e.g. the x86_64 Sys V ABI is rather
> explicit about some field combinations). The compiler will however not switch
> between passing a specific type once by-value and another time by-reference.
>> So if the compiler is making the choice using const which is more efficient
> then we should be using const always I would think? What problem does
> constref solve then?
>
> The case when you *need* a constant reference. Case in point: the
> passing of TGuid in IInterface.QueryInterface. Delphi code relies on it
> being a reference, but “const” does not guarantee that for all platforms.
Exactly. That is why they introduced [ref], which serves essentially the same purpose as
constref.
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Parameters_(Delphi)#Constant_Parameters
We were way ahead of them on that particular one.
Benefits of being cross-platform since a long time :-)
Michael.
More information about the fpc-devel
mailing list