Change History (2)

comment:1 Changed 3 months ago by ryandesign (Ryan Carsten Schmidt)

The indicated line is the end of a static_assert:

static_assert (DT_UNKNOWN != DT_FIFO && DT_UNKNOWN != DT_CHR
               && DT_UNKNOWN != DT_BLK && DT_UNKNOWN != DT_REG
               && DT_UNKNOWN != DT_LNK && DT_UNKNOWN != DT_SOCK
               && DT_UNKNOWN != DT_WHT
               && DT_FIFO != DT_CHR && DT_FIFO != DT_BLK && DT_FIFO != DT_REG
               && DT_FIFO != DT_LNK && DT_FIFO != DT_SOCK && DT_FIFO != DT_WHT
               && DT_CHR != DT_BLK && DT_CHR != DT_REG && DT_CHR != DT_LNK
               && DT_CHR != DT_SOCK && DT_CHR != DT_WHT
               && DT_BLK != DT_REG && DT_BLK != DT_LNK && DT_BLK != DT_SOCK
               && DT_BLK != DT_WHT
               && DT_REG != DT_LNK && DT_REG != DT_SOCK && DT_REG != DT_WHT
               && DT_LNK != DT_SOCK && DT_LNK != DT_WHT
               && DT_SOCK != DT_WHT);

From what I can tell, when static_assert was introduced in C++11, it required a second (string) parameter. In C++17 the second parameter became optional.

I reported it to the developer here: https://github.com/lavv17/lftp/issues/766

comment:2 Changed 3 months ago by ryandesign (Ryan Carsten Schmidt)

This port does not indicate a required C++ standard but it uses -std=gnu++11. Fixes would seem to be either:

  1. set compiler.cxx_standard 2011 and add the second string parameter to each static_assert (there are tons), or
  2. set compiler.cxx_standard 2017 and arrange for -std=gnu++17 to be used instead.

Interesting: the log also says:

checking for static_assert... no

So what's it using then?

Note: See TracTickets for help on using tickets.