• Andres Freund's avatar
    Add macro to cast away const without allowing changes to underlying type. · d1211c63
    Andres Freund authored
    The new unconsitify(underlying_type, var) macro allows to cast
    constness away from a variable, but doesn't allow changing the
    underlying type.  Enforcement of the latter currently only works for
    gcc like compilers.
    
    Please note IT IS NOT SAFE to cast constness away if the variable will ever
    be modified (it would be undefined behaviour). Doing so anyway can cause
    compiler misoptimizations or runtime crashes (modifying readonly memory).
    It is only safe to use when the the variable will not be modified, but API
    design or language restrictions prevent you from declaring that
    (e.g. because a function returns both const and non-const variables).
    
    This'll be used in an upcoming change, but seems like it's independent
    infrastructure.
    
    Author: Andres Freund
    Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
    d1211c63
c.h 39.1 KB