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

Reply via email to