Tuple DIP

Atila Neves atila.neves at gmail.com
Tue Jan 23 11:04:33 UTC 2018


On Sunday, 14 January 2018 at 18:17:38 UTC, Timon Gehr wrote:
> On 14.01.2018 19:14, Timothee Cour wrote:
>> actually I just learned that indeed sizeof(typeof(tuple()))=1, 
>> but why
>> is that? (at least for std.typecons.tuple)
>> maybe worth mentioning that in the DIP (with rationale)
>
> It's inherited from C, where all struct instances have size at 
> least 1. (Such that each of them has a distinct address.)

Inherited from C++. In C empty structs have size 0. This caused 
me all sorts of problems when importing C headers from C++ in 
funky codebases.

foo.c:
#include <stdio.h>

struct Foo {};

int main() {
     printf("%zu\n", sizeof(struct Foo));
     return 0;
}


% clear && gcc foo.c && ./a.out
0

% clear && gcc -xc++ foo.c && ./a.out
1


Atila


More information about the Digitalmars-d mailing list