Sign in to queue

The Discussion

  • User profile image
    felix9

    Ah, Roslyn for C++ ? Devil Phoenix Resurrection ??? Angel

  • User profile image
    ddrcoder

    The material was great, but the speed of delivery and expectations of the audience were far too low.

  • User profile image
    daniel kluss

    Why doesnt maskmovdqu on x86 work for masked stores when vectorizing conditionals?

  • User profile image
    aklimkin

    With AVX2 you can use VPMASKMOV* and VMASKMOV* to load/store with masks.

  • User profile image
    Arne Vogel

    53:54 "makes sense?" – In fact, not a lot. A conversion from T ** to U ** is already forbidden for T != U. Even just adding a const is forbidden (except for at the top level or at the level of the first indireciton, i.e. T ** -> T **const or T ** to T *const *).

    In fact, the comp.lang.c FAQ has answered the question "Why cannot I convert a char ** to a const char **?" decades ago.

    (As far as assigning to a pointer (whether through dereferencing a pointer-to-pointer or not), the conversion options are also limited, i.e. you can add const or volatile, and convert to an unambiguous accessible base class.)

    Here is a simple example on godbolt.org showing how a conversion to base type is not allowed for the double indirection case:

    https://godbolt.org/z/-fh4dv

    I chose MSVC for obvious reasons, but all other major compilers should and do reject this code because of the possibility of subverting the type system.

    Also, you can easily warn about bad code even if it is legal. This is not a conformance issue. At worst, your users might be upset if there are too many false positives.

    I do think you have a point that disproving aliasing is a very hard problem in C++, but the examples given are not correct, and do not do your talk a service.

Add Your 2 Cents