https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119334

            Bug ID: 119334
           Summary: error: loop variable '<structured bindings>' creates a
                    copy from type 'const std::pair<int, int>'
                    [-Werror=range-loop-construct]
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rogerio.souza at gmail dot com
  Target Milestone: ---

The code below returns the warning "<source>:10:21: warning: loop variable
'<structured bindings>' creates a copy from type 'const std::pair<int, int>'
[-Wrange-loop-construct]" from GCC 11.0 to 14.2. Using GCC from trunk the
warning is not  raised. I used all levels of optimization and all have failed.

The command line to reproduce is "g++ -fpic -std=c++17 -pthread -O3 -Wall
-DNDEBUG".

Below is the source code "https://godbolt.org/z/5TeaqoEen":

***********************************

#include <vector>
#include <utility>

void bar(int x, int y);

std::vector<std::pair<int, int>> v;

void foo()
{
    for (const auto [x, y] : v)
        bar(x, y);

    for (const auto p : v)
        bar(p.first, p.second);
}

***********************************

Regards,
Rogerio

Reply via email to