[llvm-bugs] [Bug 32823] New: Warn about accidental coping of data in range based for

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Apr 27 03:58:26 PDT 2017


            Bug ID: 32823
           Summary: Warn about accidental coping of data in range based
           Product: clang
           Version: unspecified
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Frontend
          Assignee: unassignedclangbugs at nondot.org
          Reporter: antoshkka at gmail.com
                CC: llvm-bugs at lists.llvm.org

Here's a small example with accidental copying that could be often seen in

#include <map>
#include <string>
#include <iostream>

int main() {
    std::map<std::string, std::string> m = {
        {"This is ", "an exmple, "},
        {"were user ", "accidently copies"},

    for (const std::pair<std::string, std::string>& s : m) {
        std::cout << s.first << s.second;

User provided `const std::pair<std::string, std::string>&` type instead of
`const std::pair<const std::string, std::string>&` so the std::pair is copied.

Please add a "Value will be copied because types differ" warning for range
based for loops and show it when:
user provides a const reference type in for-range-declaration and that type
when decayed differs from decayed iterator dereference type.

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170427/f55c1641/attachment-0001.html>

More information about the llvm-bugs mailing list