[LLVMbugs] [Bug 19085] New: Can't std::sort a collection of std::pair if one pair element is const

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Mar 8 15:14:11 PST 2014


            Bug ID: 19085
           Summary: Can't std::sort a collection of std::pair if one pair
                    element is const
           Product: libc++
           Version: 3.3
          Hardware: Macintosh
                OS: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: hhinnant at apple.com
          Reporter: james at weatherley.net
                CC: llvmbugs at cs.uiuc.edu, mclow.lists at gmail.com
    Classification: Unclassified

#include <iostream>
#include <vector>

int main(int argc, const char * argv[])
    // Replace the std::vector declaration with the commented out one and it
    //std::vector<std::pair<int, int>> vec = {
    std::vector<std::pair<const int, int>> vec = {
        std::make_pair(9, 8),
        std::make_pair(7, 6),
        std::make_pair(5, 4),
        std::make_pair(3, 2)

    std::sort(vec.begin(), vec.end(), [](const std::pair<const int, int>& p1,
const std::pair<const int, int>&p2) {
        return true;

    for(auto pair:vec)
        std::cout << pair.first    << " : " << pair.second    << "\n";

Build the above and you get errors:

Read-only variable is not assignable

Read-only variable is not assignable

I'm sorting - why does it want to assign to the const int pair element? Change
the pair declaration to a pair of non-const ints and it builds just fine.

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/20140308/056b0b88/attachment.html>

More information about the llvm-bugs mailing list