[cfe-dev] clang rejects nested struct-member-access-typeof
Jan Engelhardt
jengelh at medozas.de
Wed Nov 2 13:55:23 PDT 2011
On Wednesday 2011-11-02 21:10, Matthieu Monrocq wrote:
>
>
>Le 2 novembre 2011 14:01, Jan Engelhardt <jengelh at medozas.de> a écrit :
>
> On Wednesday 2011-11-02 04:51, Douglas Gregor wrote:
> >> void *p = 0;
> >> typeof((struct { typeof((struct { void *m; }){p}.m) n;
> }){0}.n) q = 0;
> >
>>This code is relying on GCC extensions to treat a compound literal
>>as a constant expression, which C99 forbids.
>
>I do not think this should have anything to do with constexprs, also
>because typeof does not really evaluate its argument, but just looks
>at the type system. Clang accepts a handful of - what looks to me
>like non-constant expressions - to typeof:
>
> typeof((struct { void *m; }){p}.m) q = 0;
>
> typeof(argc) argc2 = argc;
>
>>Feel free to file a bug; this might be the kind of thing that we can
>>support for GNU compatibility, if it falls out of the constexpr and
>>other C++11 work in this area.
>
>I guess I did by writing to this list.
>
>
>Hello Jan,
>
>To file a bug you need to visit: http://llvm.org/bugs/
>
>On top of your description of the problem you are expected to provide a
>minimal example that reproduces the issue. If you cannot produce this
>minimal example, a preprocessed file can suffice (use -E to get the
>preprocessor output) however it might make investigation harder (and thus
>delay the correction).
According to http://clang.llvm.org/get_involved.html , cfe-dev is (also)
for bugs.
Minimal test case has already been provided.
More information about the cfe-dev
mailing list