CreateFile - return Wert prüfen kompiliert nicht



  • Hallo,

    ich versuche das Ergebnis von CreateFile zu prüfen, aber mein Compiler (GCC 7.1) will nicht:

    constexpr bool file_is_valid(HANDLE h) noexcept
    { return h != INVALID_HANDLE_VALUE; }
    

    error: reinterpret_cast from integer to pointer
    { return h != INVALID_HANDLE_VALUE; }

    INVALID_HANDLE_VALUE ist wohl definiert als (HANDLE)-1

    Hat jemand eine Idee? Ich habe schon alles versucht was ich kann.

    LG
    EDIT Ich bin mir nun ziemlich sicher es liegt daran, weil ich überall ein constexpr verwenden wollte. Die Lösung wäre also kein constexpr zu verwenden zusammen mit INVALID_HANDLE_VALUE.

    [...] your attempts are blocked by the rules in [expr.const]/2 which say that various expressions are not allowed in core constant expressions [...]

    https://stackoverflow.com/questions/10369606/constexpr-pointer-value


  • Mod

    Ich bin mir nicht sicher, aber ein reinterpret_cast ist in einem constexpr nicht erlaubt.

    Vermutlich ist es der C-Cast der hier einfach nicht erlaubt ist.


Log in to reply