span-lite icon indicating copy to clipboard operation
span-lite copied to clipboard

Fix "-Wundef" warning when building as C++20

Open simark opened this issue 2 months ago • 0 comments

When including span.hpp in a source file compiled as C++20, I get an error similar to this:

$ g++ -x c++-header span.hpp -Wundef -Werror -std=c++20
span.hpp:43:33: error: "span_HAVE_STRUCT_BINDING" is not defined, evaluates to 0 [-Werror=undef]
   43 | #define span_HAVE( feature )  ( span_HAVE_##feature )
      |                                 ^~~~~~~~~~
span.hpp:1873:5: note: in expansion of macro ‘span_HAVE’
 1873 | #if span_HAVE( STRUCT_BINDING )
      |     ^~~~~~~~~

Fix it by checking if span_HAVE_STRUCT_BINDING is defined. Unfortunately, I couldn't find a way to make defined() work with span_HAVE( STRUCT_BINDING ).

An alternative would be to move the definition of span_HAVE_STRUCT_BINDING outside of the span_USES_STD_SPAN ifdef.

Fixes #84.

simark avatar May 06 '24 20:05 simark