Skip to content

ref_impl.text.cpp compilation fails g++-15 #91

@JeffGarland

Description

@JeffGarland

This seems to be something new with g++-15 as the current code compiles and runs with g++-14. This is on ubuntu arm64.

I haven't had time to dig into the compiler complaint here, but I'm going to assume it's reporting a real attempt to strip const from void*.

cmake -B build -S . -DCMAKE_CXX_COMPILER=g++-15 -DCMAKE_CXX_STANDARD=23 -DCMAKE_VERBOSE_MAKEFILE=ON


[ 11%] �[32mBuilding CXX object tests/beman/inplace_vector/CMakeFiles/beman.inplace_vector.ref-test.dir/ref_impl.test.cpp.o�[0m
cd /home/jeff/dev/inplace_vector/build/tests/beman/inplace_vector && /usr/bin/g++-15  -I/home/jeff/dev/inplace_vector/include -I/home/jeff/dev/inplace_vector/build/include -std=gnu++23 -MD -MT tests/beman/inplace_vector/CMakeFiles/beman.inplace_vector.ref-test.dir/ref_impl.test.cpp.o -MF CMakeFiles/beman.inplace_vector.ref-test.dir/ref_impl.test.cpp.o.d -o CMakeFiles/beman.inplace_vector.ref-test.dir/ref_impl.test.cpp.o -c /home/jeff/dev/inplace_vector/tests/beman/inplace_vector/ref_impl.test.cpp
In file included from /usr/include/c++/15/bits/stl_iterator.h:78,
                 from /usr/include/c++/15/bits/stl_algobase.h:67,
                 from /usr/include/c++/15/algorithm:62,
                 from /home/jeff/dev/inplace_vector/include/beman/inplace_vector/inplace_vector.hpp:10,
                 from /home/jeff/dev/inplace_vector/tests/beman/inplace_vector/ref_impl.test.cpp:18:
/usr/include/c++/15/bits/stl_construct.h: In instantiation of ‘constexpr _Tp* std::construct_at(_Tp*, _Args&& ...) [with _Tp = const int; _Args = {const int&}]’:
/home/jeff/dev/inplace_vector/include/beman/inplace_vector/inplace_vector.hpp:352:22:   required from ‘constexpr T& beman::inplace_vector<T, N>::unchecked_emplace_back(Args&& ...) requires  constructible_from<T, Args ...> [with Args = {const int&}; T = const int; long unsigned int N = 3]’
  352 |     std::construct_at(end(), std::forward<Args>(args)...);
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jeff/dev/inplace_vector/include/beman/inplace_vector/inplace_vector.hpp:399:34:   required from ‘constexpr T& beman::inplace_vector<T, N>::unchecked_push_back(const T&) requires  constructible_from<T, const T&> [with T = const int; long unsigned int N = 3]’
  399 |     return unchecked_emplace_back(x);
      |            ~~~~~~~~~~~~~~~~~~~~~~^~~
/home/jeff/dev/inplace_vector/tests/beman/inplace_vector/ref_impl.test.cpp:84:24:   required from here
   84 | template struct beman::inplace_vector<const int, 3>;
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/15/bits/stl_construct.h:99:21: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
   99 |       void* __loc = __location;
      |                     ^~~~~~~~~~
      |                     |
      |                     const void*

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions