GAS LISTING /tmp/ccCle2Qt.s page 1 1 .file "range-loop.cpp" 2 .text 3 .Ltext0: 5 _Z41__static_initialization_and_destruction_0ii: 6 .LFB1841: 7 .file 1 "range-loop.cpp" 1:range-loop.cpp **** #include <iostream> 2:range-loop.cpp **** #include <vector> 3:range-loop.cpp **** 4:range-loop.cpp **** 5:range-loop.cpp **** void rangeLoop() { 6:range-loop.cpp **** 7:range-loop.cpp **** std::vector<int> v = {1,2,3,4}; 8:range-loop.cpp **** int a[4] = {5,6,7,8}; 9:range-loop.cpp **** 10:range-loop.cpp **** std::cout << "rangeLoop "; 11:range-loop.cpp **** for (auto i : v ) { 12:range-loop.cpp **** std::cout << i; 13:range-loop.cpp **** } 14:range-loop.cpp **** for (std::vector<int>::const_iterator j = v.begin(); j < v.end(); ++j) { 15:range-loop.cpp **** std::cout << &j; 16:range-loop.cpp **** } 17:range-loop.cpp **** 18:range-loop.cpp **** for (auto i : a) { 19:range-loop.cpp **** std::cout << i; 20:range-loop.cpp **** } 21:range-loop.cpp **** 22:range-loop.cpp **** for (auto &r : a) { 23:range-loop.cpp **** ++r; 24:range-loop.cpp **** std::cout << r; 25:range-loop.cpp **** } 26:range-loop.cpp **** 27:range-loop.cpp **** std::cout << std::endl; 28:range-loop.cpp **** } 8 .loc 1 28 0 9 .cfi_startproc 10 .LVL0: 11 0000 83FF01 cmpl $1, %edi 12 0003 752E jne .L5 13 .loc 1 28 0 discriminator 1 14 0005 81FEFFFF cmpl $65535, %esi 14 0000 15 000b 7526 jne .L5 16 .loc 1 28 0 is_stmt 0 17 000d 4883EC08 subq $8, %rsp 18 .cfi_def_cfa_offset 16 19 .file 2 "/usr/include/c++/4.8/iostream" 1:/usr/include/c++/4.8/iostream **** // Standard iostream objects -*- C++ -*- 2:/usr/include/c++/4.8/iostream **** 3:/usr/include/c++/4.8/iostream **** // Copyright (C) 1997-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/iostream **** // 5:/usr/include/c++/4.8/iostream **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/iostream **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/iostream **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/iostream **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/iostream **** // any later version. 10:/usr/include/c++/4.8/iostream **** GAS LISTING /tmp/ccCle2Qt.s page 2 11:/usr/include/c++/4.8/iostream **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/iostream **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/iostream **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/iostream **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/iostream **** 16:/usr/include/c++/4.8/iostream **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/iostream **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/iostream **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/iostream **** 20:/usr/include/c++/4.8/iostream **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/iostream **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/iostream **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/iostream **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/iostream **** 25:/usr/include/c++/4.8/iostream **** /** @file include/iostream 26:/usr/include/c++/4.8/iostream **** * This is a Standard C++ Library header. 27:/usr/include/c++/4.8/iostream **** */ 28:/usr/include/c++/4.8/iostream **** 29:/usr/include/c++/4.8/iostream **** // 30:/usr/include/c++/4.8/iostream **** // ISO C++ 14882: 27.3 Standard iostream objects 31:/usr/include/c++/4.8/iostream **** // 32:/usr/include/c++/4.8/iostream **** 33:/usr/include/c++/4.8/iostream **** #ifndef _GLIBCXX_IOSTREAM 34:/usr/include/c++/4.8/iostream **** #define _GLIBCXX_IOSTREAM 1 35:/usr/include/c++/4.8/iostream **** 36:/usr/include/c++/4.8/iostream **** #pragma GCC system_header 37:/usr/include/c++/4.8/iostream **** 38:/usr/include/c++/4.8/iostream **** #include <bits/c++config.h> 39:/usr/include/c++/4.8/iostream **** #include <ostream> 40:/usr/include/c++/4.8/iostream **** #include <istream> 41:/usr/include/c++/4.8/iostream **** 42:/usr/include/c++/4.8/iostream **** namespace std _GLIBCXX_VISIBILITY(default) 43:/usr/include/c++/4.8/iostream **** { 44:/usr/include/c++/4.8/iostream **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 45:/usr/include/c++/4.8/iostream **** 46:/usr/include/c++/4.8/iostream **** /** 47:/usr/include/c++/4.8/iostream **** * @name Standard Stream Objects 48:/usr/include/c++/4.8/iostream **** * 49:/usr/include/c++/4.8/iostream **** * The <iostream> header declares the eight <em>standard stream 50:/usr/include/c++/4.8/iostream **** * objects</em>. For other declarations, see 51:/usr/include/c++/4.8/iostream **** * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html 52:/usr/include/c++/4.8/iostream **** * and the @link iosfwd I/O forward declarations @endlink 53:/usr/include/c++/4.8/iostream **** * 54:/usr/include/c++/4.8/iostream **** * They are required by default to cooperate with the global C 55:/usr/include/c++/4.8/iostream **** * library's @c FILE streams, and to be available during program 56:/usr/include/c++/4.8/iostream **** * startup and termination. For more information, see the HOWTO 57:/usr/include/c++/4.8/iostream **** * linked to above. 58:/usr/include/c++/4.8/iostream **** */ 59:/usr/include/c++/4.8/iostream **** //@{ 60:/usr/include/c++/4.8/iostream **** extern istream cin; /// Linked to standard input 61:/usr/include/c++/4.8/iostream **** extern ostream cout; /// Linked to standard output 62:/usr/include/c++/4.8/iostream **** extern ostream cerr; /// Linked to standard error (unbuffered) 63:/usr/include/c++/4.8/iostream **** extern ostream clog; /// Linked to standard error (buffered) 64:/usr/include/c++/4.8/iostream **** 65:/usr/include/c++/4.8/iostream **** #ifdef _GLIBCXX_USE_WCHAR_T 66:/usr/include/c++/4.8/iostream **** extern wistream wcin; /// Linked to standard input 67:/usr/include/c++/4.8/iostream **** extern wostream wcout; /// Linked to standard output GAS LISTING /tmp/ccCle2Qt.s page 3 68:/usr/include/c++/4.8/iostream **** extern wostream wcerr; /// Linked to standard error (unbuffered) 69:/usr/include/c++/4.8/iostream **** extern wostream wclog; /// Linked to standard error (buffered) 70:/usr/include/c++/4.8/iostream **** #endif 71:/usr/include/c++/4.8/iostream **** //@} 72:/usr/include/c++/4.8/iostream **** 73:/usr/include/c++/4.8/iostream **** // For construction of filebuffers for cout, cin, cerr, clog et. al. 74:/usr/include/c++/4.8/iostream **** static ios_base::Init __ioinit; 20 .loc 2 74 0 is_stmt 1 21 0011 BF000000 movl $_ZStL8__ioinit, %edi 21 00 22 .LVL1: 23 0016 E8000000 call _ZNSt8ios_base4InitC1Ev 23 00 24 .LVL2: 25 001b BA000000 movl $__dso_handle, %edx 25 00 26 0020 BE000000 movl $_ZStL8__ioinit, %esi 26 00 27 0025 BF000000 movl $_ZNSt8ios_base4InitD1Ev, %edi 27 00 28 002a E8000000 call __cxa_atexit 28 00 29 .LVL3: 30 .loc 1 28 0 31 002f 4883C408 addq $8, %rsp 32 .cfi_def_cfa_offset 8 33 .L5: 34 0033 C3 ret 35 .cfi_endproc 36 .LFE1841: 38 .section .text._ZNKSt16initializer_listIiE5beginEv,"axG",@progbits,_ZNKSt16initializer_listIiE5beg 39 .align 2 40 .weak _ZNKSt16initializer_listIiE5beginEv 42 _ZNKSt16initializer_listIiE5beginEv: 43 .LFB1665: 44 .file 3 "/usr/include/c++/4.8/initializer_list" 1:/usr/include/c++/4.8/initializer_list **** // std::initializer_list support -*- C++ -*- 2:/usr/include/c++/4.8/initializer_list **** 3:/usr/include/c++/4.8/initializer_list **** // Copyright (C) 2008-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/initializer_list **** // 5:/usr/include/c++/4.8/initializer_list **** // This file is part of GCC. 6:/usr/include/c++/4.8/initializer_list **** // 7:/usr/include/c++/4.8/initializer_list **** // GCC is free software; you can redistribute it and/or modify 8:/usr/include/c++/4.8/initializer_list **** // it under the terms of the GNU General Public License as published by 9:/usr/include/c++/4.8/initializer_list **** // the Free Software Foundation; either version 3, or (at your option) 10:/usr/include/c++/4.8/initializer_list **** // any later version. 11:/usr/include/c++/4.8/initializer_list **** // 12:/usr/include/c++/4.8/initializer_list **** // GCC is distributed in the hope that it will be useful, 13:/usr/include/c++/4.8/initializer_list **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/4.8/initializer_list **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/4.8/initializer_list **** // GNU General Public License for more details. 16:/usr/include/c++/4.8/initializer_list **** // 17:/usr/include/c++/4.8/initializer_list **** // Under Section 7 of GPL version 3, you are granted additional 18:/usr/include/c++/4.8/initializer_list **** // permissions described in the GCC Runtime Library Exception, version 19:/usr/include/c++/4.8/initializer_list **** // 3.1, as published by the Free Software Foundation. 20:/usr/include/c++/4.8/initializer_list **** 21:/usr/include/c++/4.8/initializer_list **** // You should have received a copy of the GNU General Public License and GAS LISTING /tmp/ccCle2Qt.s page 4 22:/usr/include/c++/4.8/initializer_list **** // a copy of the GCC Runtime Library Exception along with this program; 23:/usr/include/c++/4.8/initializer_list **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24:/usr/include/c++/4.8/initializer_list **** // <http://www.gnu.org/licenses/>. 25:/usr/include/c++/4.8/initializer_list **** 26:/usr/include/c++/4.8/initializer_list **** /** @file initializer_list 27:/usr/include/c++/4.8/initializer_list **** * This is a Standard C++ Library header. 28:/usr/include/c++/4.8/initializer_list **** */ 29:/usr/include/c++/4.8/initializer_list **** 30:/usr/include/c++/4.8/initializer_list **** #ifndef _INITIALIZER_LIST 31:/usr/include/c++/4.8/initializer_list **** #define _INITIALIZER_LIST 32:/usr/include/c++/4.8/initializer_list **** 33:/usr/include/c++/4.8/initializer_list **** #pragma GCC system_header 34:/usr/include/c++/4.8/initializer_list **** 35:/usr/include/c++/4.8/initializer_list **** #if __cplusplus < 201103L 36:/usr/include/c++/4.8/initializer_list **** # include <bits/c++0x_warning.h> 37:/usr/include/c++/4.8/initializer_list **** #else // C++0x 38:/usr/include/c++/4.8/initializer_list **** 39:/usr/include/c++/4.8/initializer_list **** #pragma GCC visibility push(default) 40:/usr/include/c++/4.8/initializer_list **** 41:/usr/include/c++/4.8/initializer_list **** #include <bits/c++config.h> 42:/usr/include/c++/4.8/initializer_list **** 43:/usr/include/c++/4.8/initializer_list **** namespace std 44:/usr/include/c++/4.8/initializer_list **** { 45:/usr/include/c++/4.8/initializer_list **** /// initializer_list 46:/usr/include/c++/4.8/initializer_list **** template<class _E> 47:/usr/include/c++/4.8/initializer_list **** class initializer_list 48:/usr/include/c++/4.8/initializer_list **** { 49:/usr/include/c++/4.8/initializer_list **** public: 50:/usr/include/c++/4.8/initializer_list **** typedef _E value_type; 51:/usr/include/c++/4.8/initializer_list **** typedef const _E& reference; 52:/usr/include/c++/4.8/initializer_list **** typedef const _E& const_reference; 53:/usr/include/c++/4.8/initializer_list **** typedef size_t size_type; 54:/usr/include/c++/4.8/initializer_list **** typedef const _E* iterator; 55:/usr/include/c++/4.8/initializer_list **** typedef const _E* const_iterator; 56:/usr/include/c++/4.8/initializer_list **** 57:/usr/include/c++/4.8/initializer_list **** private: 58:/usr/include/c++/4.8/initializer_list **** iterator _M_array; 59:/usr/include/c++/4.8/initializer_list **** size_type _M_len; 60:/usr/include/c++/4.8/initializer_list **** 61:/usr/include/c++/4.8/initializer_list **** // The compiler can call a private constructor. 62:/usr/include/c++/4.8/initializer_list **** constexpr initializer_list(const_iterator __a, size_type __l) 63:/usr/include/c++/4.8/initializer_list **** : _M_array(__a), _M_len(__l) { } 64:/usr/include/c++/4.8/initializer_list **** 65:/usr/include/c++/4.8/initializer_list **** public: 66:/usr/include/c++/4.8/initializer_list **** constexpr initializer_list() noexcept 67:/usr/include/c++/4.8/initializer_list **** : _M_array(0), _M_len(0) { } 68:/usr/include/c++/4.8/initializer_list **** 69:/usr/include/c++/4.8/initializer_list **** // Number of elements. 70:/usr/include/c++/4.8/initializer_list **** constexpr size_type 71:/usr/include/c++/4.8/initializer_list **** size() const noexcept { return _M_len; } 72:/usr/include/c++/4.8/initializer_list **** 73:/usr/include/c++/4.8/initializer_list **** // First element. 74:/usr/include/c++/4.8/initializer_list **** constexpr const_iterator 75:/usr/include/c++/4.8/initializer_list **** begin() const noexcept { return _M_array; } 45 .loc 3 75 0 46 .cfi_startproc 47 .LVL4: GAS LISTING /tmp/ccCle2Qt.s page 5 48 .loc 3 75 0 49 0000 488B07 movq (%rdi), %rax 50 0003 C3 ret 51 .cfi_endproc 52 .LFE1665: 54 .section .text._ZNKSt16initializer_listIiE4sizeEv,"axG",@progbits,_ZNKSt16initializer_listIiE4size 55 .align 2 56 .weak _ZNKSt16initializer_listIiE4sizeEv 58 _ZNKSt16initializer_listIiE4sizeEv: 59 .LFB1667: 71:/usr/include/c++/4.8/initializer_list **** 60 .loc 3 71 0 61 .cfi_startproc 62 .LVL5: 71:/usr/include/c++/4.8/initializer_list **** 63 .loc 3 71 0 64 0000 488B4708 movq 8(%rdi), %rax 65 0004 C3 ret 66 .cfi_endproc 67 .LFE1667: 69 .section .text._ZNKSt16initializer_listIiE3endEv,"axG",@progbits,_ZNKSt16initializer_listIiE3endEv 70 .align 2 71 .weak _ZNKSt16initializer_listIiE3endEv 73 _ZNKSt16initializer_listIiE3endEv: 74 .LFB1666: 76:/usr/include/c++/4.8/initializer_list **** 77:/usr/include/c++/4.8/initializer_list **** // One past the last element. 78:/usr/include/c++/4.8/initializer_list **** constexpr const_iterator 79:/usr/include/c++/4.8/initializer_list **** end() const noexcept { return begin() + size(); } 75 .loc 3 79 0 76 .cfi_startproc 77 .LVL6: 78 0000 55 pushq %rbp 79 .cfi_def_cfa_offset 16 80 .cfi_offset 6, -16 81 0001 53 pushq %rbx 82 .cfi_def_cfa_offset 24 83 .cfi_offset 3, -24 84 0002 4883EC08 subq $8, %rsp 85 .cfi_def_cfa_offset 32 86 0006 4889FB movq %rdi, %rbx 87 .loc 3 79 0 88 0009 E8000000 call _ZNKSt16initializer_listIiE5beginEv 88 00 89 .LVL7: 90 000e 4889C5 movq %rax, %rbp 91 0011 4889DF movq %rbx, %rdi 92 0014 E8000000 call _ZNKSt16initializer_listIiE4sizeEv 92 00 93 .LVL8: 94 0019 488D4485 leaq 0(%rbp,%rax,4), %rax 94 00 95 001e 4883C408 addq $8, %rsp 96 .cfi_def_cfa_offset 24 97 0022 5B popq %rbx 98 .cfi_def_cfa_offset 16 99 .LVL9: GAS LISTING /tmp/ccCle2Qt.s page 6 100 0023 5D popq %rbp 101 .cfi_def_cfa_offset 8 102 0024 C3 ret 103 .cfi_endproc 104 .LFE1666: 106 .section .text._ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv,"axG",@progbits,_ZN9__gnu 107 .align 2 108 .weak _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv 110 _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv: 111 .LFB1677: 112 .file 4 "/usr/include/c++/4.8/bits/stl_iterator.h" 1:/usr/include/c++/4.8/bits/stl_iterator.h **** // Iterators -*- C++ -*- 2:/usr/include/c++/4.8/bits/stl_iterator.h **** 3:/usr/include/c++/4.8/bits/stl_iterator.h **** // Copyright (C) 2001-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/stl_iterator.h **** // 5:/usr/include/c++/4.8/bits/stl_iterator.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/stl_iterator.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/stl_iterator.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/stl_iterator.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/stl_iterator.h **** // any later version. 10:/usr/include/c++/4.8/bits/stl_iterator.h **** 11:/usr/include/c++/4.8/bits/stl_iterator.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/stl_iterator.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/stl_iterator.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/stl_iterator.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/stl_iterator.h **** 16:/usr/include/c++/4.8/bits/stl_iterator.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/stl_iterator.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/stl_iterator.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/stl_iterator.h **** 20:/usr/include/c++/4.8/bits/stl_iterator.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/stl_iterator.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/stl_iterator.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/stl_iterator.h **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/bits/stl_iterator.h **** 25:/usr/include/c++/4.8/bits/stl_iterator.h **** /* 26:/usr/include/c++/4.8/bits/stl_iterator.h **** * 27:/usr/include/c++/4.8/bits/stl_iterator.h **** * Copyright (c) 1994 28:/usr/include/c++/4.8/bits/stl_iterator.h **** * Hewlett-Packard Company 29:/usr/include/c++/4.8/bits/stl_iterator.h **** * 30:/usr/include/c++/4.8/bits/stl_iterator.h **** * Permission to use, copy, modify, distribute and sell this software 31:/usr/include/c++/4.8/bits/stl_iterator.h **** * and its documentation for any purpose is hereby granted without fee, 32:/usr/include/c++/4.8/bits/stl_iterator.h **** * provided that the above copyright notice appear in all copies and 33:/usr/include/c++/4.8/bits/stl_iterator.h **** * that both that copyright notice and this permission notice appear 34:/usr/include/c++/4.8/bits/stl_iterator.h **** * in supporting documentation. Hewlett-Packard Company makes no 35:/usr/include/c++/4.8/bits/stl_iterator.h **** * representations about the suitability of this software for any 36:/usr/include/c++/4.8/bits/stl_iterator.h **** * purpose. It is provided "as is" without express or implied warranty. 37:/usr/include/c++/4.8/bits/stl_iterator.h **** * 38:/usr/include/c++/4.8/bits/stl_iterator.h **** * 39:/usr/include/c++/4.8/bits/stl_iterator.h **** * Copyright (c) 1996-1998 40:/usr/include/c++/4.8/bits/stl_iterator.h **** * Silicon Graphics Computer Systems, Inc. 41:/usr/include/c++/4.8/bits/stl_iterator.h **** * 42:/usr/include/c++/4.8/bits/stl_iterator.h **** * Permission to use, copy, modify, distribute and sell this software 43:/usr/include/c++/4.8/bits/stl_iterator.h **** * and its documentation for any purpose is hereby granted without fee, 44:/usr/include/c++/4.8/bits/stl_iterator.h **** * provided that the above copyright notice appear in all copies and 45:/usr/include/c++/4.8/bits/stl_iterator.h **** * that both that copyright notice and this permission notice appear 46:/usr/include/c++/4.8/bits/stl_iterator.h **** * in supporting documentation. Silicon Graphics makes no GAS LISTING /tmp/ccCle2Qt.s page 7 47:/usr/include/c++/4.8/bits/stl_iterator.h **** * representations about the suitability of this software for any 48:/usr/include/c++/4.8/bits/stl_iterator.h **** * purpose. It is provided "as is" without express or implied warranty. 49:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 50:/usr/include/c++/4.8/bits/stl_iterator.h **** 51:/usr/include/c++/4.8/bits/stl_iterator.h **** /** @file bits/stl_iterator.h 52:/usr/include/c++/4.8/bits/stl_iterator.h **** * This is an internal header file, included by other library headers. 53:/usr/include/c++/4.8/bits/stl_iterator.h **** * Do not attempt to use it directly. @headername{iterator} 54:/usr/include/c++/4.8/bits/stl_iterator.h **** * 55:/usr/include/c++/4.8/bits/stl_iterator.h **** * This file implements reverse_iterator, back_insert_iterator, 56:/usr/include/c++/4.8/bits/stl_iterator.h **** * front_insert_iterator, insert_iterator, __normal_iterator, and their 57:/usr/include/c++/4.8/bits/stl_iterator.h **** * supporting functions and overloaded operators. 58:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 59:/usr/include/c++/4.8/bits/stl_iterator.h **** 60:/usr/include/c++/4.8/bits/stl_iterator.h **** #ifndef _STL_ITERATOR_H 61:/usr/include/c++/4.8/bits/stl_iterator.h **** #define _STL_ITERATOR_H 1 62:/usr/include/c++/4.8/bits/stl_iterator.h **** 63:/usr/include/c++/4.8/bits/stl_iterator.h **** #include <bits/cpp_type_traits.h> 64:/usr/include/c++/4.8/bits/stl_iterator.h **** #include <ext/type_traits.h> 65:/usr/include/c++/4.8/bits/stl_iterator.h **** #include <bits/move.h> 66:/usr/include/c++/4.8/bits/stl_iterator.h **** 67:/usr/include/c++/4.8/bits/stl_iterator.h **** namespace std _GLIBCXX_VISIBILITY(default) 68:/usr/include/c++/4.8/bits/stl_iterator.h **** { 69:/usr/include/c++/4.8/bits/stl_iterator.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 70:/usr/include/c++/4.8/bits/stl_iterator.h **** 71:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 72:/usr/include/c++/4.8/bits/stl_iterator.h **** * @addtogroup iterators 73:/usr/include/c++/4.8/bits/stl_iterator.h **** * @{ 74:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 75:/usr/include/c++/4.8/bits/stl_iterator.h **** 76:/usr/include/c++/4.8/bits/stl_iterator.h **** // 24.4.1 Reverse iterators 77:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 78:/usr/include/c++/4.8/bits/stl_iterator.h **** * Bidirectional and random access iterators have corresponding reverse 79:/usr/include/c++/4.8/bits/stl_iterator.h **** * %iterator adaptors that iterate through the data structure in the 80:/usr/include/c++/4.8/bits/stl_iterator.h **** * opposite direction. They have the same signatures as the corresponding 81:/usr/include/c++/4.8/bits/stl_iterator.h **** * iterators. The fundamental relation between a reverse %iterator and its 82:/usr/include/c++/4.8/bits/stl_iterator.h **** * corresponding %iterator @c i is established by the identity: 83:/usr/include/c++/4.8/bits/stl_iterator.h **** * @code 84:/usr/include/c++/4.8/bits/stl_iterator.h **** * &*(reverse_iterator(i)) == &*(i - 1) 85:/usr/include/c++/4.8/bits/stl_iterator.h **** * @endcode 86:/usr/include/c++/4.8/bits/stl_iterator.h **** * 87:/usr/include/c++/4.8/bits/stl_iterator.h **** * <em>This mapping is dictated by the fact that while there is always a 88:/usr/include/c++/4.8/bits/stl_iterator.h **** * pointer past the end of an array, there might not be a valid pointer 89:/usr/include/c++/4.8/bits/stl_iterator.h **** * before the beginning of an array.</em> [24.4.1]/1,2 90:/usr/include/c++/4.8/bits/stl_iterator.h **** * 91:/usr/include/c++/4.8/bits/stl_iterator.h **** * Reverse iterators can be tricky and surprising at first. Their 92:/usr/include/c++/4.8/bits/stl_iterator.h **** * semantics make sense, however, and the trickiness is a side effect of 93:/usr/include/c++/4.8/bits/stl_iterator.h **** * the requirement that the iterators must be safe. 94:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 95:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> 96:/usr/include/c++/4.8/bits/stl_iterator.h **** class reverse_iterator 97:/usr/include/c++/4.8/bits/stl_iterator.h **** : public iterator<typename iterator_traits<_Iterator>::iterator_category, 98:/usr/include/c++/4.8/bits/stl_iterator.h **** typename iterator_traits<_Iterator>::value_type, 99:/usr/include/c++/4.8/bits/stl_iterator.h **** typename iterator_traits<_Iterator>::difference_type, 100:/usr/include/c++/4.8/bits/stl_iterator.h **** typename iterator_traits<_Iterator>::pointer, 101:/usr/include/c++/4.8/bits/stl_iterator.h **** typename iterator_traits<_Iterator>::reference> 102:/usr/include/c++/4.8/bits/stl_iterator.h **** { 103:/usr/include/c++/4.8/bits/stl_iterator.h **** protected: GAS LISTING /tmp/ccCle2Qt.s page 8 104:/usr/include/c++/4.8/bits/stl_iterator.h **** _Iterator current; 105:/usr/include/c++/4.8/bits/stl_iterator.h **** 106:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef iterator_traits<_Iterator> __traits_type; 107:/usr/include/c++/4.8/bits/stl_iterator.h **** 108:/usr/include/c++/4.8/bits/stl_iterator.h **** public: 109:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef _Iterator iterator_type; 110:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef typename __traits_type::difference_type difference_type; 111:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef typename __traits_type::pointer pointer; 112:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef typename __traits_type::reference reference; 113:/usr/include/c++/4.8/bits/stl_iterator.h **** 114:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 115:/usr/include/c++/4.8/bits/stl_iterator.h **** * The default constructor value-initializes member @p current. 116:/usr/include/c++/4.8/bits/stl_iterator.h **** * If it is a pointer, that means it is zero-initialized. 117:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 118:/usr/include/c++/4.8/bits/stl_iterator.h **** // _GLIBCXX_RESOLVE_LIB_DEFECTS 119:/usr/include/c++/4.8/bits/stl_iterator.h **** // 235 No specification of default ctor for reverse_iterator 120:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator() : current() { } 121:/usr/include/c++/4.8/bits/stl_iterator.h **** 122:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 123:/usr/include/c++/4.8/bits/stl_iterator.h **** * This %iterator will move in the opposite direction that @p x does. 124:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 125:/usr/include/c++/4.8/bits/stl_iterator.h **** explicit 126:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator(iterator_type __x) : current(__x) { } 127:/usr/include/c++/4.8/bits/stl_iterator.h **** 128:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 129:/usr/include/c++/4.8/bits/stl_iterator.h **** * The copy constructor is normal. 130:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 131:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator(const reverse_iterator& __x) 132:/usr/include/c++/4.8/bits/stl_iterator.h **** : current(__x.current) { } 133:/usr/include/c++/4.8/bits/stl_iterator.h **** 134:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 135:/usr/include/c++/4.8/bits/stl_iterator.h **** * A %reverse_iterator across other types can be copied if the 136:/usr/include/c++/4.8/bits/stl_iterator.h **** * underlying %iterator can be converted to the type of @c current. 137:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 138:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iter> 139:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator(const reverse_iterator<_Iter>& __x) 140:/usr/include/c++/4.8/bits/stl_iterator.h **** : current(__x.base()) { } 141:/usr/include/c++/4.8/bits/stl_iterator.h **** 142:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 143:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return @c current, the %iterator used for underlying work. 144:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 145:/usr/include/c++/4.8/bits/stl_iterator.h **** iterator_type 146:/usr/include/c++/4.8/bits/stl_iterator.h **** base() const 147:/usr/include/c++/4.8/bits/stl_iterator.h **** { return current; } 148:/usr/include/c++/4.8/bits/stl_iterator.h **** 149:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 150:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return A reference to the value at @c --current 151:/usr/include/c++/4.8/bits/stl_iterator.h **** * 152:/usr/include/c++/4.8/bits/stl_iterator.h **** * This requires that @c --current is dereferenceable. 153:/usr/include/c++/4.8/bits/stl_iterator.h **** * 154:/usr/include/c++/4.8/bits/stl_iterator.h **** * @warning This implementation requires that for an iterator of the 155:/usr/include/c++/4.8/bits/stl_iterator.h **** * underlying iterator type, @c x, a reference obtained by 156:/usr/include/c++/4.8/bits/stl_iterator.h **** * @c *x remains valid after @c x has been modified or 157:/usr/include/c++/4.8/bits/stl_iterator.h **** * destroyed. This is a bug: http://gcc.gnu.org/PR51823 158:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 159:/usr/include/c++/4.8/bits/stl_iterator.h **** reference 160:/usr/include/c++/4.8/bits/stl_iterator.h **** operator*() const GAS LISTING /tmp/ccCle2Qt.s page 9 161:/usr/include/c++/4.8/bits/stl_iterator.h **** { 162:/usr/include/c++/4.8/bits/stl_iterator.h **** _Iterator __tmp = current; 163:/usr/include/c++/4.8/bits/stl_iterator.h **** return *--__tmp; 164:/usr/include/c++/4.8/bits/stl_iterator.h **** } 165:/usr/include/c++/4.8/bits/stl_iterator.h **** 166:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 167:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return A pointer to the value at @c --current 168:/usr/include/c++/4.8/bits/stl_iterator.h **** * 169:/usr/include/c++/4.8/bits/stl_iterator.h **** * This requires that @c --current is dereferenceable. 170:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 171:/usr/include/c++/4.8/bits/stl_iterator.h **** pointer 172:/usr/include/c++/4.8/bits/stl_iterator.h **** operator->() const 173:/usr/include/c++/4.8/bits/stl_iterator.h **** { return &(operator*()); } 174:/usr/include/c++/4.8/bits/stl_iterator.h **** 175:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 176:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return @c *this 177:/usr/include/c++/4.8/bits/stl_iterator.h **** * 178:/usr/include/c++/4.8/bits/stl_iterator.h **** * Decrements the underlying iterator. 179:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 180:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator& 181:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++() 182:/usr/include/c++/4.8/bits/stl_iterator.h **** { 183:/usr/include/c++/4.8/bits/stl_iterator.h **** --current; 184:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 185:/usr/include/c++/4.8/bits/stl_iterator.h **** } 186:/usr/include/c++/4.8/bits/stl_iterator.h **** 187:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 188:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return The original value of @c *this 189:/usr/include/c++/4.8/bits/stl_iterator.h **** * 190:/usr/include/c++/4.8/bits/stl_iterator.h **** * Decrements the underlying iterator. 191:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 192:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator 193:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++(int) 194:/usr/include/c++/4.8/bits/stl_iterator.h **** { 195:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator __tmp = *this; 196:/usr/include/c++/4.8/bits/stl_iterator.h **** --current; 197:/usr/include/c++/4.8/bits/stl_iterator.h **** return __tmp; 198:/usr/include/c++/4.8/bits/stl_iterator.h **** } 199:/usr/include/c++/4.8/bits/stl_iterator.h **** 200:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 201:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return @c *this 202:/usr/include/c++/4.8/bits/stl_iterator.h **** * 203:/usr/include/c++/4.8/bits/stl_iterator.h **** * Increments the underlying iterator. 204:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 205:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator& 206:/usr/include/c++/4.8/bits/stl_iterator.h **** operator--() 207:/usr/include/c++/4.8/bits/stl_iterator.h **** { 208:/usr/include/c++/4.8/bits/stl_iterator.h **** ++current; 209:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 210:/usr/include/c++/4.8/bits/stl_iterator.h **** } 211:/usr/include/c++/4.8/bits/stl_iterator.h **** 212:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 213:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return A reverse_iterator with the previous value of @c *this 214:/usr/include/c++/4.8/bits/stl_iterator.h **** * 215:/usr/include/c++/4.8/bits/stl_iterator.h **** * Increments the underlying iterator. 216:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 217:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator GAS LISTING /tmp/ccCle2Qt.s page 10 218:/usr/include/c++/4.8/bits/stl_iterator.h **** operator--(int) 219:/usr/include/c++/4.8/bits/stl_iterator.h **** { 220:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator __tmp = *this; 221:/usr/include/c++/4.8/bits/stl_iterator.h **** ++current; 222:/usr/include/c++/4.8/bits/stl_iterator.h **** return __tmp; 223:/usr/include/c++/4.8/bits/stl_iterator.h **** } 224:/usr/include/c++/4.8/bits/stl_iterator.h **** 225:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 226:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return A reverse_iterator that refers to @c current - @a __n 227:/usr/include/c++/4.8/bits/stl_iterator.h **** * 228:/usr/include/c++/4.8/bits/stl_iterator.h **** * The underlying iterator must be a Random Access Iterator. 229:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 230:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator 231:/usr/include/c++/4.8/bits/stl_iterator.h **** operator+(difference_type __n) const 232:/usr/include/c++/4.8/bits/stl_iterator.h **** { return reverse_iterator(current - __n); } 233:/usr/include/c++/4.8/bits/stl_iterator.h **** 234:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 235:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return *this 236:/usr/include/c++/4.8/bits/stl_iterator.h **** * 237:/usr/include/c++/4.8/bits/stl_iterator.h **** * Moves the underlying iterator backwards @a __n steps. 238:/usr/include/c++/4.8/bits/stl_iterator.h **** * The underlying iterator must be a Random Access Iterator. 239:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 240:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator& 241:/usr/include/c++/4.8/bits/stl_iterator.h **** operator+=(difference_type __n) 242:/usr/include/c++/4.8/bits/stl_iterator.h **** { 243:/usr/include/c++/4.8/bits/stl_iterator.h **** current -= __n; 244:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 245:/usr/include/c++/4.8/bits/stl_iterator.h **** } 246:/usr/include/c++/4.8/bits/stl_iterator.h **** 247:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 248:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return A reverse_iterator that refers to @c current - @a __n 249:/usr/include/c++/4.8/bits/stl_iterator.h **** * 250:/usr/include/c++/4.8/bits/stl_iterator.h **** * The underlying iterator must be a Random Access Iterator. 251:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 252:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator 253:/usr/include/c++/4.8/bits/stl_iterator.h **** operator-(difference_type __n) const 254:/usr/include/c++/4.8/bits/stl_iterator.h **** { return reverse_iterator(current + __n); } 255:/usr/include/c++/4.8/bits/stl_iterator.h **** 256:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 257:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return *this 258:/usr/include/c++/4.8/bits/stl_iterator.h **** * 259:/usr/include/c++/4.8/bits/stl_iterator.h **** * Moves the underlying iterator forwards @a __n steps. 260:/usr/include/c++/4.8/bits/stl_iterator.h **** * The underlying iterator must be a Random Access Iterator. 261:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 262:/usr/include/c++/4.8/bits/stl_iterator.h **** reverse_iterator& 263:/usr/include/c++/4.8/bits/stl_iterator.h **** operator-=(difference_type __n) 264:/usr/include/c++/4.8/bits/stl_iterator.h **** { 265:/usr/include/c++/4.8/bits/stl_iterator.h **** current += __n; 266:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 267:/usr/include/c++/4.8/bits/stl_iterator.h **** } 268:/usr/include/c++/4.8/bits/stl_iterator.h **** 269:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 270:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return The value at @c current - @a __n - 1 271:/usr/include/c++/4.8/bits/stl_iterator.h **** * 272:/usr/include/c++/4.8/bits/stl_iterator.h **** * The underlying iterator must be a Random Access Iterator. 273:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 274:/usr/include/c++/4.8/bits/stl_iterator.h **** reference GAS LISTING /tmp/ccCle2Qt.s page 11 275:/usr/include/c++/4.8/bits/stl_iterator.h **** operator[](difference_type __n) const 276:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *(*this + __n); } 277:/usr/include/c++/4.8/bits/stl_iterator.h **** }; 278:/usr/include/c++/4.8/bits/stl_iterator.h **** 279:/usr/include/c++/4.8/bits/stl_iterator.h **** //@{ 280:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 281:/usr/include/c++/4.8/bits/stl_iterator.h **** * @param __x A %reverse_iterator. 282:/usr/include/c++/4.8/bits/stl_iterator.h **** * @param __y A %reverse_iterator. 283:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return A simple bool. 284:/usr/include/c++/4.8/bits/stl_iterator.h **** * 285:/usr/include/c++/4.8/bits/stl_iterator.h **** * Reverse iterators forward many operations to their underlying base() 286:/usr/include/c++/4.8/bits/stl_iterator.h **** * iterators. Others are implemented in terms of one another. 287:/usr/include/c++/4.8/bits/stl_iterator.h **** * 288:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 289:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> 290:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 291:/usr/include/c++/4.8/bits/stl_iterator.h **** operator==(const reverse_iterator<_Iterator>& __x, 292:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_Iterator>& __y) 293:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __x.base() == __y.base(); } 294:/usr/include/c++/4.8/bits/stl_iterator.h **** 295:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> 296:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 297:/usr/include/c++/4.8/bits/stl_iterator.h **** operator<(const reverse_iterator<_Iterator>& __x, 298:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_Iterator>& __y) 299:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __y.base() < __x.base(); } 300:/usr/include/c++/4.8/bits/stl_iterator.h **** 301:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> 302:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 303:/usr/include/c++/4.8/bits/stl_iterator.h **** operator!=(const reverse_iterator<_Iterator>& __x, 304:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_Iterator>& __y) 305:/usr/include/c++/4.8/bits/stl_iterator.h **** { return !(__x == __y); } 306:/usr/include/c++/4.8/bits/stl_iterator.h **** 307:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> 308:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 309:/usr/include/c++/4.8/bits/stl_iterator.h **** operator>(const reverse_iterator<_Iterator>& __x, 310:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_Iterator>& __y) 311:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __y < __x; } 312:/usr/include/c++/4.8/bits/stl_iterator.h **** 313:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> 314:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 315:/usr/include/c++/4.8/bits/stl_iterator.h **** operator<=(const reverse_iterator<_Iterator>& __x, 316:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_Iterator>& __y) 317:/usr/include/c++/4.8/bits/stl_iterator.h **** { return !(__y < __x); } 318:/usr/include/c++/4.8/bits/stl_iterator.h **** 319:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> 320:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 321:/usr/include/c++/4.8/bits/stl_iterator.h **** operator>=(const reverse_iterator<_Iterator>& __x, 322:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_Iterator>& __y) 323:/usr/include/c++/4.8/bits/stl_iterator.h **** { return !(__x < __y); } 324:/usr/include/c++/4.8/bits/stl_iterator.h **** 325:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> 326:/usr/include/c++/4.8/bits/stl_iterator.h **** inline typename reverse_iterator<_Iterator>::difference_type 327:/usr/include/c++/4.8/bits/stl_iterator.h **** operator-(const reverse_iterator<_Iterator>& __x, 328:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_Iterator>& __y) 329:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __y.base() - __x.base(); } 330:/usr/include/c++/4.8/bits/stl_iterator.h **** 331:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator> GAS LISTING /tmp/ccCle2Qt.s page 12 332:/usr/include/c++/4.8/bits/stl_iterator.h **** inline reverse_iterator<_Iterator> 333:/usr/include/c++/4.8/bits/stl_iterator.h **** operator+(typename reverse_iterator<_Iterator>::difference_type __n, 334:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_Iterator>& __x) 335:/usr/include/c++/4.8/bits/stl_iterator.h **** { return reverse_iterator<_Iterator>(__x.base() - __n); } 336:/usr/include/c++/4.8/bits/stl_iterator.h **** 337:/usr/include/c++/4.8/bits/stl_iterator.h **** // _GLIBCXX_RESOLVE_LIB_DEFECTS 338:/usr/include/c++/4.8/bits/stl_iterator.h **** // DR 280. Comparison of reverse_iterator to const reverse_iterator. 339:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR> 340:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 341:/usr/include/c++/4.8/bits/stl_iterator.h **** operator==(const reverse_iterator<_IteratorL>& __x, 342:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_IteratorR>& __y) 343:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __x.base() == __y.base(); } 344:/usr/include/c++/4.8/bits/stl_iterator.h **** 345:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR> 346:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 347:/usr/include/c++/4.8/bits/stl_iterator.h **** operator<(const reverse_iterator<_IteratorL>& __x, 348:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_IteratorR>& __y) 349:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __y.base() < __x.base(); } 350:/usr/include/c++/4.8/bits/stl_iterator.h **** 351:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR> 352:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 353:/usr/include/c++/4.8/bits/stl_iterator.h **** operator!=(const reverse_iterator<_IteratorL>& __x, 354:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_IteratorR>& __y) 355:/usr/include/c++/4.8/bits/stl_iterator.h **** { return !(__x == __y); } 356:/usr/include/c++/4.8/bits/stl_iterator.h **** 357:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR> 358:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 359:/usr/include/c++/4.8/bits/stl_iterator.h **** operator>(const reverse_iterator<_IteratorL>& __x, 360:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_IteratorR>& __y) 361:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __y < __x; } 362:/usr/include/c++/4.8/bits/stl_iterator.h **** 363:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR> 364:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 365:/usr/include/c++/4.8/bits/stl_iterator.h **** operator<=(const reverse_iterator<_IteratorL>& __x, 366:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_IteratorR>& __y) 367:/usr/include/c++/4.8/bits/stl_iterator.h **** { return !(__y < __x); } 368:/usr/include/c++/4.8/bits/stl_iterator.h **** 369:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR> 370:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 371:/usr/include/c++/4.8/bits/stl_iterator.h **** operator>=(const reverse_iterator<_IteratorL>& __x, 372:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_IteratorR>& __y) 373:/usr/include/c++/4.8/bits/stl_iterator.h **** { return !(__x < __y); } 374:/usr/include/c++/4.8/bits/stl_iterator.h **** 375:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR> 376:/usr/include/c++/4.8/bits/stl_iterator.h **** #if __cplusplus >= 201103L 377:/usr/include/c++/4.8/bits/stl_iterator.h **** // DR 685. 378:/usr/include/c++/4.8/bits/stl_iterator.h **** inline auto 379:/usr/include/c++/4.8/bits/stl_iterator.h **** operator-(const reverse_iterator<_IteratorL>& __x, 380:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_IteratorR>& __y) 381:/usr/include/c++/4.8/bits/stl_iterator.h **** -> decltype(__y.base() - __x.base()) 382:/usr/include/c++/4.8/bits/stl_iterator.h **** #else 383:/usr/include/c++/4.8/bits/stl_iterator.h **** inline typename reverse_iterator<_IteratorL>::difference_type 384:/usr/include/c++/4.8/bits/stl_iterator.h **** operator-(const reverse_iterator<_IteratorL>& __x, 385:/usr/include/c++/4.8/bits/stl_iterator.h **** const reverse_iterator<_IteratorR>& __y) 386:/usr/include/c++/4.8/bits/stl_iterator.h **** #endif 387:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __y.base() - __x.base(); } 388:/usr/include/c++/4.8/bits/stl_iterator.h **** //@} GAS LISTING /tmp/ccCle2Qt.s page 13 389:/usr/include/c++/4.8/bits/stl_iterator.h **** 390:/usr/include/c++/4.8/bits/stl_iterator.h **** // 24.4.2.2.1 back_insert_iterator 391:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 392:/usr/include/c++/4.8/bits/stl_iterator.h **** * @brief Turns assignment into insertion. 393:/usr/include/c++/4.8/bits/stl_iterator.h **** * 394:/usr/include/c++/4.8/bits/stl_iterator.h **** * These are output iterators, constructed from a container-of-T. 395:/usr/include/c++/4.8/bits/stl_iterator.h **** * Assigning a T to the iterator appends it to the container using 396:/usr/include/c++/4.8/bits/stl_iterator.h **** * push_back. 397:/usr/include/c++/4.8/bits/stl_iterator.h **** * 398:/usr/include/c++/4.8/bits/stl_iterator.h **** * Tip: Using the back_inserter function to create these iterators can 399:/usr/include/c++/4.8/bits/stl_iterator.h **** * save typing. 400:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 401:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Container> 402:/usr/include/c++/4.8/bits/stl_iterator.h **** class back_insert_iterator 403:/usr/include/c++/4.8/bits/stl_iterator.h **** : public iterator<output_iterator_tag, void, void, void, void> 404:/usr/include/c++/4.8/bits/stl_iterator.h **** { 405:/usr/include/c++/4.8/bits/stl_iterator.h **** protected: 406:/usr/include/c++/4.8/bits/stl_iterator.h **** _Container* container; 407:/usr/include/c++/4.8/bits/stl_iterator.h **** 408:/usr/include/c++/4.8/bits/stl_iterator.h **** public: 409:/usr/include/c++/4.8/bits/stl_iterator.h **** /// A nested typedef for the type of whatever container you used. 410:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef _Container container_type; 411:/usr/include/c++/4.8/bits/stl_iterator.h **** 412:/usr/include/c++/4.8/bits/stl_iterator.h **** /// The only way to create this %iterator is with a container. 413:/usr/include/c++/4.8/bits/stl_iterator.h **** explicit 414:/usr/include/c++/4.8/bits/stl_iterator.h **** back_insert_iterator(_Container& __x) : container(&__x) { } 415:/usr/include/c++/4.8/bits/stl_iterator.h **** 416:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 417:/usr/include/c++/4.8/bits/stl_iterator.h **** * @param __value An instance of whatever type 418:/usr/include/c++/4.8/bits/stl_iterator.h **** * container_type::const_reference is; presumably a 419:/usr/include/c++/4.8/bits/stl_iterator.h **** * reference-to-const T for container<T>. 420:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return This %iterator, for chained operations. 421:/usr/include/c++/4.8/bits/stl_iterator.h **** * 422:/usr/include/c++/4.8/bits/stl_iterator.h **** * This kind of %iterator doesn't really have a @a position in the 423:/usr/include/c++/4.8/bits/stl_iterator.h **** * container (you can think of the position as being permanently at 424:/usr/include/c++/4.8/bits/stl_iterator.h **** * the end, if you like). Assigning a value to the %iterator will 425:/usr/include/c++/4.8/bits/stl_iterator.h **** * always append the value to the end of the container. 426:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 427:/usr/include/c++/4.8/bits/stl_iterator.h **** #if __cplusplus < 201103L 428:/usr/include/c++/4.8/bits/stl_iterator.h **** back_insert_iterator& 429:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(typename _Container::const_reference __value) 430:/usr/include/c++/4.8/bits/stl_iterator.h **** { 431:/usr/include/c++/4.8/bits/stl_iterator.h **** container->push_back(__value); 432:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 433:/usr/include/c++/4.8/bits/stl_iterator.h **** } 434:/usr/include/c++/4.8/bits/stl_iterator.h **** #else 435:/usr/include/c++/4.8/bits/stl_iterator.h **** back_insert_iterator& 436:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(const typename _Container::value_type& __value) 437:/usr/include/c++/4.8/bits/stl_iterator.h **** { 438:/usr/include/c++/4.8/bits/stl_iterator.h **** container->push_back(__value); 439:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 440:/usr/include/c++/4.8/bits/stl_iterator.h **** } 441:/usr/include/c++/4.8/bits/stl_iterator.h **** 442:/usr/include/c++/4.8/bits/stl_iterator.h **** back_insert_iterator& 443:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(typename _Container::value_type&& __value) 444:/usr/include/c++/4.8/bits/stl_iterator.h **** { 445:/usr/include/c++/4.8/bits/stl_iterator.h **** container->push_back(std::move(__value)); GAS LISTING /tmp/ccCle2Qt.s page 14 446:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 447:/usr/include/c++/4.8/bits/stl_iterator.h **** } 448:/usr/include/c++/4.8/bits/stl_iterator.h **** #endif 449:/usr/include/c++/4.8/bits/stl_iterator.h **** 450:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. 451:/usr/include/c++/4.8/bits/stl_iterator.h **** back_insert_iterator& 452:/usr/include/c++/4.8/bits/stl_iterator.h **** operator*() 453:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 454:/usr/include/c++/4.8/bits/stl_iterator.h **** 455:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. (This %iterator does not @a move.) 456:/usr/include/c++/4.8/bits/stl_iterator.h **** back_insert_iterator& 457:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++() 458:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 459:/usr/include/c++/4.8/bits/stl_iterator.h **** 460:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. (This %iterator does not @a move.) 461:/usr/include/c++/4.8/bits/stl_iterator.h **** back_insert_iterator 462:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++(int) 463:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 464:/usr/include/c++/4.8/bits/stl_iterator.h **** }; 465:/usr/include/c++/4.8/bits/stl_iterator.h **** 466:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 467:/usr/include/c++/4.8/bits/stl_iterator.h **** * @param __x A container of arbitrary type. 468:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return An instance of back_insert_iterator working on @p __x. 469:/usr/include/c++/4.8/bits/stl_iterator.h **** * 470:/usr/include/c++/4.8/bits/stl_iterator.h **** * This wrapper function helps in creating back_insert_iterator instances. 471:/usr/include/c++/4.8/bits/stl_iterator.h **** * Typing the name of the %iterator requires knowing the precise full 472:/usr/include/c++/4.8/bits/stl_iterator.h **** * type of the container, which can be tedious and impedes generic 473:/usr/include/c++/4.8/bits/stl_iterator.h **** * programming. Using this function lets you take advantage of automatic 474:/usr/include/c++/4.8/bits/stl_iterator.h **** * template parameter deduction, making the compiler match the correct 475:/usr/include/c++/4.8/bits/stl_iterator.h **** * types for you. 476:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 477:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Container> 478:/usr/include/c++/4.8/bits/stl_iterator.h **** inline back_insert_iterator<_Container> 479:/usr/include/c++/4.8/bits/stl_iterator.h **** back_inserter(_Container& __x) 480:/usr/include/c++/4.8/bits/stl_iterator.h **** { return back_insert_iterator<_Container>(__x); } 481:/usr/include/c++/4.8/bits/stl_iterator.h **** 482:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 483:/usr/include/c++/4.8/bits/stl_iterator.h **** * @brief Turns assignment into insertion. 484:/usr/include/c++/4.8/bits/stl_iterator.h **** * 485:/usr/include/c++/4.8/bits/stl_iterator.h **** * These are output iterators, constructed from a container-of-T. 486:/usr/include/c++/4.8/bits/stl_iterator.h **** * Assigning a T to the iterator prepends it to the container using 487:/usr/include/c++/4.8/bits/stl_iterator.h **** * push_front. 488:/usr/include/c++/4.8/bits/stl_iterator.h **** * 489:/usr/include/c++/4.8/bits/stl_iterator.h **** * Tip: Using the front_inserter function to create these iterators can 490:/usr/include/c++/4.8/bits/stl_iterator.h **** * save typing. 491:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 492:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Container> 493:/usr/include/c++/4.8/bits/stl_iterator.h **** class front_insert_iterator 494:/usr/include/c++/4.8/bits/stl_iterator.h **** : public iterator<output_iterator_tag, void, void, void, void> 495:/usr/include/c++/4.8/bits/stl_iterator.h **** { 496:/usr/include/c++/4.8/bits/stl_iterator.h **** protected: 497:/usr/include/c++/4.8/bits/stl_iterator.h **** _Container* container; 498:/usr/include/c++/4.8/bits/stl_iterator.h **** 499:/usr/include/c++/4.8/bits/stl_iterator.h **** public: 500:/usr/include/c++/4.8/bits/stl_iterator.h **** /// A nested typedef for the type of whatever container you used. 501:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef _Container container_type; 502:/usr/include/c++/4.8/bits/stl_iterator.h **** GAS LISTING /tmp/ccCle2Qt.s page 15 503:/usr/include/c++/4.8/bits/stl_iterator.h **** /// The only way to create this %iterator is with a container. 504:/usr/include/c++/4.8/bits/stl_iterator.h **** explicit front_insert_iterator(_Container& __x) : container(&__x) { } 505:/usr/include/c++/4.8/bits/stl_iterator.h **** 506:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 507:/usr/include/c++/4.8/bits/stl_iterator.h **** * @param __value An instance of whatever type 508:/usr/include/c++/4.8/bits/stl_iterator.h **** * container_type::const_reference is; presumably a 509:/usr/include/c++/4.8/bits/stl_iterator.h **** * reference-to-const T for container<T>. 510:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return This %iterator, for chained operations. 511:/usr/include/c++/4.8/bits/stl_iterator.h **** * 512:/usr/include/c++/4.8/bits/stl_iterator.h **** * This kind of %iterator doesn't really have a @a position in the 513:/usr/include/c++/4.8/bits/stl_iterator.h **** * container (you can think of the position as being permanently at 514:/usr/include/c++/4.8/bits/stl_iterator.h **** * the front, if you like). Assigning a value to the %iterator will 515:/usr/include/c++/4.8/bits/stl_iterator.h **** * always prepend the value to the front of the container. 516:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 517:/usr/include/c++/4.8/bits/stl_iterator.h **** #if __cplusplus < 201103L 518:/usr/include/c++/4.8/bits/stl_iterator.h **** front_insert_iterator& 519:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(typename _Container::const_reference __value) 520:/usr/include/c++/4.8/bits/stl_iterator.h **** { 521:/usr/include/c++/4.8/bits/stl_iterator.h **** container->push_front(__value); 522:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 523:/usr/include/c++/4.8/bits/stl_iterator.h **** } 524:/usr/include/c++/4.8/bits/stl_iterator.h **** #else 525:/usr/include/c++/4.8/bits/stl_iterator.h **** front_insert_iterator& 526:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(const typename _Container::value_type& __value) 527:/usr/include/c++/4.8/bits/stl_iterator.h **** { 528:/usr/include/c++/4.8/bits/stl_iterator.h **** container->push_front(__value); 529:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 530:/usr/include/c++/4.8/bits/stl_iterator.h **** } 531:/usr/include/c++/4.8/bits/stl_iterator.h **** 532:/usr/include/c++/4.8/bits/stl_iterator.h **** front_insert_iterator& 533:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(typename _Container::value_type&& __value) 534:/usr/include/c++/4.8/bits/stl_iterator.h **** { 535:/usr/include/c++/4.8/bits/stl_iterator.h **** container->push_front(std::move(__value)); 536:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 537:/usr/include/c++/4.8/bits/stl_iterator.h **** } 538:/usr/include/c++/4.8/bits/stl_iterator.h **** #endif 539:/usr/include/c++/4.8/bits/stl_iterator.h **** 540:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. 541:/usr/include/c++/4.8/bits/stl_iterator.h **** front_insert_iterator& 542:/usr/include/c++/4.8/bits/stl_iterator.h **** operator*() 543:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 544:/usr/include/c++/4.8/bits/stl_iterator.h **** 545:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. (This %iterator does not @a move.) 546:/usr/include/c++/4.8/bits/stl_iterator.h **** front_insert_iterator& 547:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++() 548:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 549:/usr/include/c++/4.8/bits/stl_iterator.h **** 550:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. (This %iterator does not @a move.) 551:/usr/include/c++/4.8/bits/stl_iterator.h **** front_insert_iterator 552:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++(int) 553:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 554:/usr/include/c++/4.8/bits/stl_iterator.h **** }; 555:/usr/include/c++/4.8/bits/stl_iterator.h **** 556:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 557:/usr/include/c++/4.8/bits/stl_iterator.h **** * @param __x A container of arbitrary type. 558:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return An instance of front_insert_iterator working on @p x. 559:/usr/include/c++/4.8/bits/stl_iterator.h **** * GAS LISTING /tmp/ccCle2Qt.s page 16 560:/usr/include/c++/4.8/bits/stl_iterator.h **** * This wrapper function helps in creating front_insert_iterator instances. 561:/usr/include/c++/4.8/bits/stl_iterator.h **** * Typing the name of the %iterator requires knowing the precise full 562:/usr/include/c++/4.8/bits/stl_iterator.h **** * type of the container, which can be tedious and impedes generic 563:/usr/include/c++/4.8/bits/stl_iterator.h **** * programming. Using this function lets you take advantage of automatic 564:/usr/include/c++/4.8/bits/stl_iterator.h **** * template parameter deduction, making the compiler match the correct 565:/usr/include/c++/4.8/bits/stl_iterator.h **** * types for you. 566:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 567:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Container> 568:/usr/include/c++/4.8/bits/stl_iterator.h **** inline front_insert_iterator<_Container> 569:/usr/include/c++/4.8/bits/stl_iterator.h **** front_inserter(_Container& __x) 570:/usr/include/c++/4.8/bits/stl_iterator.h **** { return front_insert_iterator<_Container>(__x); } 571:/usr/include/c++/4.8/bits/stl_iterator.h **** 572:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 573:/usr/include/c++/4.8/bits/stl_iterator.h **** * @brief Turns assignment into insertion. 574:/usr/include/c++/4.8/bits/stl_iterator.h **** * 575:/usr/include/c++/4.8/bits/stl_iterator.h **** * These are output iterators, constructed from a container-of-T. 576:/usr/include/c++/4.8/bits/stl_iterator.h **** * Assigning a T to the iterator inserts it in the container at the 577:/usr/include/c++/4.8/bits/stl_iterator.h **** * %iterator's position, rather than overwriting the value at that 578:/usr/include/c++/4.8/bits/stl_iterator.h **** * position. 579:/usr/include/c++/4.8/bits/stl_iterator.h **** * 580:/usr/include/c++/4.8/bits/stl_iterator.h **** * (Sequences will actually insert a @e copy of the value before the 581:/usr/include/c++/4.8/bits/stl_iterator.h **** * %iterator's position.) 582:/usr/include/c++/4.8/bits/stl_iterator.h **** * 583:/usr/include/c++/4.8/bits/stl_iterator.h **** * Tip: Using the inserter function to create these iterators can 584:/usr/include/c++/4.8/bits/stl_iterator.h **** * save typing. 585:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 586:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Container> 587:/usr/include/c++/4.8/bits/stl_iterator.h **** class insert_iterator 588:/usr/include/c++/4.8/bits/stl_iterator.h **** : public iterator<output_iterator_tag, void, void, void, void> 589:/usr/include/c++/4.8/bits/stl_iterator.h **** { 590:/usr/include/c++/4.8/bits/stl_iterator.h **** protected: 591:/usr/include/c++/4.8/bits/stl_iterator.h **** _Container* container; 592:/usr/include/c++/4.8/bits/stl_iterator.h **** typename _Container::iterator iter; 593:/usr/include/c++/4.8/bits/stl_iterator.h **** 594:/usr/include/c++/4.8/bits/stl_iterator.h **** public: 595:/usr/include/c++/4.8/bits/stl_iterator.h **** /// A nested typedef for the type of whatever container you used. 596:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef _Container container_type; 597:/usr/include/c++/4.8/bits/stl_iterator.h **** 598:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 599:/usr/include/c++/4.8/bits/stl_iterator.h **** * The only way to create this %iterator is with a container and an 600:/usr/include/c++/4.8/bits/stl_iterator.h **** * initial position (a normal %iterator into the container). 601:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 602:/usr/include/c++/4.8/bits/stl_iterator.h **** insert_iterator(_Container& __x, typename _Container::iterator __i) 603:/usr/include/c++/4.8/bits/stl_iterator.h **** : container(&__x), iter(__i) {} 604:/usr/include/c++/4.8/bits/stl_iterator.h **** 605:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 606:/usr/include/c++/4.8/bits/stl_iterator.h **** * @param __value An instance of whatever type 607:/usr/include/c++/4.8/bits/stl_iterator.h **** * container_type::const_reference is; presumably a 608:/usr/include/c++/4.8/bits/stl_iterator.h **** * reference-to-const T for container<T>. 609:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return This %iterator, for chained operations. 610:/usr/include/c++/4.8/bits/stl_iterator.h **** * 611:/usr/include/c++/4.8/bits/stl_iterator.h **** * This kind of %iterator maintains its own position in the 612:/usr/include/c++/4.8/bits/stl_iterator.h **** * container. Assigning a value to the %iterator will insert the 613:/usr/include/c++/4.8/bits/stl_iterator.h **** * value into the container at the place before the %iterator. 614:/usr/include/c++/4.8/bits/stl_iterator.h **** * 615:/usr/include/c++/4.8/bits/stl_iterator.h **** * The position is maintained such that subsequent assignments will 616:/usr/include/c++/4.8/bits/stl_iterator.h **** * insert values immediately after one another. For example, GAS LISTING /tmp/ccCle2Qt.s page 17 617:/usr/include/c++/4.8/bits/stl_iterator.h **** * @code 618:/usr/include/c++/4.8/bits/stl_iterator.h **** * // vector v contains A and Z 619:/usr/include/c++/4.8/bits/stl_iterator.h **** * 620:/usr/include/c++/4.8/bits/stl_iterator.h **** * insert_iterator i (v, ++v.begin()); 621:/usr/include/c++/4.8/bits/stl_iterator.h **** * i = 1; 622:/usr/include/c++/4.8/bits/stl_iterator.h **** * i = 2; 623:/usr/include/c++/4.8/bits/stl_iterator.h **** * i = 3; 624:/usr/include/c++/4.8/bits/stl_iterator.h **** * 625:/usr/include/c++/4.8/bits/stl_iterator.h **** * // vector v contains A, 1, 2, 3, and Z 626:/usr/include/c++/4.8/bits/stl_iterator.h **** * @endcode 627:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 628:/usr/include/c++/4.8/bits/stl_iterator.h **** #if __cplusplus < 201103L 629:/usr/include/c++/4.8/bits/stl_iterator.h **** insert_iterator& 630:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(typename _Container::const_reference __value) 631:/usr/include/c++/4.8/bits/stl_iterator.h **** { 632:/usr/include/c++/4.8/bits/stl_iterator.h **** iter = container->insert(iter, __value); 633:/usr/include/c++/4.8/bits/stl_iterator.h **** ++iter; 634:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 635:/usr/include/c++/4.8/bits/stl_iterator.h **** } 636:/usr/include/c++/4.8/bits/stl_iterator.h **** #else 637:/usr/include/c++/4.8/bits/stl_iterator.h **** insert_iterator& 638:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(const typename _Container::value_type& __value) 639:/usr/include/c++/4.8/bits/stl_iterator.h **** { 640:/usr/include/c++/4.8/bits/stl_iterator.h **** iter = container->insert(iter, __value); 641:/usr/include/c++/4.8/bits/stl_iterator.h **** ++iter; 642:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 643:/usr/include/c++/4.8/bits/stl_iterator.h **** } 644:/usr/include/c++/4.8/bits/stl_iterator.h **** 645:/usr/include/c++/4.8/bits/stl_iterator.h **** insert_iterator& 646:/usr/include/c++/4.8/bits/stl_iterator.h **** operator=(typename _Container::value_type&& __value) 647:/usr/include/c++/4.8/bits/stl_iterator.h **** { 648:/usr/include/c++/4.8/bits/stl_iterator.h **** iter = container->insert(iter, std::move(__value)); 649:/usr/include/c++/4.8/bits/stl_iterator.h **** ++iter; 650:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 651:/usr/include/c++/4.8/bits/stl_iterator.h **** } 652:/usr/include/c++/4.8/bits/stl_iterator.h **** #endif 653:/usr/include/c++/4.8/bits/stl_iterator.h **** 654:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. 655:/usr/include/c++/4.8/bits/stl_iterator.h **** insert_iterator& 656:/usr/include/c++/4.8/bits/stl_iterator.h **** operator*() 657:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 658:/usr/include/c++/4.8/bits/stl_iterator.h **** 659:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. (This %iterator does not @a move.) 660:/usr/include/c++/4.8/bits/stl_iterator.h **** insert_iterator& 661:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++() 662:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 663:/usr/include/c++/4.8/bits/stl_iterator.h **** 664:/usr/include/c++/4.8/bits/stl_iterator.h **** /// Simply returns *this. (This %iterator does not @a move.) 665:/usr/include/c++/4.8/bits/stl_iterator.h **** insert_iterator& 666:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++(int) 667:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *this; } 668:/usr/include/c++/4.8/bits/stl_iterator.h **** }; 669:/usr/include/c++/4.8/bits/stl_iterator.h **** 670:/usr/include/c++/4.8/bits/stl_iterator.h **** /** 671:/usr/include/c++/4.8/bits/stl_iterator.h **** * @param __x A container of arbitrary type. 672:/usr/include/c++/4.8/bits/stl_iterator.h **** * @return An instance of insert_iterator working on @p __x. 673:/usr/include/c++/4.8/bits/stl_iterator.h **** * GAS LISTING /tmp/ccCle2Qt.s page 18 674:/usr/include/c++/4.8/bits/stl_iterator.h **** * This wrapper function helps in creating insert_iterator instances. 675:/usr/include/c++/4.8/bits/stl_iterator.h **** * Typing the name of the %iterator requires knowing the precise full 676:/usr/include/c++/4.8/bits/stl_iterator.h **** * type of the container, which can be tedious and impedes generic 677:/usr/include/c++/4.8/bits/stl_iterator.h **** * programming. Using this function lets you take advantage of automatic 678:/usr/include/c++/4.8/bits/stl_iterator.h **** * template parameter deduction, making the compiler match the correct 679:/usr/include/c++/4.8/bits/stl_iterator.h **** * types for you. 680:/usr/include/c++/4.8/bits/stl_iterator.h **** */ 681:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Container, typename _Iterator> 682:/usr/include/c++/4.8/bits/stl_iterator.h **** inline insert_iterator<_Container> 683:/usr/include/c++/4.8/bits/stl_iterator.h **** inserter(_Container& __x, _Iterator __i) 684:/usr/include/c++/4.8/bits/stl_iterator.h **** { 685:/usr/include/c++/4.8/bits/stl_iterator.h **** return insert_iterator<_Container>(__x, 686:/usr/include/c++/4.8/bits/stl_iterator.h **** typename _Container::iterator(__i)); 687:/usr/include/c++/4.8/bits/stl_iterator.h **** } 688:/usr/include/c++/4.8/bits/stl_iterator.h **** 689:/usr/include/c++/4.8/bits/stl_iterator.h **** // @} group iterators 690:/usr/include/c++/4.8/bits/stl_iterator.h **** 691:/usr/include/c++/4.8/bits/stl_iterator.h **** _GLIBCXX_END_NAMESPACE_VERSION 692:/usr/include/c++/4.8/bits/stl_iterator.h **** } // namespace 693:/usr/include/c++/4.8/bits/stl_iterator.h **** 694:/usr/include/c++/4.8/bits/stl_iterator.h **** namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) 695:/usr/include/c++/4.8/bits/stl_iterator.h **** { 696:/usr/include/c++/4.8/bits/stl_iterator.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 697:/usr/include/c++/4.8/bits/stl_iterator.h **** 698:/usr/include/c++/4.8/bits/stl_iterator.h **** // This iterator adapter is @a normal in the sense that it does not 699:/usr/include/c++/4.8/bits/stl_iterator.h **** // change the semantics of any of the operators of its iterator 700:/usr/include/c++/4.8/bits/stl_iterator.h **** // parameter. Its primary purpose is to convert an iterator that is 701:/usr/include/c++/4.8/bits/stl_iterator.h **** // not a class, e.g. a pointer, into an iterator that is a class. 702:/usr/include/c++/4.8/bits/stl_iterator.h **** // The _Container parameter exists solely so that different containers 703:/usr/include/c++/4.8/bits/stl_iterator.h **** // using this template can instantiate different types, even if the 704:/usr/include/c++/4.8/bits/stl_iterator.h **** // _Iterator parameter is the same. 705:/usr/include/c++/4.8/bits/stl_iterator.h **** using std::iterator_traits; 706:/usr/include/c++/4.8/bits/stl_iterator.h **** using std::iterator; 707:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator, typename _Container> 708:/usr/include/c++/4.8/bits/stl_iterator.h **** class __normal_iterator 709:/usr/include/c++/4.8/bits/stl_iterator.h **** { 710:/usr/include/c++/4.8/bits/stl_iterator.h **** protected: 711:/usr/include/c++/4.8/bits/stl_iterator.h **** _Iterator _M_current; 712:/usr/include/c++/4.8/bits/stl_iterator.h **** 713:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef iterator_traits<_Iterator> __traits_type; 714:/usr/include/c++/4.8/bits/stl_iterator.h **** 715:/usr/include/c++/4.8/bits/stl_iterator.h **** public: 716:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef _Iterator iterator_type; 717:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef typename __traits_type::iterator_category iterator_category; 718:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef typename __traits_type::value_type value_type; 719:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef typename __traits_type::difference_type difference_type; 720:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef typename __traits_type::reference reference; 721:/usr/include/c++/4.8/bits/stl_iterator.h **** typedef typename __traits_type::pointer pointer; 722:/usr/include/c++/4.8/bits/stl_iterator.h **** 723:/usr/include/c++/4.8/bits/stl_iterator.h **** _GLIBCXX_CONSTEXPR __normal_iterator() : _M_current(_Iterator()) { } 724:/usr/include/c++/4.8/bits/stl_iterator.h **** 725:/usr/include/c++/4.8/bits/stl_iterator.h **** explicit 726:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator(const _Iterator& __i) : _M_current(__i) { } 727:/usr/include/c++/4.8/bits/stl_iterator.h **** 728:/usr/include/c++/4.8/bits/stl_iterator.h **** // Allow iterator to const_iterator conversion 729:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iter> 730:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator(const __normal_iterator<_Iter, GAS LISTING /tmp/ccCle2Qt.s page 19 731:/usr/include/c++/4.8/bits/stl_iterator.h **** typename __enable_if< 732:/usr/include/c++/4.8/bits/stl_iterator.h **** (std::__are_same<_Iter, typename _Container::pointer>::__value), 733:/usr/include/c++/4.8/bits/stl_iterator.h **** _Container>::__type>& __i) 734:/usr/include/c++/4.8/bits/stl_iterator.h **** : _M_current(__i.base()) { } 735:/usr/include/c++/4.8/bits/stl_iterator.h **** 736:/usr/include/c++/4.8/bits/stl_iterator.h **** // Forward iterator requirements 737:/usr/include/c++/4.8/bits/stl_iterator.h **** reference 738:/usr/include/c++/4.8/bits/stl_iterator.h **** operator*() const 739:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *_M_current; } 740:/usr/include/c++/4.8/bits/stl_iterator.h **** 741:/usr/include/c++/4.8/bits/stl_iterator.h **** pointer 742:/usr/include/c++/4.8/bits/stl_iterator.h **** operator->() const 743:/usr/include/c++/4.8/bits/stl_iterator.h **** { return _M_current; } 744:/usr/include/c++/4.8/bits/stl_iterator.h **** 745:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator& 746:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++() 113 .loc 4 746 0 114 .cfi_startproc 115 .LVL10: 116 0000 4889F8 movq %rdi, %rax 747:/usr/include/c++/4.8/bits/stl_iterator.h **** { 748:/usr/include/c++/4.8/bits/stl_iterator.h **** ++_M_current; 117 .loc 4 748 0 118 0003 48830704 addq $4, (%rdi) 749:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 750:/usr/include/c++/4.8/bits/stl_iterator.h **** } 119 .loc 4 750 0 120 0007 C3 ret 121 .cfi_endproc 122 .LFE1677: 124 .section .text._ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv,"axG",@progbits,_ZNK9__g 125 .align 2 126 .weak _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv 128 _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv: 129 .LFB1678: 738:/usr/include/c++/4.8/bits/stl_iterator.h **** { return *_M_current; } 130 .loc 4 738 0 131 .cfi_startproc 132 .LVL11: 739:/usr/include/c++/4.8/bits/stl_iterator.h **** 133 .loc 4 739 0 134 0000 488B07 movq (%rdi), %rax 135 0003 C3 ret 136 .cfi_endproc 137 .LFE1678: 139 .section .text._ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv,"axG",@progbits,_ZN9__gn 140 .align 2 141 .weak _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv 143 _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv: 144 .LFB1683: 746:/usr/include/c++/4.8/bits/stl_iterator.h **** { 145 .loc 4 746 0 146 .cfi_startproc 147 .LVL12: 148 0000 4889F8 movq %rdi, %rax 748:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 149 .loc 4 748 0 GAS LISTING /tmp/ccCle2Qt.s page 20 150 0003 48830704 addq $4, (%rdi) 151 .loc 4 750 0 152 0007 C3 ret 153 .cfi_endproc 154 .LFE1683: 156 .section .text._ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv,"axG",@progbits,_ZNSt12_Vector_b 157 .align 2 158 .weak _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv 160 _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv: 161 .LFB1747: 162 .file 5 "/usr/include/c++/4.8/bits/stl_vector.h" 1:/usr/include/c++/4.8/bits/stl_vector.h **** // Vector implementation -*- C++ -*- 2:/usr/include/c++/4.8/bits/stl_vector.h **** 3:/usr/include/c++/4.8/bits/stl_vector.h **** // Copyright (C) 2001-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/stl_vector.h **** // 5:/usr/include/c++/4.8/bits/stl_vector.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/stl_vector.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/stl_vector.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/stl_vector.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/stl_vector.h **** // any later version. 10:/usr/include/c++/4.8/bits/stl_vector.h **** 11:/usr/include/c++/4.8/bits/stl_vector.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/stl_vector.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/stl_vector.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/stl_vector.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/stl_vector.h **** 16:/usr/include/c++/4.8/bits/stl_vector.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/stl_vector.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/stl_vector.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/stl_vector.h **** 20:/usr/include/c++/4.8/bits/stl_vector.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/stl_vector.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/stl_vector.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/stl_vector.h **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/bits/stl_vector.h **** 25:/usr/include/c++/4.8/bits/stl_vector.h **** /* 26:/usr/include/c++/4.8/bits/stl_vector.h **** * 27:/usr/include/c++/4.8/bits/stl_vector.h **** * Copyright (c) 1994 28:/usr/include/c++/4.8/bits/stl_vector.h **** * Hewlett-Packard Company 29:/usr/include/c++/4.8/bits/stl_vector.h **** * 30:/usr/include/c++/4.8/bits/stl_vector.h **** * Permission to use, copy, modify, distribute and sell this software 31:/usr/include/c++/4.8/bits/stl_vector.h **** * and its documentation for any purpose is hereby granted without fee, 32:/usr/include/c++/4.8/bits/stl_vector.h **** * provided that the above copyright notice appear in all copies and 33:/usr/include/c++/4.8/bits/stl_vector.h **** * that both that copyright notice and this permission notice appear 34:/usr/include/c++/4.8/bits/stl_vector.h **** * in supporting documentation. Hewlett-Packard Company makes no 35:/usr/include/c++/4.8/bits/stl_vector.h **** * representations about the suitability of this software for any 36:/usr/include/c++/4.8/bits/stl_vector.h **** * purpose. It is provided "as is" without express or implied warranty. 37:/usr/include/c++/4.8/bits/stl_vector.h **** * 38:/usr/include/c++/4.8/bits/stl_vector.h **** * 39:/usr/include/c++/4.8/bits/stl_vector.h **** * Copyright (c) 1996 40:/usr/include/c++/4.8/bits/stl_vector.h **** * Silicon Graphics Computer Systems, Inc. 41:/usr/include/c++/4.8/bits/stl_vector.h **** * 42:/usr/include/c++/4.8/bits/stl_vector.h **** * Permission to use, copy, modify, distribute and sell this software 43:/usr/include/c++/4.8/bits/stl_vector.h **** * and its documentation for any purpose is hereby granted without fee, 44:/usr/include/c++/4.8/bits/stl_vector.h **** * provided that the above copyright notice appear in all copies and 45:/usr/include/c++/4.8/bits/stl_vector.h **** * that both that copyright notice and this permission notice appear 46:/usr/include/c++/4.8/bits/stl_vector.h **** * in supporting documentation. Silicon Graphics makes no GAS LISTING /tmp/ccCle2Qt.s page 21 47:/usr/include/c++/4.8/bits/stl_vector.h **** * representations about the suitability of this software for any 48:/usr/include/c++/4.8/bits/stl_vector.h **** * purpose. It is provided "as is" without express or implied warranty. 49:/usr/include/c++/4.8/bits/stl_vector.h **** */ 50:/usr/include/c++/4.8/bits/stl_vector.h **** 51:/usr/include/c++/4.8/bits/stl_vector.h **** /** @file bits/stl_vector.h 52:/usr/include/c++/4.8/bits/stl_vector.h **** * This is an internal header file, included by other library headers. 53:/usr/include/c++/4.8/bits/stl_vector.h **** * Do not attempt to use it directly. @headername{vector} 54:/usr/include/c++/4.8/bits/stl_vector.h **** */ 55:/usr/include/c++/4.8/bits/stl_vector.h **** 56:/usr/include/c++/4.8/bits/stl_vector.h **** #ifndef _STL_VECTOR_H 57:/usr/include/c++/4.8/bits/stl_vector.h **** #define _STL_VECTOR_H 1 58:/usr/include/c++/4.8/bits/stl_vector.h **** 59:/usr/include/c++/4.8/bits/stl_vector.h **** #include <bits/stl_iterator_base_funcs.h> 60:/usr/include/c++/4.8/bits/stl_vector.h **** #include <bits/functexcept.h> 61:/usr/include/c++/4.8/bits/stl_vector.h **** #include <bits/concept_check.h> 62:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 63:/usr/include/c++/4.8/bits/stl_vector.h **** #include <initializer_list> 64:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 65:/usr/include/c++/4.8/bits/stl_vector.h **** 66:/usr/include/c++/4.8/bits/stl_vector.h **** namespace std _GLIBCXX_VISIBILITY(default) 67:/usr/include/c++/4.8/bits/stl_vector.h **** { 68:/usr/include/c++/4.8/bits/stl_vector.h **** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER 69:/usr/include/c++/4.8/bits/stl_vector.h **** 70:/usr/include/c++/4.8/bits/stl_vector.h **** /// See bits/stl_deque.h's _Deque_base for an explanation. 71:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _Tp, typename _Alloc> 72:/usr/include/c++/4.8/bits/stl_vector.h **** struct _Vector_base 73:/usr/include/c++/4.8/bits/stl_vector.h **** { 74:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 75:/usr/include/c++/4.8/bits/stl_vector.h **** rebind<_Tp>::other _Tp_alloc_type; 76:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer 77:/usr/include/c++/4.8/bits/stl_vector.h **** pointer; 78:/usr/include/c++/4.8/bits/stl_vector.h **** 79:/usr/include/c++/4.8/bits/stl_vector.h **** struct _Vector_impl 80:/usr/include/c++/4.8/bits/stl_vector.h **** : public _Tp_alloc_type 81:/usr/include/c++/4.8/bits/stl_vector.h **** { 82:/usr/include/c++/4.8/bits/stl_vector.h **** pointer _M_start; 83:/usr/include/c++/4.8/bits/stl_vector.h **** pointer _M_finish; 84:/usr/include/c++/4.8/bits/stl_vector.h **** pointer _M_end_of_storage; 85:/usr/include/c++/4.8/bits/stl_vector.h **** 86:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_impl() 87:/usr/include/c++/4.8/bits/stl_vector.h **** : _Tp_alloc_type(), _M_start(0), _M_finish(0), _M_end_of_storage(0) 88:/usr/include/c++/4.8/bits/stl_vector.h **** { } 89:/usr/include/c++/4.8/bits/stl_vector.h **** 90:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_impl(_Tp_alloc_type const& __a) 91:/usr/include/c++/4.8/bits/stl_vector.h **** : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) 92:/usr/include/c++/4.8/bits/stl_vector.h **** { } 93:/usr/include/c++/4.8/bits/stl_vector.h **** 94:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 95:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_impl(_Tp_alloc_type&& __a) 96:/usr/include/c++/4.8/bits/stl_vector.h **** : _Tp_alloc_type(std::move(__a)), 97:/usr/include/c++/4.8/bits/stl_vector.h **** _M_start(0), _M_finish(0), _M_end_of_storage(0) 98:/usr/include/c++/4.8/bits/stl_vector.h **** { } 99:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 100:/usr/include/c++/4.8/bits/stl_vector.h **** 101:/usr/include/c++/4.8/bits/stl_vector.h **** void _M_swap_data(_Vector_impl& __x) 102:/usr/include/c++/4.8/bits/stl_vector.h **** { 103:/usr/include/c++/4.8/bits/stl_vector.h **** std::swap(_M_start, __x._M_start); GAS LISTING /tmp/ccCle2Qt.s page 22 104:/usr/include/c++/4.8/bits/stl_vector.h **** std::swap(_M_finish, __x._M_finish); 105:/usr/include/c++/4.8/bits/stl_vector.h **** std::swap(_M_end_of_storage, __x._M_end_of_storage); 106:/usr/include/c++/4.8/bits/stl_vector.h **** } 107:/usr/include/c++/4.8/bits/stl_vector.h **** }; 108:/usr/include/c++/4.8/bits/stl_vector.h **** 109:/usr/include/c++/4.8/bits/stl_vector.h **** public: 110:/usr/include/c++/4.8/bits/stl_vector.h **** typedef _Alloc allocator_type; 111:/usr/include/c++/4.8/bits/stl_vector.h **** 112:/usr/include/c++/4.8/bits/stl_vector.h **** _Tp_alloc_type& 113:/usr/include/c++/4.8/bits/stl_vector.h **** _M_get_Tp_allocator() _GLIBCXX_NOEXCEPT 163 .loc 5 113 0 164 .cfi_startproc 165 .LVL13: 166 0000 4889F8 movq %rdi, %rax 114:/usr/include/c++/4.8/bits/stl_vector.h **** { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } 167 .loc 5 114 0 168 0003 C3 ret 169 .cfi_endproc 170 .LFE1747: 172 .section .text._ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC2ERKS1_,"axG",@progbits,_ZN9_ 173 .align 2 174 .weak _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC2ERKS1_ 176 _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC2ERKS1_: 177 .LFB1751: 726:/usr/include/c++/4.8/bits/stl_iterator.h **** 178 .loc 4 726 0 179 .cfi_startproc 180 .LVL14: 181 .LBB2: 726:/usr/include/c++/4.8/bits/stl_iterator.h **** 182 .loc 4 726 0 183 0000 488B06 movq (%rsi), %rax 184 0003 488907 movq %rax, (%rdi) 185 0006 C3 ret 186 .LBE2: 187 .cfi_endproc 188 .LFE1751: 190 .weak _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC1ERKS1_ 191 .set _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC1ERKS1_,_ZN9__gnu_cxx17__normal_iterato 192 .section .text._ZNSt6vectorIiSaIiEE5beginEv,"axG",@progbits,_ZNSt6vectorIiSaIiEE5beginEv,comdat 193 .align 2 194 .weak _ZNSt6vectorIiSaIiEE5beginEv 196 _ZNSt6vectorIiSaIiEE5beginEv: 197 .LFB1674: 115:/usr/include/c++/4.8/bits/stl_vector.h **** 116:/usr/include/c++/4.8/bits/stl_vector.h **** const _Tp_alloc_type& 117:/usr/include/c++/4.8/bits/stl_vector.h **** _M_get_Tp_allocator() const _GLIBCXX_NOEXCEPT 118:/usr/include/c++/4.8/bits/stl_vector.h **** { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); } 119:/usr/include/c++/4.8/bits/stl_vector.h **** 120:/usr/include/c++/4.8/bits/stl_vector.h **** allocator_type 121:/usr/include/c++/4.8/bits/stl_vector.h **** get_allocator() const _GLIBCXX_NOEXCEPT 122:/usr/include/c++/4.8/bits/stl_vector.h **** { return allocator_type(_M_get_Tp_allocator()); } 123:/usr/include/c++/4.8/bits/stl_vector.h **** 124:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_base() 125:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl() { } 126:/usr/include/c++/4.8/bits/stl_vector.h **** 127:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_base(const allocator_type& __a) GAS LISTING /tmp/ccCle2Qt.s page 23 128:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl(__a) { } 129:/usr/include/c++/4.8/bits/stl_vector.h **** 130:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_base(size_t __n) 131:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl() 132:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_create_storage(__n); } 133:/usr/include/c++/4.8/bits/stl_vector.h **** 134:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_base(size_t __n, const allocator_type& __a) 135:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl(__a) 136:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_create_storage(__n); } 137:/usr/include/c++/4.8/bits/stl_vector.h **** 138:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 139:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_base(_Tp_alloc_type&& __a) 140:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl(std::move(__a)) { } 141:/usr/include/c++/4.8/bits/stl_vector.h **** 142:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_base(_Vector_base&& __x) 143:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl(std::move(__x._M_get_Tp_allocator())) 144:/usr/include/c++/4.8/bits/stl_vector.h **** { this->_M_impl._M_swap_data(__x._M_impl); } 145:/usr/include/c++/4.8/bits/stl_vector.h **** 146:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_base(_Vector_base&& __x, const allocator_type& __a) 147:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl(__a) 148:/usr/include/c++/4.8/bits/stl_vector.h **** { 149:/usr/include/c++/4.8/bits/stl_vector.h **** if (__x.get_allocator() == __a) 150:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_swap_data(__x._M_impl); 151:/usr/include/c++/4.8/bits/stl_vector.h **** else 152:/usr/include/c++/4.8/bits/stl_vector.h **** { 153:/usr/include/c++/4.8/bits/stl_vector.h **** size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; 154:/usr/include/c++/4.8/bits/stl_vector.h **** _M_create_storage(__n); 155:/usr/include/c++/4.8/bits/stl_vector.h **** } 156:/usr/include/c++/4.8/bits/stl_vector.h **** } 157:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 158:/usr/include/c++/4.8/bits/stl_vector.h **** 159:/usr/include/c++/4.8/bits/stl_vector.h **** ~_Vector_base() 160:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage 161:/usr/include/c++/4.8/bits/stl_vector.h **** - this->_M_impl._M_start); } 162:/usr/include/c++/4.8/bits/stl_vector.h **** 163:/usr/include/c++/4.8/bits/stl_vector.h **** public: 164:/usr/include/c++/4.8/bits/stl_vector.h **** _Vector_impl _M_impl; 165:/usr/include/c++/4.8/bits/stl_vector.h **** 166:/usr/include/c++/4.8/bits/stl_vector.h **** pointer 167:/usr/include/c++/4.8/bits/stl_vector.h **** _M_allocate(size_t __n) 168:/usr/include/c++/4.8/bits/stl_vector.h **** { return __n != 0 ? _M_impl.allocate(__n) : 0; } 169:/usr/include/c++/4.8/bits/stl_vector.h **** 170:/usr/include/c++/4.8/bits/stl_vector.h **** void 171:/usr/include/c++/4.8/bits/stl_vector.h **** _M_deallocate(pointer __p, size_t __n) 172:/usr/include/c++/4.8/bits/stl_vector.h **** { 173:/usr/include/c++/4.8/bits/stl_vector.h **** if (__p) 174:/usr/include/c++/4.8/bits/stl_vector.h **** _M_impl.deallocate(__p, __n); 175:/usr/include/c++/4.8/bits/stl_vector.h **** } 176:/usr/include/c++/4.8/bits/stl_vector.h **** 177:/usr/include/c++/4.8/bits/stl_vector.h **** private: 178:/usr/include/c++/4.8/bits/stl_vector.h **** void 179:/usr/include/c++/4.8/bits/stl_vector.h **** _M_create_storage(size_t __n) 180:/usr/include/c++/4.8/bits/stl_vector.h **** { 181:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start = this->_M_allocate(__n); 182:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_finish = this->_M_impl._M_start; 183:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 184:/usr/include/c++/4.8/bits/stl_vector.h **** } GAS LISTING /tmp/ccCle2Qt.s page 24 185:/usr/include/c++/4.8/bits/stl_vector.h **** }; 186:/usr/include/c++/4.8/bits/stl_vector.h **** 187:/usr/include/c++/4.8/bits/stl_vector.h **** 188:/usr/include/c++/4.8/bits/stl_vector.h **** /** 189:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief A standard container which offers fixed time access to 190:/usr/include/c++/4.8/bits/stl_vector.h **** * individual elements in any order. 191:/usr/include/c++/4.8/bits/stl_vector.h **** * 192:/usr/include/c++/4.8/bits/stl_vector.h **** * @ingroup sequences 193:/usr/include/c++/4.8/bits/stl_vector.h **** * 194:/usr/include/c++/4.8/bits/stl_vector.h **** * @tparam _Tp Type of element. 195:/usr/include/c++/4.8/bits/stl_vector.h **** * @tparam _Alloc Allocator type, defaults to allocator<_Tp>. 196:/usr/include/c++/4.8/bits/stl_vector.h **** * 197:/usr/include/c++/4.8/bits/stl_vector.h **** * Meets the requirements of a <a href="tables.html#65">container</a>, a 198:/usr/include/c++/4.8/bits/stl_vector.h **** * <a href="tables.html#66">reversible container</a>, and a 199:/usr/include/c++/4.8/bits/stl_vector.h **** * <a href="tables.html#67">sequence</a>, including the 200:/usr/include/c++/4.8/bits/stl_vector.h **** * <a href="tables.html#68">optional sequence requirements</a> with the 201:/usr/include/c++/4.8/bits/stl_vector.h **** * %exception of @c push_front and @c pop_front. 202:/usr/include/c++/4.8/bits/stl_vector.h **** * 203:/usr/include/c++/4.8/bits/stl_vector.h **** * In some terminology a %vector can be described as a dynamic 204:/usr/include/c++/4.8/bits/stl_vector.h **** * C-style array, it offers fast and efficient access to individual 205:/usr/include/c++/4.8/bits/stl_vector.h **** * elements in any order and saves the user from worrying about 206:/usr/include/c++/4.8/bits/stl_vector.h **** * memory and size allocation. Subscripting ( @c [] ) access is 207:/usr/include/c++/4.8/bits/stl_vector.h **** * also provided as with C-style arrays. 208:/usr/include/c++/4.8/bits/stl_vector.h **** */ 209:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _Tp, typename _Alloc = std::allocator<_Tp> > 210:/usr/include/c++/4.8/bits/stl_vector.h **** class vector : protected _Vector_base<_Tp, _Alloc> 211:/usr/include/c++/4.8/bits/stl_vector.h **** { 212:/usr/include/c++/4.8/bits/stl_vector.h **** // Concept requirements. 213:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename _Alloc::value_type _Alloc_value_type; 214:/usr/include/c++/4.8/bits/stl_vector.h **** __glibcxx_class_requires(_Tp, _SGIAssignableConcept) 215:/usr/include/c++/4.8/bits/stl_vector.h **** __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) 216:/usr/include/c++/4.8/bits/stl_vector.h **** 217:/usr/include/c++/4.8/bits/stl_vector.h **** typedef _Vector_base<_Tp, _Alloc> _Base; 218:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 219:/usr/include/c++/4.8/bits/stl_vector.h **** typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 220:/usr/include/c++/4.8/bits/stl_vector.h **** 221:/usr/include/c++/4.8/bits/stl_vector.h **** public: 222:/usr/include/c++/4.8/bits/stl_vector.h **** typedef _Tp value_type; 223:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename _Base::pointer pointer; 224:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename _Alloc_traits::const_pointer const_pointer; 225:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename _Alloc_traits::reference reference; 226:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename _Alloc_traits::const_reference const_reference; 227:/usr/include/c++/4.8/bits/stl_vector.h **** typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator; 228:/usr/include/c++/4.8/bits/stl_vector.h **** typedef __gnu_cxx::__normal_iterator<const_pointer, vector> 229:/usr/include/c++/4.8/bits/stl_vector.h **** const_iterator; 230:/usr/include/c++/4.8/bits/stl_vector.h **** typedef std::reverse_iterator<const_iterator> const_reverse_iterator; 231:/usr/include/c++/4.8/bits/stl_vector.h **** typedef std::reverse_iterator<iterator> reverse_iterator; 232:/usr/include/c++/4.8/bits/stl_vector.h **** typedef size_t size_type; 233:/usr/include/c++/4.8/bits/stl_vector.h **** typedef ptrdiff_t difference_type; 234:/usr/include/c++/4.8/bits/stl_vector.h **** typedef _Alloc allocator_type; 235:/usr/include/c++/4.8/bits/stl_vector.h **** 236:/usr/include/c++/4.8/bits/stl_vector.h **** protected: 237:/usr/include/c++/4.8/bits/stl_vector.h **** using _Base::_M_allocate; 238:/usr/include/c++/4.8/bits/stl_vector.h **** using _Base::_M_deallocate; 239:/usr/include/c++/4.8/bits/stl_vector.h **** using _Base::_M_impl; 240:/usr/include/c++/4.8/bits/stl_vector.h **** using _Base::_M_get_Tp_allocator; 241:/usr/include/c++/4.8/bits/stl_vector.h **** GAS LISTING /tmp/ccCle2Qt.s page 25 242:/usr/include/c++/4.8/bits/stl_vector.h **** public: 243:/usr/include/c++/4.8/bits/stl_vector.h **** // [23.2.4.1] construct/copy/destroy 244:/usr/include/c++/4.8/bits/stl_vector.h **** // (assign() and get_allocator() are also listed in this section) 245:/usr/include/c++/4.8/bits/stl_vector.h **** /** 246:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Default constructor creates no elements. 247:/usr/include/c++/4.8/bits/stl_vector.h **** */ 248:/usr/include/c++/4.8/bits/stl_vector.h **** vector() 249:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base() { } 250:/usr/include/c++/4.8/bits/stl_vector.h **** 251:/usr/include/c++/4.8/bits/stl_vector.h **** /** 252:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Creates a %vector with no elements. 253:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __a An allocator object. 254:/usr/include/c++/4.8/bits/stl_vector.h **** */ 255:/usr/include/c++/4.8/bits/stl_vector.h **** explicit 256:/usr/include/c++/4.8/bits/stl_vector.h **** vector(const allocator_type& __a) 257:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__a) { } 258:/usr/include/c++/4.8/bits/stl_vector.h **** 259:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 260:/usr/include/c++/4.8/bits/stl_vector.h **** /** 261:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Creates a %vector with default constructed elements. 262:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n The number of elements to initially create. 263:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __a An allocator. 264:/usr/include/c++/4.8/bits/stl_vector.h **** * 265:/usr/include/c++/4.8/bits/stl_vector.h **** * This constructor fills the %vector with @a __n default 266:/usr/include/c++/4.8/bits/stl_vector.h **** * constructed elements. 267:/usr/include/c++/4.8/bits/stl_vector.h **** */ 268:/usr/include/c++/4.8/bits/stl_vector.h **** explicit 269:/usr/include/c++/4.8/bits/stl_vector.h **** vector(size_type __n, const allocator_type& __a = allocator_type()) 270:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__n, __a) 271:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_default_initialize(__n); } 272:/usr/include/c++/4.8/bits/stl_vector.h **** 273:/usr/include/c++/4.8/bits/stl_vector.h **** /** 274:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Creates a %vector with copies of an exemplar element. 275:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n The number of elements to initially create. 276:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __value An element to copy. 277:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __a An allocator. 278:/usr/include/c++/4.8/bits/stl_vector.h **** * 279:/usr/include/c++/4.8/bits/stl_vector.h **** * This constructor fills the %vector with @a __n copies of @a __value. 280:/usr/include/c++/4.8/bits/stl_vector.h **** */ 281:/usr/include/c++/4.8/bits/stl_vector.h **** vector(size_type __n, const value_type& __value, 282:/usr/include/c++/4.8/bits/stl_vector.h **** const allocator_type& __a = allocator_type()) 283:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__n, __a) 284:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_fill_initialize(__n, __value); } 285:/usr/include/c++/4.8/bits/stl_vector.h **** #else 286:/usr/include/c++/4.8/bits/stl_vector.h **** /** 287:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Creates a %vector with copies of an exemplar element. 288:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n The number of elements to initially create. 289:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __value An element to copy. 290:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __a An allocator. 291:/usr/include/c++/4.8/bits/stl_vector.h **** * 292:/usr/include/c++/4.8/bits/stl_vector.h **** * This constructor fills the %vector with @a __n copies of @a __value. 293:/usr/include/c++/4.8/bits/stl_vector.h **** */ 294:/usr/include/c++/4.8/bits/stl_vector.h **** explicit 295:/usr/include/c++/4.8/bits/stl_vector.h **** vector(size_type __n, const value_type& __value = value_type(), 296:/usr/include/c++/4.8/bits/stl_vector.h **** const allocator_type& __a = allocator_type()) 297:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__n, __a) 298:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_fill_initialize(__n, __value); } GAS LISTING /tmp/ccCle2Qt.s page 26 299:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 300:/usr/include/c++/4.8/bits/stl_vector.h **** 301:/usr/include/c++/4.8/bits/stl_vector.h **** /** 302:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief %Vector copy constructor. 303:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x A %vector of identical element and allocator types. 304:/usr/include/c++/4.8/bits/stl_vector.h **** * 305:/usr/include/c++/4.8/bits/stl_vector.h **** * The newly-created %vector uses a copy of the allocation 306:/usr/include/c++/4.8/bits/stl_vector.h **** * object used by @a __x. All the elements of @a __x are copied, 307:/usr/include/c++/4.8/bits/stl_vector.h **** * but any extra memory in 308:/usr/include/c++/4.8/bits/stl_vector.h **** * @a __x (for fast expansion) will not be copied. 309:/usr/include/c++/4.8/bits/stl_vector.h **** */ 310:/usr/include/c++/4.8/bits/stl_vector.h **** vector(const vector& __x) 311:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__x.size(), 312:/usr/include/c++/4.8/bits/stl_vector.h **** _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) 313:/usr/include/c++/4.8/bits/stl_vector.h **** { this->_M_impl._M_finish = 314:/usr/include/c++/4.8/bits/stl_vector.h **** std::__uninitialized_copy_a(__x.begin(), __x.end(), 315:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start, 316:/usr/include/c++/4.8/bits/stl_vector.h **** _M_get_Tp_allocator()); 317:/usr/include/c++/4.8/bits/stl_vector.h **** } 318:/usr/include/c++/4.8/bits/stl_vector.h **** 319:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 320:/usr/include/c++/4.8/bits/stl_vector.h **** /** 321:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief %Vector move constructor. 322:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x A %vector of identical element and allocator types. 323:/usr/include/c++/4.8/bits/stl_vector.h **** * 324:/usr/include/c++/4.8/bits/stl_vector.h **** * The newly-created %vector contains the exact contents of @a __x. 325:/usr/include/c++/4.8/bits/stl_vector.h **** * The contents of @a __x are a valid, but unspecified %vector. 326:/usr/include/c++/4.8/bits/stl_vector.h **** */ 327:/usr/include/c++/4.8/bits/stl_vector.h **** vector(vector&& __x) noexcept 328:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(std::move(__x)) { } 329:/usr/include/c++/4.8/bits/stl_vector.h **** 330:/usr/include/c++/4.8/bits/stl_vector.h **** /// Copy constructor with alternative allocator 331:/usr/include/c++/4.8/bits/stl_vector.h **** vector(const vector& __x, const allocator_type& __a) 332:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__x.size(), __a) 333:/usr/include/c++/4.8/bits/stl_vector.h **** { this->_M_impl._M_finish = 334:/usr/include/c++/4.8/bits/stl_vector.h **** std::__uninitialized_copy_a(__x.begin(), __x.end(), 335:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start, 336:/usr/include/c++/4.8/bits/stl_vector.h **** _M_get_Tp_allocator()); 337:/usr/include/c++/4.8/bits/stl_vector.h **** } 338:/usr/include/c++/4.8/bits/stl_vector.h **** 339:/usr/include/c++/4.8/bits/stl_vector.h **** /// Move constructor with alternative allocator 340:/usr/include/c++/4.8/bits/stl_vector.h **** vector(vector&& __rv, const allocator_type& __m) 341:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(std::move(__rv), __m) 342:/usr/include/c++/4.8/bits/stl_vector.h **** { 343:/usr/include/c++/4.8/bits/stl_vector.h **** if (__rv.get_allocator() != __m) 344:/usr/include/c++/4.8/bits/stl_vector.h **** { 345:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_finish = 346:/usr/include/c++/4.8/bits/stl_vector.h **** std::__uninitialized_move_a(__rv.begin(), __rv.end(), 347:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start, 348:/usr/include/c++/4.8/bits/stl_vector.h **** _M_get_Tp_allocator()); 349:/usr/include/c++/4.8/bits/stl_vector.h **** __rv.clear(); 350:/usr/include/c++/4.8/bits/stl_vector.h **** } 351:/usr/include/c++/4.8/bits/stl_vector.h **** } 352:/usr/include/c++/4.8/bits/stl_vector.h **** 353:/usr/include/c++/4.8/bits/stl_vector.h **** /** 354:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Builds a %vector from an initializer list. 355:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __l An initializer_list. GAS LISTING /tmp/ccCle2Qt.s page 27 356:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __a An allocator. 357:/usr/include/c++/4.8/bits/stl_vector.h **** * 358:/usr/include/c++/4.8/bits/stl_vector.h **** * Create a %vector consisting of copies of the elements in the 359:/usr/include/c++/4.8/bits/stl_vector.h **** * initializer_list @a __l. 360:/usr/include/c++/4.8/bits/stl_vector.h **** * 361:/usr/include/c++/4.8/bits/stl_vector.h **** * This will call the element type's copy constructor N times 362:/usr/include/c++/4.8/bits/stl_vector.h **** * (where N is @a __l.size()) and do no memory reallocation. 363:/usr/include/c++/4.8/bits/stl_vector.h **** */ 364:/usr/include/c++/4.8/bits/stl_vector.h **** vector(initializer_list<value_type> __l, 365:/usr/include/c++/4.8/bits/stl_vector.h **** const allocator_type& __a = allocator_type()) 366:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__a) 367:/usr/include/c++/4.8/bits/stl_vector.h **** { 368:/usr/include/c++/4.8/bits/stl_vector.h **** _M_range_initialize(__l.begin(), __l.end(), 369:/usr/include/c++/4.8/bits/stl_vector.h **** random_access_iterator_tag()); 370:/usr/include/c++/4.8/bits/stl_vector.h **** } 371:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 372:/usr/include/c++/4.8/bits/stl_vector.h **** 373:/usr/include/c++/4.8/bits/stl_vector.h **** /** 374:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Builds a %vector from a range. 375:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __first An input iterator. 376:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __last An input iterator. 377:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __a An allocator. 378:/usr/include/c++/4.8/bits/stl_vector.h **** * 379:/usr/include/c++/4.8/bits/stl_vector.h **** * Create a %vector consisting of copies of the elements from 380:/usr/include/c++/4.8/bits/stl_vector.h **** * [first,last). 381:/usr/include/c++/4.8/bits/stl_vector.h **** * 382:/usr/include/c++/4.8/bits/stl_vector.h **** * If the iterators are forward, bidirectional, or 383:/usr/include/c++/4.8/bits/stl_vector.h **** * random-access, then this will call the elements' copy 384:/usr/include/c++/4.8/bits/stl_vector.h **** * constructor N times (where N is distance(first,last)) and do 385:/usr/include/c++/4.8/bits/stl_vector.h **** * no memory reallocation. But if only input iterators are 386:/usr/include/c++/4.8/bits/stl_vector.h **** * used, then this will do at most 2N calls to the copy 387:/usr/include/c++/4.8/bits/stl_vector.h **** * constructor, and logN memory reallocations. 388:/usr/include/c++/4.8/bits/stl_vector.h **** */ 389:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 390:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _InputIterator, 391:/usr/include/c++/4.8/bits/stl_vector.h **** typename = std::_RequireInputIter<_InputIterator>> 392:/usr/include/c++/4.8/bits/stl_vector.h **** vector(_InputIterator __first, _InputIterator __last, 393:/usr/include/c++/4.8/bits/stl_vector.h **** const allocator_type& __a = allocator_type()) 394:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__a) 395:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_initialize_dispatch(__first, __last, __false_type()); } 396:/usr/include/c++/4.8/bits/stl_vector.h **** #else 397:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _InputIterator> 398:/usr/include/c++/4.8/bits/stl_vector.h **** vector(_InputIterator __first, _InputIterator __last, 399:/usr/include/c++/4.8/bits/stl_vector.h **** const allocator_type& __a = allocator_type()) 400:/usr/include/c++/4.8/bits/stl_vector.h **** : _Base(__a) 401:/usr/include/c++/4.8/bits/stl_vector.h **** { 402:/usr/include/c++/4.8/bits/stl_vector.h **** // Check whether it's an integral type. If so, it's not an iterator. 403:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename std::__is_integer<_InputIterator>::__type _Integral; 404:/usr/include/c++/4.8/bits/stl_vector.h **** _M_initialize_dispatch(__first, __last, _Integral()); 405:/usr/include/c++/4.8/bits/stl_vector.h **** } 406:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 407:/usr/include/c++/4.8/bits/stl_vector.h **** 408:/usr/include/c++/4.8/bits/stl_vector.h **** /** 409:/usr/include/c++/4.8/bits/stl_vector.h **** * The dtor only erases the elements, and note that if the 410:/usr/include/c++/4.8/bits/stl_vector.h **** * elements themselves are pointers, the pointed-to memory is 411:/usr/include/c++/4.8/bits/stl_vector.h **** * not touched in any way. Managing the pointer is the user's 412:/usr/include/c++/4.8/bits/stl_vector.h **** * responsibility. GAS LISTING /tmp/ccCle2Qt.s page 28 413:/usr/include/c++/4.8/bits/stl_vector.h **** */ 414:/usr/include/c++/4.8/bits/stl_vector.h **** ~vector() _GLIBCXX_NOEXCEPT 415:/usr/include/c++/4.8/bits/stl_vector.h **** { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 416:/usr/include/c++/4.8/bits/stl_vector.h **** _M_get_Tp_allocator()); } 417:/usr/include/c++/4.8/bits/stl_vector.h **** 418:/usr/include/c++/4.8/bits/stl_vector.h **** /** 419:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief %Vector assignment operator. 420:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x A %vector of identical element and allocator types. 421:/usr/include/c++/4.8/bits/stl_vector.h **** * 422:/usr/include/c++/4.8/bits/stl_vector.h **** * All the elements of @a __x are copied, but any extra memory in 423:/usr/include/c++/4.8/bits/stl_vector.h **** * @a __x (for fast expansion) will not be copied. Unlike the 424:/usr/include/c++/4.8/bits/stl_vector.h **** * copy constructor, the allocator object is not copied. 425:/usr/include/c++/4.8/bits/stl_vector.h **** */ 426:/usr/include/c++/4.8/bits/stl_vector.h **** vector& 427:/usr/include/c++/4.8/bits/stl_vector.h **** operator=(const vector& __x); 428:/usr/include/c++/4.8/bits/stl_vector.h **** 429:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 430:/usr/include/c++/4.8/bits/stl_vector.h **** /** 431:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief %Vector move assignment operator. 432:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x A %vector of identical element and allocator types. 433:/usr/include/c++/4.8/bits/stl_vector.h **** * 434:/usr/include/c++/4.8/bits/stl_vector.h **** * The contents of @a __x are moved into this %vector (without copying, 435:/usr/include/c++/4.8/bits/stl_vector.h **** * if the allocators permit it). 436:/usr/include/c++/4.8/bits/stl_vector.h **** * @a __x is a valid, but unspecified %vector. 437:/usr/include/c++/4.8/bits/stl_vector.h **** */ 438:/usr/include/c++/4.8/bits/stl_vector.h **** vector& 439:/usr/include/c++/4.8/bits/stl_vector.h **** operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) 440:/usr/include/c++/4.8/bits/stl_vector.h **** { 441:/usr/include/c++/4.8/bits/stl_vector.h **** constexpr bool __move_storage = 442:/usr/include/c++/4.8/bits/stl_vector.h **** _Alloc_traits::_S_propagate_on_move_assign() 443:/usr/include/c++/4.8/bits/stl_vector.h **** || _Alloc_traits::_S_always_equal(); 444:/usr/include/c++/4.8/bits/stl_vector.h **** _M_move_assign(std::move(__x), 445:/usr/include/c++/4.8/bits/stl_vector.h **** integral_constant<bool, __move_storage>()); 446:/usr/include/c++/4.8/bits/stl_vector.h **** return *this; 447:/usr/include/c++/4.8/bits/stl_vector.h **** } 448:/usr/include/c++/4.8/bits/stl_vector.h **** 449:/usr/include/c++/4.8/bits/stl_vector.h **** /** 450:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief %Vector list assignment operator. 451:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __l An initializer_list. 452:/usr/include/c++/4.8/bits/stl_vector.h **** * 453:/usr/include/c++/4.8/bits/stl_vector.h **** * This function fills a %vector with copies of the elements in the 454:/usr/include/c++/4.8/bits/stl_vector.h **** * initializer list @a __l. 455:/usr/include/c++/4.8/bits/stl_vector.h **** * 456:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that the assignment completely changes the %vector and 457:/usr/include/c++/4.8/bits/stl_vector.h **** * that the resulting %vector's size is the same as the number 458:/usr/include/c++/4.8/bits/stl_vector.h **** * of elements assigned. Old data may be lost. 459:/usr/include/c++/4.8/bits/stl_vector.h **** */ 460:/usr/include/c++/4.8/bits/stl_vector.h **** vector& 461:/usr/include/c++/4.8/bits/stl_vector.h **** operator=(initializer_list<value_type> __l) 462:/usr/include/c++/4.8/bits/stl_vector.h **** { 463:/usr/include/c++/4.8/bits/stl_vector.h **** this->assign(__l.begin(), __l.end()); 464:/usr/include/c++/4.8/bits/stl_vector.h **** return *this; 465:/usr/include/c++/4.8/bits/stl_vector.h **** } 466:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 467:/usr/include/c++/4.8/bits/stl_vector.h **** 468:/usr/include/c++/4.8/bits/stl_vector.h **** /** 469:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Assigns a given value to a %vector. GAS LISTING /tmp/ccCle2Qt.s page 29 470:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n Number of elements to be assigned. 471:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __val Value to be assigned. 472:/usr/include/c++/4.8/bits/stl_vector.h **** * 473:/usr/include/c++/4.8/bits/stl_vector.h **** * This function fills a %vector with @a __n copies of the given 474:/usr/include/c++/4.8/bits/stl_vector.h **** * value. Note that the assignment completely changes the 475:/usr/include/c++/4.8/bits/stl_vector.h **** * %vector and that the resulting %vector's size is the same as 476:/usr/include/c++/4.8/bits/stl_vector.h **** * the number of elements assigned. Old data may be lost. 477:/usr/include/c++/4.8/bits/stl_vector.h **** */ 478:/usr/include/c++/4.8/bits/stl_vector.h **** void 479:/usr/include/c++/4.8/bits/stl_vector.h **** assign(size_type __n, const value_type& __val) 480:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_fill_assign(__n, __val); } 481:/usr/include/c++/4.8/bits/stl_vector.h **** 482:/usr/include/c++/4.8/bits/stl_vector.h **** /** 483:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Assigns a range to a %vector. 484:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __first An input iterator. 485:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __last An input iterator. 486:/usr/include/c++/4.8/bits/stl_vector.h **** * 487:/usr/include/c++/4.8/bits/stl_vector.h **** * This function fills a %vector with copies of the elements in the 488:/usr/include/c++/4.8/bits/stl_vector.h **** * range [__first,__last). 489:/usr/include/c++/4.8/bits/stl_vector.h **** * 490:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that the assignment completely changes the %vector and 491:/usr/include/c++/4.8/bits/stl_vector.h **** * that the resulting %vector's size is the same as the number 492:/usr/include/c++/4.8/bits/stl_vector.h **** * of elements assigned. Old data may be lost. 493:/usr/include/c++/4.8/bits/stl_vector.h **** */ 494:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 495:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _InputIterator, 496:/usr/include/c++/4.8/bits/stl_vector.h **** typename = std::_RequireInputIter<_InputIterator>> 497:/usr/include/c++/4.8/bits/stl_vector.h **** void 498:/usr/include/c++/4.8/bits/stl_vector.h **** assign(_InputIterator __first, _InputIterator __last) 499:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_assign_dispatch(__first, __last, __false_type()); } 500:/usr/include/c++/4.8/bits/stl_vector.h **** #else 501:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _InputIterator> 502:/usr/include/c++/4.8/bits/stl_vector.h **** void 503:/usr/include/c++/4.8/bits/stl_vector.h **** assign(_InputIterator __first, _InputIterator __last) 504:/usr/include/c++/4.8/bits/stl_vector.h **** { 505:/usr/include/c++/4.8/bits/stl_vector.h **** // Check whether it's an integral type. If so, it's not an iterator. 506:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename std::__is_integer<_InputIterator>::__type _Integral; 507:/usr/include/c++/4.8/bits/stl_vector.h **** _M_assign_dispatch(__first, __last, _Integral()); 508:/usr/include/c++/4.8/bits/stl_vector.h **** } 509:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 510:/usr/include/c++/4.8/bits/stl_vector.h **** 511:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 512:/usr/include/c++/4.8/bits/stl_vector.h **** /** 513:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Assigns an initializer list to a %vector. 514:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __l An initializer_list. 515:/usr/include/c++/4.8/bits/stl_vector.h **** * 516:/usr/include/c++/4.8/bits/stl_vector.h **** * This function fills a %vector with copies of the elements in the 517:/usr/include/c++/4.8/bits/stl_vector.h **** * initializer list @a __l. 518:/usr/include/c++/4.8/bits/stl_vector.h **** * 519:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that the assignment completely changes the %vector and 520:/usr/include/c++/4.8/bits/stl_vector.h **** * that the resulting %vector's size is the same as the number 521:/usr/include/c++/4.8/bits/stl_vector.h **** * of elements assigned. Old data may be lost. 522:/usr/include/c++/4.8/bits/stl_vector.h **** */ 523:/usr/include/c++/4.8/bits/stl_vector.h **** void 524:/usr/include/c++/4.8/bits/stl_vector.h **** assign(initializer_list<value_type> __l) 525:/usr/include/c++/4.8/bits/stl_vector.h **** { this->assign(__l.begin(), __l.end()); } 526:/usr/include/c++/4.8/bits/stl_vector.h **** #endif GAS LISTING /tmp/ccCle2Qt.s page 30 527:/usr/include/c++/4.8/bits/stl_vector.h **** 528:/usr/include/c++/4.8/bits/stl_vector.h **** /// Get a copy of the memory allocation object. 529:/usr/include/c++/4.8/bits/stl_vector.h **** using _Base::get_allocator; 530:/usr/include/c++/4.8/bits/stl_vector.h **** 531:/usr/include/c++/4.8/bits/stl_vector.h **** // iterators 532:/usr/include/c++/4.8/bits/stl_vector.h **** /** 533:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read/write iterator that points to the first 534:/usr/include/c++/4.8/bits/stl_vector.h **** * element in the %vector. Iteration is done in ordinary 535:/usr/include/c++/4.8/bits/stl_vector.h **** * element order. 536:/usr/include/c++/4.8/bits/stl_vector.h **** */ 537:/usr/include/c++/4.8/bits/stl_vector.h **** iterator 538:/usr/include/c++/4.8/bits/stl_vector.h **** begin() _GLIBCXX_NOEXCEPT 198 .loc 5 538 0 199 .cfi_startproc 200 .LVL15: 201 0000 4883EC18 subq $24, %rsp 202 .cfi_def_cfa_offset 32 203 0004 4889FE movq %rdi, %rsi 539:/usr/include/c++/4.8/bits/stl_vector.h **** { return iterator(this->_M_impl._M_start); } 204 .loc 5 539 0 205 0007 4889E7 movq %rsp, %rdi 206 .LVL16: 207 000a E8000000 call _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC1ERKS1_ 207 00 208 .LVL17: 209 000f 488B0424 movq (%rsp), %rax 210 0013 4883C418 addq $24, %rsp 211 .cfi_def_cfa_offset 8 212 0017 C3 ret 213 .cfi_endproc 214 .LFE1674: 216 .section .text._ZNSt6vectorIiSaIiEE3endEv,"axG",@progbits,_ZNSt6vectorIiSaIiEE3endEv,comdat 217 .align 2 218 .weak _ZNSt6vectorIiSaIiEE3endEv 220 _ZNSt6vectorIiSaIiEE3endEv: 221 .LFB1675: 540:/usr/include/c++/4.8/bits/stl_vector.h **** 541:/usr/include/c++/4.8/bits/stl_vector.h **** /** 542:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) iterator that points to the 543:/usr/include/c++/4.8/bits/stl_vector.h **** * first element in the %vector. Iteration is done in ordinary 544:/usr/include/c++/4.8/bits/stl_vector.h **** * element order. 545:/usr/include/c++/4.8/bits/stl_vector.h **** */ 546:/usr/include/c++/4.8/bits/stl_vector.h **** const_iterator 547:/usr/include/c++/4.8/bits/stl_vector.h **** begin() const _GLIBCXX_NOEXCEPT 548:/usr/include/c++/4.8/bits/stl_vector.h **** { return const_iterator(this->_M_impl._M_start); } 549:/usr/include/c++/4.8/bits/stl_vector.h **** 550:/usr/include/c++/4.8/bits/stl_vector.h **** /** 551:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read/write iterator that points one past the last 552:/usr/include/c++/4.8/bits/stl_vector.h **** * element in the %vector. Iteration is done in ordinary 553:/usr/include/c++/4.8/bits/stl_vector.h **** * element order. 554:/usr/include/c++/4.8/bits/stl_vector.h **** */ 555:/usr/include/c++/4.8/bits/stl_vector.h **** iterator 556:/usr/include/c++/4.8/bits/stl_vector.h **** end() _GLIBCXX_NOEXCEPT 222 .loc 5 556 0 223 .cfi_startproc 224 .LVL18: 225 0000 4883EC18 subq $24, %rsp GAS LISTING /tmp/ccCle2Qt.s page 31 226 .cfi_def_cfa_offset 32 557:/usr/include/c++/4.8/bits/stl_vector.h **** { return iterator(this->_M_impl._M_finish); } 227 .loc 5 557 0 228 0004 488D7708 leaq 8(%rdi), %rsi 229 0008 4889E7 movq %rsp, %rdi 230 .LVL19: 231 000b E8000000 call _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC1ERKS1_ 231 00 232 .LVL20: 233 0010 488B0424 movq (%rsp), %rax 234 0014 4883C418 addq $24, %rsp 235 .cfi_def_cfa_offset 8 236 0018 C3 ret 237 .cfi_endproc 238 .LFE1675: 240 .section .text._ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv,"axG",@progbits,_ZNK9 241 .align 2 242 .weak _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv 244 _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv: 245 .LFB1753: 751:/usr/include/c++/4.8/bits/stl_iterator.h **** 752:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator 753:/usr/include/c++/4.8/bits/stl_iterator.h **** operator++(int) 754:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __normal_iterator(_M_current++); } 755:/usr/include/c++/4.8/bits/stl_iterator.h **** 756:/usr/include/c++/4.8/bits/stl_iterator.h **** // Bidirectional iterator requirements 757:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator& 758:/usr/include/c++/4.8/bits/stl_iterator.h **** operator--() 759:/usr/include/c++/4.8/bits/stl_iterator.h **** { 760:/usr/include/c++/4.8/bits/stl_iterator.h **** --_M_current; 761:/usr/include/c++/4.8/bits/stl_iterator.h **** return *this; 762:/usr/include/c++/4.8/bits/stl_iterator.h **** } 763:/usr/include/c++/4.8/bits/stl_iterator.h **** 764:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator 765:/usr/include/c++/4.8/bits/stl_iterator.h **** operator--(int) 766:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __normal_iterator(_M_current--); } 767:/usr/include/c++/4.8/bits/stl_iterator.h **** 768:/usr/include/c++/4.8/bits/stl_iterator.h **** // Random access iterator requirements 769:/usr/include/c++/4.8/bits/stl_iterator.h **** reference 770:/usr/include/c++/4.8/bits/stl_iterator.h **** operator[](const difference_type& __n) const 771:/usr/include/c++/4.8/bits/stl_iterator.h **** { return _M_current[__n]; } 772:/usr/include/c++/4.8/bits/stl_iterator.h **** 773:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator& 774:/usr/include/c++/4.8/bits/stl_iterator.h **** operator+=(const difference_type& __n) 775:/usr/include/c++/4.8/bits/stl_iterator.h **** { _M_current += __n; return *this; } 776:/usr/include/c++/4.8/bits/stl_iterator.h **** 777:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator 778:/usr/include/c++/4.8/bits/stl_iterator.h **** operator+(const difference_type& __n) const 779:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __normal_iterator(_M_current + __n); } 780:/usr/include/c++/4.8/bits/stl_iterator.h **** 781:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator& 782:/usr/include/c++/4.8/bits/stl_iterator.h **** operator-=(const difference_type& __n) 783:/usr/include/c++/4.8/bits/stl_iterator.h **** { _M_current -= __n; return *this; } 784:/usr/include/c++/4.8/bits/stl_iterator.h **** 785:/usr/include/c++/4.8/bits/stl_iterator.h **** __normal_iterator 786:/usr/include/c++/4.8/bits/stl_iterator.h **** operator-(const difference_type& __n) const 787:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __normal_iterator(_M_current - __n); } GAS LISTING /tmp/ccCle2Qt.s page 32 788:/usr/include/c++/4.8/bits/stl_iterator.h **** 789:/usr/include/c++/4.8/bits/stl_iterator.h **** const _Iterator& 790:/usr/include/c++/4.8/bits/stl_iterator.h **** base() const 246 .loc 4 790 0 247 .cfi_startproc 248 .LVL21: 249 0000 4889F8 movq %rdi, %rax 791:/usr/include/c++/4.8/bits/stl_iterator.h **** { return _M_current; } 250 .loc 4 791 0 251 0003 C3 ret 252 .cfi_endproc 253 .LFE1753: 255 .section .text._ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_,"axG",@pr 256 .weak _ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ 258 _ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_: 259 .LFB1676: 792:/usr/include/c++/4.8/bits/stl_iterator.h **** }; 793:/usr/include/c++/4.8/bits/stl_iterator.h **** 794:/usr/include/c++/4.8/bits/stl_iterator.h **** // Note: In what follows, the left- and right-hand-side iterators are 795:/usr/include/c++/4.8/bits/stl_iterator.h **** // allowed to vary in types (conceptually in cv-qualification) so that 796:/usr/include/c++/4.8/bits/stl_iterator.h **** // comparison between cv-qualified and non-cv-qualified iterators be 797:/usr/include/c++/4.8/bits/stl_iterator.h **** // valid. However, the greedy and unfriendly operators in std::rel_ops 798:/usr/include/c++/4.8/bits/stl_iterator.h **** // will make overload resolution ambiguous (when in scope) if we don't 799:/usr/include/c++/4.8/bits/stl_iterator.h **** // provide overloads whose operands are of the same type. Can someone 800:/usr/include/c++/4.8/bits/stl_iterator.h **** // remind me what generic programming is about? -- Gaby 801:/usr/include/c++/4.8/bits/stl_iterator.h **** 802:/usr/include/c++/4.8/bits/stl_iterator.h **** // Forward iterator requirements 803:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR, typename _Container> 804:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 805:/usr/include/c++/4.8/bits/stl_iterator.h **** operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 806:/usr/include/c++/4.8/bits/stl_iterator.h **** const __normal_iterator<_IteratorR, _Container>& __rhs) 807:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __lhs.base() == __rhs.base(); } 808:/usr/include/c++/4.8/bits/stl_iterator.h **** 809:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator, typename _Container> 810:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 811:/usr/include/c++/4.8/bits/stl_iterator.h **** operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 812:/usr/include/c++/4.8/bits/stl_iterator.h **** const __normal_iterator<_Iterator, _Container>& __rhs) 813:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __lhs.base() == __rhs.base(); } 814:/usr/include/c++/4.8/bits/stl_iterator.h **** 815:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR, typename _Container> 816:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 817:/usr/include/c++/4.8/bits/stl_iterator.h **** operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 818:/usr/include/c++/4.8/bits/stl_iterator.h **** const __normal_iterator<_IteratorR, _Container>& __rhs) 819:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __lhs.base() != __rhs.base(); } 820:/usr/include/c++/4.8/bits/stl_iterator.h **** 821:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _Iterator, typename _Container> 822:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 823:/usr/include/c++/4.8/bits/stl_iterator.h **** operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 260 .loc 4 823 0 261 .cfi_startproc 262 .LVL22: 263 0000 55 pushq %rbp 264 .cfi_def_cfa_offset 16 265 .cfi_offset 6, -16 266 0001 53 pushq %rbx 267 .cfi_def_cfa_offset 24 268 .cfi_offset 3, -24 GAS LISTING /tmp/ccCle2Qt.s page 33 269 0002 4883EC08 subq $8, %rsp 270 .cfi_def_cfa_offset 32 271 0006 4889F5 movq %rsi, %rbp 824:/usr/include/c++/4.8/bits/stl_iterator.h **** const __normal_iterator<_Iterator, _Container>& __rhs) 825:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __lhs.base() != __rhs.base(); } 272 .loc 4 825 0 273 0009 E8000000 call _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv 273 00 274 .LVL23: 275 000e 4889C3 movq %rax, %rbx 276 0011 4889EF movq %rbp, %rdi 277 0014 E8000000 call _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv 277 00 278 .LVL24: 279 0019 488B00 movq (%rax), %rax 280 001c 483903 cmpq %rax, (%rbx) 281 001f 0F95C0 setne %al 282 0022 4883C408 addq $8, %rsp 283 .cfi_def_cfa_offset 24 284 0026 5B popq %rbx 285 .cfi_def_cfa_offset 16 286 0027 5D popq %rbp 287 .cfi_def_cfa_offset 8 288 .LVL25: 289 0028 C3 ret 290 .cfi_endproc 291 .LFE1676: 293 .section .text._ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPiEERKNS0_IT_NS_11__enable 294 .align 2 295 .weak _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPiEERKNS0_IT_NS_11__enable_ifIXsrSt 297 _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPiEERKNS0_IT_NS_11__enable_ifIXsrSt10__are 298 .LFB1680: 730:/usr/include/c++/4.8/bits/stl_iterator.h **** typename __enable_if< 299 .loc 4 730 0 300 .cfi_startproc 301 .LVL26: 302 0000 53 pushq %rbx 303 .cfi_def_cfa_offset 16 304 .cfi_offset 3, -16 305 0001 4889FB movq %rdi, %rbx 306 .LBB3: 734:/usr/include/c++/4.8/bits/stl_iterator.h **** 307 .loc 4 734 0 308 0004 4889F7 movq %rsi, %rdi 309 .LVL27: 310 0007 E8000000 call _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv 310 00 311 .LVL28: 312 000c 488B00 movq (%rax), %rax 313 000f 488903 movq %rax, (%rbx) 314 .LBE3: 315 0012 5B popq %rbx 316 .cfi_def_cfa_offset 8 317 .LVL29: 318 0013 C3 ret 319 .cfi_endproc 320 .LFE1680: GAS LISTING /tmp/ccCle2Qt.s page 34 322 .weak _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC1IPiEERKNS0_IT_NS_11__enable_ifIXsrSt 323 .set _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC1IPiEERKNS0_IT_NS_11__enable_ifIXsrSt1 324 .section .text._ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv,"axG",@progbits,_ZNK 325 .align 2 326 .weak _ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv 328 _ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv: 329 .LFB1754: 790:/usr/include/c++/4.8/bits/stl_iterator.h **** { return _M_current; } 330 .loc 4 790 0 331 .cfi_startproc 332 .LVL30: 333 0000 4889F8 movq %rdi, %rax 791:/usr/include/c++/4.8/bits/stl_iterator.h **** }; 334 .loc 4 791 0 335 0003 C3 ret 336 .cfi_endproc 337 .LFE1754: 339 .section .text._ZN9__gnu_cxxltIPKiPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T1_EERKNS7_IT0_ 340 .weak _ZN9__gnu_cxxltIPKiPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T1_EERKNS7_IT0_S9_EE 342 _ZN9__gnu_cxxltIPKiPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T1_EERKNS7_IT0_S9_EE: 343 .LFB1682: 826:/usr/include/c++/4.8/bits/stl_iterator.h **** 827:/usr/include/c++/4.8/bits/stl_iterator.h **** // Random access iterator requirements 828:/usr/include/c++/4.8/bits/stl_iterator.h **** template<typename _IteratorL, typename _IteratorR, typename _Container> 829:/usr/include/c++/4.8/bits/stl_iterator.h **** inline bool 830:/usr/include/c++/4.8/bits/stl_iterator.h **** operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 344 .loc 4 830 0 345 .cfi_startproc 346 .LVL31: 347 0000 55 pushq %rbp 348 .cfi_def_cfa_offset 16 349 .cfi_offset 6, -16 350 0001 53 pushq %rbx 351 .cfi_def_cfa_offset 24 352 .cfi_offset 3, -24 353 0002 4883EC08 subq $8, %rsp 354 .cfi_def_cfa_offset 32 355 0006 4889F5 movq %rsi, %rbp 831:/usr/include/c++/4.8/bits/stl_iterator.h **** const __normal_iterator<_IteratorR, _Container>& __rhs) 832:/usr/include/c++/4.8/bits/stl_iterator.h **** { return __lhs.base() < __rhs.base(); } 356 .loc 4 832 0 357 0009 E8000000 call _ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv 357 00 358 .LVL32: 359 000e 4889C3 movq %rax, %rbx 360 0011 4889EF movq %rbp, %rdi 361 0014 E8000000 call _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv 361 00 362 .LVL33: 363 0019 488B00 movq (%rax), %rax 364 001c 483903 cmpq %rax, (%rbx) 365 001f 0F92C0 setb %al 366 0022 4883C408 addq $8, %rsp 367 .cfi_def_cfa_offset 24 368 0026 5B popq %rbx 369 .cfi_def_cfa_offset 16 370 0027 5D popq %rbp GAS LISTING /tmp/ccCle2Qt.s page 35 371 .cfi_def_cfa_offset 8 372 .LVL34: 373 0028 C3 ret 374 .cfi_endproc 375 .LFE1682: 377 .section .text._ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_,"axG",@progbits,_ZNSt12_Vector_ba 378 .align 2 379 .weak _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_ 381 _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_: 382 .LFB1787: 90:/usr/include/c++/4.8/bits/stl_vector.h **** : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) 383 .loc 5 90 0 384 .cfi_startproc 385 .LVL35: 386 .LBB4: 91:/usr/include/c++/4.8/bits/stl_vector.h **** { } 387 .loc 5 91 0 388 0000 48C70700 movq $0, (%rdi) 388 000000 389 0007 48C74708 movq $0, 8(%rdi) 389 00000000 390 000f 48C74710 movq $0, 16(%rdi) 390 00000000 391 0017 C3 ret 392 .LBE4: 393 .cfi_endproc 394 .LFE1787: 396 .weak _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC1ERKS0_ 397 .set _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC1ERKS0_,_ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2 398 .section .text._ZNSt12_Vector_baseIiSaIiEEC2ERKS0_,"axG",@progbits,_ZNSt12_Vector_baseIiSaIiEEC5ER 399 .align 2 400 .weak _ZNSt12_Vector_baseIiSaIiEEC2ERKS0_ 402 _ZNSt12_Vector_baseIiSaIiEEC2ERKS0_: 403 .LFB1741: 127:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl(__a) { } 404 .loc 5 127 0 405 .cfi_startproc 406 .LVL36: 407 0000 4883EC08 subq $8, %rsp 408 .cfi_def_cfa_offset 16 409 .LBB5: 128:/usr/include/c++/4.8/bits/stl_vector.h **** 410 .loc 5 128 0 411 0004 E8000000 call _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC1ERKS0_ 411 00 412 .LVL37: 413 .LBE5: 414 0009 4883C408 addq $8, %rsp 415 .cfi_def_cfa_offset 8 416 000d C3 ret 417 .cfi_endproc 418 .LFE1741: 420 .weak _ZNSt12_Vector_baseIiSaIiEEC1ERKS0_ 421 .set _ZNSt12_Vector_baseIiSaIiEEC1ERKS0_,_ZNSt12_Vector_baseIiSaIiEEC2ERKS0_ 422 .section .text._ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim,"axG",@progbits,_ZN9__gnu_cxx13new_ 423 .align 2 424 .weak _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim GAS LISTING /tmp/ccCle2Qt.s page 36 426 _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim: 427 .LFB1801: 428 .file 6 "/usr/include/c++/4.8/ext/new_allocator.h" 1:/usr/include/c++/4.8/ext/new_allocator.h **** // Allocator that wraps operator new -*- C++ -*- 2:/usr/include/c++/4.8/ext/new_allocator.h **** 3:/usr/include/c++/4.8/ext/new_allocator.h **** // Copyright (C) 2001-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/ext/new_allocator.h **** // 5:/usr/include/c++/4.8/ext/new_allocator.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/ext/new_allocator.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/ext/new_allocator.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/ext/new_allocator.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/ext/new_allocator.h **** // any later version. 10:/usr/include/c++/4.8/ext/new_allocator.h **** 11:/usr/include/c++/4.8/ext/new_allocator.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/ext/new_allocator.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/ext/new_allocator.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/ext/new_allocator.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/ext/new_allocator.h **** 16:/usr/include/c++/4.8/ext/new_allocator.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/ext/new_allocator.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/ext/new_allocator.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/ext/new_allocator.h **** 20:/usr/include/c++/4.8/ext/new_allocator.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/ext/new_allocator.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/ext/new_allocator.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/ext/new_allocator.h **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/ext/new_allocator.h **** 25:/usr/include/c++/4.8/ext/new_allocator.h **** /** @file ext/new_allocator.h 26:/usr/include/c++/4.8/ext/new_allocator.h **** * This file is a GNU extension to the Standard C++ Library. 27:/usr/include/c++/4.8/ext/new_allocator.h **** */ 28:/usr/include/c++/4.8/ext/new_allocator.h **** 29:/usr/include/c++/4.8/ext/new_allocator.h **** #ifndef _NEW_ALLOCATOR_H 30:/usr/include/c++/4.8/ext/new_allocator.h **** #define _NEW_ALLOCATOR_H 1 31:/usr/include/c++/4.8/ext/new_allocator.h **** 32:/usr/include/c++/4.8/ext/new_allocator.h **** #include <bits/c++config.h> 33:/usr/include/c++/4.8/ext/new_allocator.h **** #include <new> 34:/usr/include/c++/4.8/ext/new_allocator.h **** #include <bits/functexcept.h> 35:/usr/include/c++/4.8/ext/new_allocator.h **** #include <bits/move.h> 36:/usr/include/c++/4.8/ext/new_allocator.h **** #if __cplusplus >= 201103L 37:/usr/include/c++/4.8/ext/new_allocator.h **** #include <type_traits> 38:/usr/include/c++/4.8/ext/new_allocator.h **** #endif 39:/usr/include/c++/4.8/ext/new_allocator.h **** 40:/usr/include/c++/4.8/ext/new_allocator.h **** namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) 41:/usr/include/c++/4.8/ext/new_allocator.h **** { 42:/usr/include/c++/4.8/ext/new_allocator.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 43:/usr/include/c++/4.8/ext/new_allocator.h **** 44:/usr/include/c++/4.8/ext/new_allocator.h **** using std::size_t; 45:/usr/include/c++/4.8/ext/new_allocator.h **** using std::ptrdiff_t; 46:/usr/include/c++/4.8/ext/new_allocator.h **** 47:/usr/include/c++/4.8/ext/new_allocator.h **** /** 48:/usr/include/c++/4.8/ext/new_allocator.h **** * @brief An allocator that uses global new, as per [20.4]. 49:/usr/include/c++/4.8/ext/new_allocator.h **** * @ingroup allocators 50:/usr/include/c++/4.8/ext/new_allocator.h **** * 51:/usr/include/c++/4.8/ext/new_allocator.h **** * This is precisely the allocator defined in the C++ Standard. 52:/usr/include/c++/4.8/ext/new_allocator.h **** * - all allocation calls operator new 53:/usr/include/c++/4.8/ext/new_allocator.h **** * - all deallocation calls operator delete 54:/usr/include/c++/4.8/ext/new_allocator.h **** * GAS LISTING /tmp/ccCle2Qt.s page 37 55:/usr/include/c++/4.8/ext/new_allocator.h **** * @tparam _Tp Type of allocated object. 56:/usr/include/c++/4.8/ext/new_allocator.h **** */ 57:/usr/include/c++/4.8/ext/new_allocator.h **** template<typename _Tp> 58:/usr/include/c++/4.8/ext/new_allocator.h **** class new_allocator 59:/usr/include/c++/4.8/ext/new_allocator.h **** { 60:/usr/include/c++/4.8/ext/new_allocator.h **** public: 61:/usr/include/c++/4.8/ext/new_allocator.h **** typedef size_t size_type; 62:/usr/include/c++/4.8/ext/new_allocator.h **** typedef ptrdiff_t difference_type; 63:/usr/include/c++/4.8/ext/new_allocator.h **** typedef _Tp* pointer; 64:/usr/include/c++/4.8/ext/new_allocator.h **** typedef const _Tp* const_pointer; 65:/usr/include/c++/4.8/ext/new_allocator.h **** typedef _Tp& reference; 66:/usr/include/c++/4.8/ext/new_allocator.h **** typedef const _Tp& const_reference; 67:/usr/include/c++/4.8/ext/new_allocator.h **** typedef _Tp value_type; 68:/usr/include/c++/4.8/ext/new_allocator.h **** 69:/usr/include/c++/4.8/ext/new_allocator.h **** template<typename _Tp1> 70:/usr/include/c++/4.8/ext/new_allocator.h **** struct rebind 71:/usr/include/c++/4.8/ext/new_allocator.h **** { typedef new_allocator<_Tp1> other; }; 72:/usr/include/c++/4.8/ext/new_allocator.h **** 73:/usr/include/c++/4.8/ext/new_allocator.h **** #if __cplusplus >= 201103L 74:/usr/include/c++/4.8/ext/new_allocator.h **** // _GLIBCXX_RESOLVE_LIB_DEFECTS 75:/usr/include/c++/4.8/ext/new_allocator.h **** // 2103. propagate_on_container_move_assignment 76:/usr/include/c++/4.8/ext/new_allocator.h **** typedef std::true_type propagate_on_container_move_assignment; 77:/usr/include/c++/4.8/ext/new_allocator.h **** #endif 78:/usr/include/c++/4.8/ext/new_allocator.h **** 79:/usr/include/c++/4.8/ext/new_allocator.h **** new_allocator() _GLIBCXX_USE_NOEXCEPT { } 80:/usr/include/c++/4.8/ext/new_allocator.h **** 81:/usr/include/c++/4.8/ext/new_allocator.h **** new_allocator(const new_allocator&) _GLIBCXX_USE_NOEXCEPT { } 82:/usr/include/c++/4.8/ext/new_allocator.h **** 83:/usr/include/c++/4.8/ext/new_allocator.h **** template<typename _Tp1> 84:/usr/include/c++/4.8/ext/new_allocator.h **** new_allocator(const new_allocator<_Tp1>&) _GLIBCXX_USE_NOEXCEPT { } 85:/usr/include/c++/4.8/ext/new_allocator.h **** 86:/usr/include/c++/4.8/ext/new_allocator.h **** ~new_allocator() _GLIBCXX_USE_NOEXCEPT { } 87:/usr/include/c++/4.8/ext/new_allocator.h **** 88:/usr/include/c++/4.8/ext/new_allocator.h **** pointer 89:/usr/include/c++/4.8/ext/new_allocator.h **** address(reference __x) const _GLIBCXX_NOEXCEPT 90:/usr/include/c++/4.8/ext/new_allocator.h **** { return std::__addressof(__x); } 91:/usr/include/c++/4.8/ext/new_allocator.h **** 92:/usr/include/c++/4.8/ext/new_allocator.h **** const_pointer 93:/usr/include/c++/4.8/ext/new_allocator.h **** address(const_reference __x) const _GLIBCXX_NOEXCEPT 94:/usr/include/c++/4.8/ext/new_allocator.h **** { return std::__addressof(__x); } 95:/usr/include/c++/4.8/ext/new_allocator.h **** 96:/usr/include/c++/4.8/ext/new_allocator.h **** // NB: __n is permitted to be 0. The C++ standard says nothing 97:/usr/include/c++/4.8/ext/new_allocator.h **** // about what the return value is when __n == 0. 98:/usr/include/c++/4.8/ext/new_allocator.h **** pointer 99:/usr/include/c++/4.8/ext/new_allocator.h **** allocate(size_type __n, const void* = 0) 100:/usr/include/c++/4.8/ext/new_allocator.h **** { 101:/usr/include/c++/4.8/ext/new_allocator.h **** if (__n > this->max_size()) 102:/usr/include/c++/4.8/ext/new_allocator.h **** std::__throw_bad_alloc(); 103:/usr/include/c++/4.8/ext/new_allocator.h **** 104:/usr/include/c++/4.8/ext/new_allocator.h **** return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); 105:/usr/include/c++/4.8/ext/new_allocator.h **** } 106:/usr/include/c++/4.8/ext/new_allocator.h **** 107:/usr/include/c++/4.8/ext/new_allocator.h **** // __p is not permitted to be a null pointer. 108:/usr/include/c++/4.8/ext/new_allocator.h **** void 109:/usr/include/c++/4.8/ext/new_allocator.h **** deallocate(pointer __p, size_type) 429 .loc 6 109 0 430 .cfi_startproc GAS LISTING /tmp/ccCle2Qt.s page 38 431 .LVL38: 432 0000 4883EC08 subq $8, %rsp 433 .cfi_def_cfa_offset 16 110:/usr/include/c++/4.8/ext/new_allocator.h **** { ::operator delete(__p); } 434 .loc 6 110 0 435 0004 4889F7 movq %rsi, %rdi 436 .LVL39: 437 0007 E8000000 call _ZdlPv 437 00 438 .LVL40: 439 000c 4883C408 addq $8, %rsp 440 .cfi_def_cfa_offset 8 441 0010 C3 ret 442 .cfi_endproc 443 .LFE1801: 445 .section .text._ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim,"axG",@progbits,_ZNSt12_Vector_baseI 446 .align 2 447 .weak _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim 449 _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim: 450 .LFB1789: 171:/usr/include/c++/4.8/bits/stl_vector.h **** { 451 .loc 5 171 0 452 .cfi_startproc 453 .LVL41: 173:/usr/include/c++/4.8/bits/stl_vector.h **** _M_impl.deallocate(__p, __n); 454 .loc 5 173 0 455 0000 4885F6 testq %rsi, %rsi 456 0003 740D je .L36 171:/usr/include/c++/4.8/bits/stl_vector.h **** { 457 .loc 5 171 0 458 0005 4883EC08 subq $8, %rsp 459 .cfi_def_cfa_offset 16 174:/usr/include/c++/4.8/bits/stl_vector.h **** } 460 .loc 5 174 0 461 0009 E8000000 call _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim 461 00 462 .LVL42: 175:/usr/include/c++/4.8/bits/stl_vector.h **** 463 .loc 5 175 0 464 000e 4883C408 addq $8, %rsp 465 .cfi_def_cfa_offset 8 466 .L36: 467 0012 F3C3 rep ret 468 .cfi_endproc 469 .LFE1789: 471 .section .text._ZNSt12_Vector_baseIiSaIiEED2Ev,"axG",@progbits,_ZNSt12_Vector_baseIiSaIiEED5Ev,com 472 .align 2 473 .weak _ZNSt12_Vector_baseIiSaIiEED2Ev 475 _ZNSt12_Vector_baseIiSaIiEED2Ev: 476 .LFB1744: 159:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage 477 .loc 5 159 0 478 .cfi_startproc 479 .LVL43: 480 0000 4883EC08 subq $8, %rsp 481 .cfi_def_cfa_offset 16 482 .LBB6: GAS LISTING /tmp/ccCle2Qt.s page 39 161:/usr/include/c++/4.8/bits/stl_vector.h **** 483 .loc 5 161 0 484 0004 488B37 movq (%rdi), %rsi 485 0007 488B5710 movq 16(%rdi), %rdx 486 000b 4829F2 subq %rsi, %rdx 487 000e 48C1FA02 sarq $2, %rdx 160:/usr/include/c++/4.8/bits/stl_vector.h **** - this->_M_impl._M_start); } 488 .loc 5 160 0 489 0012 E8000000 call _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim 489 00 490 .LVL44: 491 .LBE6: 161:/usr/include/c++/4.8/bits/stl_vector.h **** 492 .loc 5 161 0 493 0017 4883C408 addq $8, %rsp 494 .cfi_def_cfa_offset 8 495 001b C3 ret 496 .cfi_endproc 497 .LFE1744: 499 .weak _ZNSt12_Vector_baseIiSaIiEED1Ev 500 .set _ZNSt12_Vector_baseIiSaIiEED1Ev,_ZNSt12_Vector_baseIiSaIiEED2Ev 501 .section .text._ZNSt6vectorIiSaIiEED2Ev,"axG",@progbits,_ZNSt6vectorIiSaIiEED5Ev,comdat 502 .align 2 503 .weak _ZNSt6vectorIiSaIiEED2Ev 505 _ZNSt6vectorIiSaIiEED2Ev: 506 .LFB1671: 414:/usr/include/c++/4.8/bits/stl_vector.h **** { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 507 .loc 5 414 0 508 .cfi_startproc 509 .LVL45: 510 0000 4883EC08 subq $8, %rsp 511 .cfi_def_cfa_offset 16 512 .LBB7: 416:/usr/include/c++/4.8/bits/stl_vector.h **** 513 .loc 5 416 0 514 0004 E8000000 call _ZNSt12_Vector_baseIiSaIiEED2Ev 514 00 515 .LVL46: 516 .LBE7: 517 0009 4883C408 addq $8, %rsp 518 .cfi_def_cfa_offset 8 519 000d C3 ret 520 .cfi_endproc 521 .LFE1671: 523 .weak _ZNSt6vectorIiSaIiEED1Ev 524 .set _ZNSt6vectorIiSaIiEED1Ev,_ZNSt6vectorIiSaIiEED2Ev 525 .section .text._ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_acc 526 .weak _ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_itera 528 _ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag 529 .LFB1803: 530 .file 7 "/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h" 1:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // Functions used by iterators -*- C++ -*- 2:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 3:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // Copyright (C) 2001-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // 5:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // software; you can redistribute it and/or modify it under the GAS LISTING /tmp/ccCle2Qt.s page 40 7:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // any later version. 10:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 11:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 16:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 20:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 25:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** /* 26:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * 27:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * Copyright (c) 1994 28:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * Hewlett-Packard Company 29:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * 30:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * Permission to use, copy, modify, distribute and sell this software 31:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * and its documentation for any purpose is hereby granted without fee, 32:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * provided that the above copyright notice appear in all copies and 33:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * that both that copyright notice and this permission notice appear 34:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * in supporting documentation. Hewlett-Packard Company makes no 35:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * representations about the suitability of this software for any 36:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * purpose. It is provided "as is" without express or implied warranty. 37:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * 38:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * 39:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * Copyright (c) 1996-1998 40:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * Silicon Graphics Computer Systems, Inc. 41:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * 42:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * Permission to use, copy, modify, distribute and sell this software 43:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * and its documentation for any purpose is hereby granted without fee, 44:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * provided that the above copyright notice appear in all copies and 45:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * that both that copyright notice and this permission notice appear 46:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * in supporting documentation. Silicon Graphics makes no 47:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * representations about the suitability of this software for any 48:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * purpose. It is provided "as is" without express or implied warranty. 49:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** */ 50:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 51:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** /** @file bits/stl_iterator_base_funcs.h 52:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * This is an internal header file, included by other library headers. 53:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * Do not attempt to use it directly. @headername{iterator} 54:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * 55:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * This file contains all of the general iterator-related utility 56:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * functions, such as distance() and advance(). 57:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** */ 58:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 59:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** #ifndef _STL_ITERATOR_BASE_FUNCS_H 60:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** #define _STL_ITERATOR_BASE_FUNCS_H 1 61:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 62:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** #pragma GCC system_header 63:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** GAS LISTING /tmp/ccCle2Qt.s page 41 64:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** #include <bits/concept_check.h> 65:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** #include <debug/debug.h> 66:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 67:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** namespace std _GLIBCXX_VISIBILITY(default) 68:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** { 69:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 70:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 71:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** template<typename _InputIterator> 72:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** inline typename iterator_traits<_InputIterator>::difference_type 73:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** __distance(_InputIterator __first, _InputIterator __last, 74:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** input_iterator_tag) 75:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** { 76:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // concept requirements 77:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) 78:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 79:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** typename iterator_traits<_InputIterator>::difference_type __n = 0; 80:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** while (__first != __last) 81:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** { 82:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** ++__first; 83:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** ++__n; 84:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** } 85:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** return __n; 86:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** } 87:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 88:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** template<typename _RandomAccessIterator> 89:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** inline typename iterator_traits<_RandomAccessIterator>::difference_type 90:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 531 .loc 7 90 0 532 .cfi_startproc 533 .LVL47: 91:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** random_access_iterator_tag) 92:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** { 93:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // concept requirements 94:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** __glibcxx_function_requires(_RandomAccessIteratorConcept< 95:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** _RandomAccessIterator>) 96:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** return __last - __first; 534 .loc 7 96 0 535 0000 4889F0 movq %rsi, %rax 536 0003 4829F8 subq %rdi, %rax 537 0006 48C1F802 sarq $2, %rax 97:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** } 538 .loc 7 97 0 539 000a C3 ret 540 .cfi_endproc 541 .LFE1803: 543 .section .text._ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_,"axG",@progbits, 544 .weak _ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_ 546 _ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_: 547 .LFB1790: 98:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** 99:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** /** 100:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * @brief A generalization of pointer arithmetic. 101:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * @param __first An input iterator. 102:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * @param __last An input iterator. 103:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * @return The distance between them. 104:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * 105:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * Returns @c n such that __first + n == __last. This requires GAS LISTING /tmp/ccCle2Qt.s page 42 106:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * that @p __last must be reachable from @p __first. Note that @c 107:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * n may be negative. 108:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * 109:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * For random access iterators, this uses their @c + and @c - operations 110:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** * and are constant time. For other %iterator classes they are linear time. 111:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** */ 112:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** template<typename _InputIterator> 113:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** inline typename iterator_traits<_InputIterator>::difference_type 114:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** distance(_InputIterator __first, _InputIterator __last) 548 .loc 7 114 0 549 .cfi_startproc 550 .LVL48: 551 0000 4883EC18 subq $24, %rsp 552 .cfi_def_cfa_offset 32 115:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** { 116:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** // concept requirements -- taken care of in __distance 117:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** return std::__distance(__first, __last, 118:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** std::__iterator_category(__first)); 553 .loc 7 118 0 554 0004 C6042400 movb $0, (%rsp) 555 0008 E8000000 call _ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterat 555 00 556 .LVL49: 119:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** } 557 .loc 7 119 0 558 000d 4883C418 addq $24, %rsp 559 .cfi_def_cfa_offset 8 560 0011 C3 ret 561 .cfi_endproc 562 .LFE1790: 564 .section .text._ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv,"axG",@progbits,_ZNK9__gnu_cxx13new_all 565 .align 2 566 .weak _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv 568 _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv: 569 .LFB1812: 111:/usr/include/c++/4.8/ext/new_allocator.h **** 112:/usr/include/c++/4.8/ext/new_allocator.h **** size_type 113:/usr/include/c++/4.8/ext/new_allocator.h **** max_size() const _GLIBCXX_USE_NOEXCEPT 570 .loc 6 113 0 571 .cfi_startproc 572 .LVL50: 114:/usr/include/c++/4.8/ext/new_allocator.h **** { return size_t(-1) / sizeof(_Tp); } 573 .loc 6 114 0 574 0000 48B8FFFF movabsq $4611686018427387903, %rax 574 FFFFFFFF 574 FF3F 575 000a C3 ret 576 .cfi_endproc 577 .LFE1812: 579 .section .text._ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv,"axG",@progbits,_ZN9__gnu_cxx13new_al 580 .align 2 581 .weak _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv 583 _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv: 584 .LFB1804: 99:/usr/include/c++/4.8/ext/new_allocator.h **** { 585 .loc 6 99 0 586 .cfi_startproc GAS LISTING /tmp/ccCle2Qt.s page 43 587 .LVL51: 588 0000 53 pushq %rbx 589 .cfi_def_cfa_offset 16 590 .cfi_offset 3, -16 591 0001 4889F3 movq %rsi, %rbx 101:/usr/include/c++/4.8/ext/new_allocator.h **** std::__throw_bad_alloc(); 592 .loc 6 101 0 593 0004 E8000000 call _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv 593 00 594 .LVL52: 595 0009 4839D8 cmpq %rbx, %rax 596 000c 7305 jae .L46 102:/usr/include/c++/4.8/ext/new_allocator.h **** 597 .loc 6 102 0 598 000e E8000000 call _ZSt17__throw_bad_allocv 598 00 599 .LVL53: 600 .L46: 104:/usr/include/c++/4.8/ext/new_allocator.h **** } 601 .loc 6 104 0 602 0013 488D3C9D leaq 0(,%rbx,4), %rdi 602 00000000 603 001b E8000000 call _Znwm 603 00 604 .LVL54: 105:/usr/include/c++/4.8/ext/new_allocator.h **** 605 .loc 6 105 0 606 0020 5B popq %rbx 607 .cfi_def_cfa_offset 8 608 .LVL55: 609 0021 C3 ret 610 .cfi_endproc 611 .LFE1804: 613 .section .text._ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm,"axG",@progbits,_ZNSt12_Vector_baseIiSaI 614 .align 2 615 .weak _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm 617 _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm: 618 .LFB1791: 167:/usr/include/c++/4.8/bits/stl_vector.h **** { return __n != 0 ? _M_impl.allocate(__n) : 0; } 619 .loc 5 167 0 620 .cfi_startproc 621 .LVL56: 168:/usr/include/c++/4.8/bits/stl_vector.h **** 622 .loc 5 168 0 623 0000 B8000000 movl $0, %eax 623 00 624 0005 4885F6 testq %rsi, %rsi 625 0008 7412 je .L53 167:/usr/include/c++/4.8/bits/stl_vector.h **** { return __n != 0 ? _M_impl.allocate(__n) : 0; } 626 .loc 5 167 0 discriminator 1 627 000a 4883EC08 subq $8, %rsp 628 .cfi_def_cfa_offset 16 168:/usr/include/c++/4.8/bits/stl_vector.h **** 629 .loc 5 168 0 discriminator 1 630 000e BA000000 movl $0, %edx 630 00 631 0013 E8000000 call _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv GAS LISTING /tmp/ccCle2Qt.s page 44 631 00 632 .LVL57: 633 0018 4883C408 addq $8, %rsp 634 .cfi_def_cfa_offset 8 635 .L53: 168:/usr/include/c++/4.8/bits/stl_vector.h **** 636 .loc 5 168 0 is_stmt 0 discriminator 3 637 001c F3C3 rep ret 638 .cfi_endproc 639 .LFE1791: 641 .section .text._ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_,"axG",@progbits,_ZNSt10_Iter_baseIPKiLb0EE7_ 642 .weak _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_ 644 _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_: 645 .LFB1835: 646 .file 8 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h" 1:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // Types used in iterator implementation -*- C++ -*- 2:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 3:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // Copyright (C) 2001-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // 5:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // any later version. 10:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 11:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 16:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 20:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 25:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /* 26:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 27:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * Copyright (c) 1994 28:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * Hewlett-Packard Company 29:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 30:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * Permission to use, copy, modify, distribute and sell this software 31:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * and its documentation for any purpose is hereby granted without fee, 32:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * provided that the above copyright notice appear in all copies and 33:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * that both that copyright notice and this permission notice appear 34:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * in supporting documentation. Hewlett-Packard Company makes no 35:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * representations about the suitability of this software for any 36:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * purpose. It is provided "as is" without express or implied warranty. 37:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 38:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 39:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * Copyright (c) 1996-1998 40:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * Silicon Graphics Computer Systems, Inc. 41:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 42:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * Permission to use, copy, modify, distribute and sell this software GAS LISTING /tmp/ccCle2Qt.s page 45 43:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * and its documentation for any purpose is hereby granted without fee, 44:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * provided that the above copyright notice appear in all copies and 45:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * that both that copyright notice and this permission notice appear 46:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * in supporting documentation. Silicon Graphics makes no 47:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * representations about the suitability of this software for any 48:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * purpose. It is provided "as is" without express or implied warranty. 49:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** */ 50:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 51:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /** @file bits/stl_iterator_base_types.h 52:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * This is an internal header file, included by other library headers. 53:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * Do not attempt to use it directly. @headername{iterator} 54:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 55:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * This file contains all of the general iterator-related utility types, 56:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * such as iterator_traits and struct iterator. 57:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** */ 58:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 59:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #ifndef _STL_ITERATOR_BASE_TYPES_H 60:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #define _STL_ITERATOR_BASE_TYPES_H 1 61:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 62:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #pragma GCC system_header 63:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 64:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #include <bits/c++config.h> 65:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 66:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #if __cplusplus >= 201103L 67:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** # include <type_traits> // For _GLIBCXX_HAS_NESTED_TYPE, is_convertible 68:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #endif 69:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 70:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** namespace std _GLIBCXX_VISIBILITY(default) 71:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { 72:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 73:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 74:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /** 75:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * @defgroup iterators Iterators 76:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * Abstractions for uniform iterating through various underlying types. 77:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** */ 78:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** //@{ 79:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 80:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /** 81:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * @defgroup iterator_tags Iterator Tags 82:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * These are empty types, used to distinguish different iterators. The 83:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * distinction is not made by what they contain, but simply by what they 84:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * are. Different underlying algorithms can then be used based on the 85:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * different operations supported by different iterator types. 86:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** */ 87:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** //@{ 88:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// Marking input iterators. 89:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct input_iterator_tag { }; 90:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 91:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// Marking output iterators. 92:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct output_iterator_tag { }; 93:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 94:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// Forward iterators support a superset of input iterator operations. 95:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct forward_iterator_tag : public input_iterator_tag { }; 96:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 97:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// Bidirectional iterators support a superset of forward iterator 98:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// operations. 99:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct bidirectional_iterator_tag : public forward_iterator_tag { }; GAS LISTING /tmp/ccCle2Qt.s page 46 100:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 101:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// Random-access iterators support a superset of bidirectional 102:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// iterator operations. 103:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 104:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** //@} 105:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 106:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /** 107:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * @brief Common %iterator class. 108:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 109:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * This class does nothing but define nested typedefs. %Iterator classes 110:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * can inherit from this class to save some work. The typedefs are then 111:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * used in specializations and overloading. 112:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 113:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * In particular, there are no default implementations of requirements 114:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * such as @c operator++ and the like. (How could there be?) 115:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** */ 116:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t, 117:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typename _Pointer = _Tp*, typename _Reference = _Tp&> 118:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct iterator 119:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { 120:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// One of the @link iterator_tags tag types@endlink. 121:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Category iterator_category; 122:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// The type "pointed to" by the iterator. 123:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Tp value_type; 124:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// Distance between iterators is represented as this type. 125:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Distance difference_type; 126:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// This type represents a pointer-to-value_type. 127:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Pointer pointer; 128:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// This type represents a reference-to-value_type. 129:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Reference reference; 130:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** }; 131:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 132:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /** 133:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * @brief Traits class for iterators. 134:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * 135:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * This class does nothing but define nested typedefs. The general 136:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * version simply @a forwards the nested typedefs from the Iterator 137:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * argument. Specialized versions for pointers and pointers-to-const 138:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * provide tighter, more correct semantics. 139:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** */ 140:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #if __cplusplus >= 201103L 141:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 142:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** _GLIBCXX_HAS_NESTED_TYPE(iterator_category) 143:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 144:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Iterator, 145:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** bool = __has_iterator_category<_Iterator>::value> 146:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct __iterator_traits { }; 147:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 148:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Iterator> 149:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct __iterator_traits<_Iterator, true> 150:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { 151:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::iterator_category iterator_category; 152:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::value_type value_type; 153:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::difference_type difference_type; 154:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::pointer pointer; 155:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::reference reference; 156:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** }; GAS LISTING /tmp/ccCle2Qt.s page 47 157:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 158:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Iterator> 159:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct iterator_traits 160:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** : public __iterator_traits<_Iterator> { }; 161:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #else 162:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Iterator> 163:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct iterator_traits 164:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { 165:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::iterator_category iterator_category; 166:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::value_type value_type; 167:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::difference_type difference_type; 168:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::pointer pointer; 169:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef typename _Iterator::reference reference; 170:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** }; 171:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** #endif 172:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 173:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// Partial specialization for pointer types. 174:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Tp> 175:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct iterator_traits<_Tp*> 176:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { 177:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef random_access_iterator_tag iterator_category; 178:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Tp value_type; 179:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef ptrdiff_t difference_type; 180:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Tp* pointer; 181:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Tp& reference; 182:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** }; 183:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 184:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /// Partial specialization for const pointer types. 185:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Tp> 186:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct iterator_traits<const _Tp*> 187:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { 188:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef random_access_iterator_tag iterator_category; 189:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Tp value_type; 190:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef ptrdiff_t difference_type; 191:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef const _Tp* pointer; 192:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef const _Tp& reference; 193:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** }; 194:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 195:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** /** 196:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * This function is not a part of the C++ standard but is syntactic 197:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** * sugar for internal library use only. 198:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** */ 199:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Iter> 200:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** inline typename iterator_traits<_Iter>::iterator_category 201:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** __iterator_category(const _Iter&) 202:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { return typename iterator_traits<_Iter>::iterator_category(); } 203:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 204:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** //@} 205:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** 206:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // If _Iterator has a base returns it otherwise _Iterator is returned 207:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** // untouched 208:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** template<typename _Iterator, bool _HasBase> 209:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** struct _Iter_base 210:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { 211:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** typedef _Iterator iterator_type; 212:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** static iterator_type _S_base(_Iterator __it) 647 .loc 8 212 0 is_stmt 1 GAS LISTING /tmp/ccCle2Qt.s page 48 648 .cfi_startproc 649 .LVL58: 650 0000 4889F8 movq %rdi, %rax 213:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { return __it; } 651 .loc 8 213 0 652 0003 C3 ret 653 .cfi_endproc 654 .LFE1835: 656 .section .text._ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_,"axG",@progbits,_ZSt 657 .weak _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_ 659 _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_: 660 .LFB1833: 661 .file 9 "/usr/include/c++/4.8/bits/stl_algobase.h" 1:/usr/include/c++/4.8/bits/stl_algobase.h **** // Core algorithmic facilities -*- C++ -*- 2:/usr/include/c++/4.8/bits/stl_algobase.h **** 3:/usr/include/c++/4.8/bits/stl_algobase.h **** // Copyright (C) 2001-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/stl_algobase.h **** // 5:/usr/include/c++/4.8/bits/stl_algobase.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/stl_algobase.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/stl_algobase.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/stl_algobase.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/stl_algobase.h **** // any later version. 10:/usr/include/c++/4.8/bits/stl_algobase.h **** 11:/usr/include/c++/4.8/bits/stl_algobase.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/stl_algobase.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/stl_algobase.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/stl_algobase.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/stl_algobase.h **** 16:/usr/include/c++/4.8/bits/stl_algobase.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/stl_algobase.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/stl_algobase.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/stl_algobase.h **** 20:/usr/include/c++/4.8/bits/stl_algobase.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/stl_algobase.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/stl_algobase.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/stl_algobase.h **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/bits/stl_algobase.h **** 25:/usr/include/c++/4.8/bits/stl_algobase.h **** /* 26:/usr/include/c++/4.8/bits/stl_algobase.h **** * 27:/usr/include/c++/4.8/bits/stl_algobase.h **** * Copyright (c) 1994 28:/usr/include/c++/4.8/bits/stl_algobase.h **** * Hewlett-Packard Company 29:/usr/include/c++/4.8/bits/stl_algobase.h **** * 30:/usr/include/c++/4.8/bits/stl_algobase.h **** * Permission to use, copy, modify, distribute and sell this software 31:/usr/include/c++/4.8/bits/stl_algobase.h **** * and its documentation for any purpose is hereby granted without fee, 32:/usr/include/c++/4.8/bits/stl_algobase.h **** * provided that the above copyright notice appear in all copies and 33:/usr/include/c++/4.8/bits/stl_algobase.h **** * that both that copyright notice and this permission notice appear 34:/usr/include/c++/4.8/bits/stl_algobase.h **** * in supporting documentation. Hewlett-Packard Company makes no 35:/usr/include/c++/4.8/bits/stl_algobase.h **** * representations about the suitability of this software for any 36:/usr/include/c++/4.8/bits/stl_algobase.h **** * purpose. It is provided "as is" without express or implied warranty. 37:/usr/include/c++/4.8/bits/stl_algobase.h **** * 38:/usr/include/c++/4.8/bits/stl_algobase.h **** * 39:/usr/include/c++/4.8/bits/stl_algobase.h **** * Copyright (c) 1996-1998 40:/usr/include/c++/4.8/bits/stl_algobase.h **** * Silicon Graphics Computer Systems, Inc. 41:/usr/include/c++/4.8/bits/stl_algobase.h **** * 42:/usr/include/c++/4.8/bits/stl_algobase.h **** * Permission to use, copy, modify, distribute and sell this software 43:/usr/include/c++/4.8/bits/stl_algobase.h **** * and its documentation for any purpose is hereby granted without fee, 44:/usr/include/c++/4.8/bits/stl_algobase.h **** * provided that the above copyright notice appear in all copies and GAS LISTING /tmp/ccCle2Qt.s page 49 45:/usr/include/c++/4.8/bits/stl_algobase.h **** * that both that copyright notice and this permission notice appear 46:/usr/include/c++/4.8/bits/stl_algobase.h **** * in supporting documentation. Silicon Graphics makes no 47:/usr/include/c++/4.8/bits/stl_algobase.h **** * representations about the suitability of this software for any 48:/usr/include/c++/4.8/bits/stl_algobase.h **** * purpose. It is provided "as is" without express or implied warranty. 49:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 50:/usr/include/c++/4.8/bits/stl_algobase.h **** 51:/usr/include/c++/4.8/bits/stl_algobase.h **** /** @file bits/stl_algobase.h 52:/usr/include/c++/4.8/bits/stl_algobase.h **** * This is an internal header file, included by other library headers. 53:/usr/include/c++/4.8/bits/stl_algobase.h **** * Do not attempt to use it directly. @headername{algorithm} 54:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 55:/usr/include/c++/4.8/bits/stl_algobase.h **** 56:/usr/include/c++/4.8/bits/stl_algobase.h **** #ifndef _STL_ALGOBASE_H 57:/usr/include/c++/4.8/bits/stl_algobase.h **** #define _STL_ALGOBASE_H 1 58:/usr/include/c++/4.8/bits/stl_algobase.h **** 59:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/c++config.h> 60:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/functexcept.h> 61:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/cpp_type_traits.h> 62:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <ext/type_traits.h> 63:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <ext/numeric_traits.h> 64:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/stl_pair.h> 65:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/stl_iterator_base_types.h> 66:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/stl_iterator_base_funcs.h> 67:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/stl_iterator.h> 68:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/concept_check.h> 69:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <debug/debug.h> 70:/usr/include/c++/4.8/bits/stl_algobase.h **** #include <bits/move.h> // For std::swap and _GLIBCXX_MOVE 71:/usr/include/c++/4.8/bits/stl_algobase.h **** 72:/usr/include/c++/4.8/bits/stl_algobase.h **** namespace std _GLIBCXX_VISIBILITY(default) 73:/usr/include/c++/4.8/bits/stl_algobase.h **** { 74:/usr/include/c++/4.8/bits/stl_algobase.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 75:/usr/include/c++/4.8/bits/stl_algobase.h **** 76:/usr/include/c++/4.8/bits/stl_algobase.h **** #if __cplusplus < 201103L 77:/usr/include/c++/4.8/bits/stl_algobase.h **** // See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a 78:/usr/include/c++/4.8/bits/stl_algobase.h **** // nutshell, we are partially implementing the resolution of DR 187, 79:/usr/include/c++/4.8/bits/stl_algobase.h **** // when it's safe, i.e., the value_types are equal. 80:/usr/include/c++/4.8/bits/stl_algobase.h **** template<bool _BoolType> 81:/usr/include/c++/4.8/bits/stl_algobase.h **** struct __iter_swap 82:/usr/include/c++/4.8/bits/stl_algobase.h **** { 83:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _ForwardIterator1, typename _ForwardIterator2> 84:/usr/include/c++/4.8/bits/stl_algobase.h **** static void 85:/usr/include/c++/4.8/bits/stl_algobase.h **** iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 86:/usr/include/c++/4.8/bits/stl_algobase.h **** { 87:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_ForwardIterator1>::value_type 88:/usr/include/c++/4.8/bits/stl_algobase.h **** _ValueType1; 89:/usr/include/c++/4.8/bits/stl_algobase.h **** _ValueType1 __tmp = _GLIBCXX_MOVE(*__a); 90:/usr/include/c++/4.8/bits/stl_algobase.h **** *__a = _GLIBCXX_MOVE(*__b); 91:/usr/include/c++/4.8/bits/stl_algobase.h **** *__b = _GLIBCXX_MOVE(__tmp); 92:/usr/include/c++/4.8/bits/stl_algobase.h **** } 93:/usr/include/c++/4.8/bits/stl_algobase.h **** }; 94:/usr/include/c++/4.8/bits/stl_algobase.h **** 95:/usr/include/c++/4.8/bits/stl_algobase.h **** template<> 96:/usr/include/c++/4.8/bits/stl_algobase.h **** struct __iter_swap<true> 97:/usr/include/c++/4.8/bits/stl_algobase.h **** { 98:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _ForwardIterator1, typename _ForwardIterator2> 99:/usr/include/c++/4.8/bits/stl_algobase.h **** static void 100:/usr/include/c++/4.8/bits/stl_algobase.h **** iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 101:/usr/include/c++/4.8/bits/stl_algobase.h **** { GAS LISTING /tmp/ccCle2Qt.s page 50 102:/usr/include/c++/4.8/bits/stl_algobase.h **** swap(*__a, *__b); 103:/usr/include/c++/4.8/bits/stl_algobase.h **** } 104:/usr/include/c++/4.8/bits/stl_algobase.h **** }; 105:/usr/include/c++/4.8/bits/stl_algobase.h **** #endif 106:/usr/include/c++/4.8/bits/stl_algobase.h **** 107:/usr/include/c++/4.8/bits/stl_algobase.h **** /** 108:/usr/include/c++/4.8/bits/stl_algobase.h **** * @brief Swaps the contents of two iterators. 109:/usr/include/c++/4.8/bits/stl_algobase.h **** * @ingroup mutating_algorithms 110:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __a An iterator. 111:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __b Another iterator. 112:/usr/include/c++/4.8/bits/stl_algobase.h **** * @return Nothing. 113:/usr/include/c++/4.8/bits/stl_algobase.h **** * 114:/usr/include/c++/4.8/bits/stl_algobase.h **** * This function swaps the values pointed to by two iterators, not the 115:/usr/include/c++/4.8/bits/stl_algobase.h **** * iterators themselves. 116:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 117:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _ForwardIterator1, typename _ForwardIterator2> 118:/usr/include/c++/4.8/bits/stl_algobase.h **** inline void 119:/usr/include/c++/4.8/bits/stl_algobase.h **** iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 120:/usr/include/c++/4.8/bits/stl_algobase.h **** { 121:/usr/include/c++/4.8/bits/stl_algobase.h **** // concept requirements 122:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< 123:/usr/include/c++/4.8/bits/stl_algobase.h **** _ForwardIterator1>) 124:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< 125:/usr/include/c++/4.8/bits/stl_algobase.h **** _ForwardIterator2>) 126:/usr/include/c++/4.8/bits/stl_algobase.h **** 127:/usr/include/c++/4.8/bits/stl_algobase.h **** #if __cplusplus < 201103L 128:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_ForwardIterator1>::value_type 129:/usr/include/c++/4.8/bits/stl_algobase.h **** _ValueType1; 130:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_ForwardIterator2>::value_type 131:/usr/include/c++/4.8/bits/stl_algobase.h **** _ValueType2; 132:/usr/include/c++/4.8/bits/stl_algobase.h **** 133:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_ConvertibleConcept<_ValueType1, 134:/usr/include/c++/4.8/bits/stl_algobase.h **** _ValueType2>) 135:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_ConvertibleConcept<_ValueType2, 136:/usr/include/c++/4.8/bits/stl_algobase.h **** _ValueType1>) 137:/usr/include/c++/4.8/bits/stl_algobase.h **** 138:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_ForwardIterator1>::reference 139:/usr/include/c++/4.8/bits/stl_algobase.h **** _ReferenceType1; 140:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_ForwardIterator2>::reference 141:/usr/include/c++/4.8/bits/stl_algobase.h **** _ReferenceType2; 142:/usr/include/c++/4.8/bits/stl_algobase.h **** std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value 143:/usr/include/c++/4.8/bits/stl_algobase.h **** && __are_same<_ValueType1&, _ReferenceType1>::__value 144:/usr/include/c++/4.8/bits/stl_algobase.h **** && __are_same<_ValueType2&, _ReferenceType2>::__value>:: 145:/usr/include/c++/4.8/bits/stl_algobase.h **** iter_swap(__a, __b); 146:/usr/include/c++/4.8/bits/stl_algobase.h **** #else 147:/usr/include/c++/4.8/bits/stl_algobase.h **** swap(*__a, *__b); 148:/usr/include/c++/4.8/bits/stl_algobase.h **** #endif 149:/usr/include/c++/4.8/bits/stl_algobase.h **** } 150:/usr/include/c++/4.8/bits/stl_algobase.h **** 151:/usr/include/c++/4.8/bits/stl_algobase.h **** /** 152:/usr/include/c++/4.8/bits/stl_algobase.h **** * @brief Swap the elements of two sequences. 153:/usr/include/c++/4.8/bits/stl_algobase.h **** * @ingroup mutating_algorithms 154:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __first1 A forward iterator. 155:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __last1 A forward iterator. 156:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __first2 A forward iterator. 157:/usr/include/c++/4.8/bits/stl_algobase.h **** * @return An iterator equal to @p first2+(last1-first1). 158:/usr/include/c++/4.8/bits/stl_algobase.h **** * GAS LISTING /tmp/ccCle2Qt.s page 51 159:/usr/include/c++/4.8/bits/stl_algobase.h **** * Swaps each element in the range @p [first1,last1) with the 160:/usr/include/c++/4.8/bits/stl_algobase.h **** * corresponding element in the range @p [first2,(last1-first1)). 161:/usr/include/c++/4.8/bits/stl_algobase.h **** * The ranges must not overlap. 162:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 163:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _ForwardIterator1, typename _ForwardIterator2> 164:/usr/include/c++/4.8/bits/stl_algobase.h **** _ForwardIterator2 165:/usr/include/c++/4.8/bits/stl_algobase.h **** swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 166:/usr/include/c++/4.8/bits/stl_algobase.h **** _ForwardIterator2 __first2) 167:/usr/include/c++/4.8/bits/stl_algobase.h **** { 168:/usr/include/c++/4.8/bits/stl_algobase.h **** // concept requirements 169:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< 170:/usr/include/c++/4.8/bits/stl_algobase.h **** _ForwardIterator1>) 171:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< 172:/usr/include/c++/4.8/bits/stl_algobase.h **** _ForwardIterator2>) 173:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_requires_valid_range(__first1, __last1); 174:/usr/include/c++/4.8/bits/stl_algobase.h **** 175:/usr/include/c++/4.8/bits/stl_algobase.h **** for (; __first1 != __last1; ++__first1, ++__first2) 176:/usr/include/c++/4.8/bits/stl_algobase.h **** std::iter_swap(__first1, __first2); 177:/usr/include/c++/4.8/bits/stl_algobase.h **** return __first2; 178:/usr/include/c++/4.8/bits/stl_algobase.h **** } 179:/usr/include/c++/4.8/bits/stl_algobase.h **** 180:/usr/include/c++/4.8/bits/stl_algobase.h **** /** 181:/usr/include/c++/4.8/bits/stl_algobase.h **** * @brief This does what you think it does. 182:/usr/include/c++/4.8/bits/stl_algobase.h **** * @ingroup sorting_algorithms 183:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __a A thing of arbitrary type. 184:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __b Another thing of arbitrary type. 185:/usr/include/c++/4.8/bits/stl_algobase.h **** * @return The lesser of the parameters. 186:/usr/include/c++/4.8/bits/stl_algobase.h **** * 187:/usr/include/c++/4.8/bits/stl_algobase.h **** * This is the simple classic generic implementation. It will work on 188:/usr/include/c++/4.8/bits/stl_algobase.h **** * temporary expressions, since they are only evaluated once, unlike a 189:/usr/include/c++/4.8/bits/stl_algobase.h **** * preprocessor macro. 190:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 191:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Tp> 192:/usr/include/c++/4.8/bits/stl_algobase.h **** inline const _Tp& 193:/usr/include/c++/4.8/bits/stl_algobase.h **** min(const _Tp& __a, const _Tp& __b) 194:/usr/include/c++/4.8/bits/stl_algobase.h **** { 195:/usr/include/c++/4.8/bits/stl_algobase.h **** // concept requirements 196:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) 197:/usr/include/c++/4.8/bits/stl_algobase.h **** //return __b < __a ? __b : __a; 198:/usr/include/c++/4.8/bits/stl_algobase.h **** if (__b < __a) 199:/usr/include/c++/4.8/bits/stl_algobase.h **** return __b; 200:/usr/include/c++/4.8/bits/stl_algobase.h **** return __a; 201:/usr/include/c++/4.8/bits/stl_algobase.h **** } 202:/usr/include/c++/4.8/bits/stl_algobase.h **** 203:/usr/include/c++/4.8/bits/stl_algobase.h **** /** 204:/usr/include/c++/4.8/bits/stl_algobase.h **** * @brief This does what you think it does. 205:/usr/include/c++/4.8/bits/stl_algobase.h **** * @ingroup sorting_algorithms 206:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __a A thing of arbitrary type. 207:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __b Another thing of arbitrary type. 208:/usr/include/c++/4.8/bits/stl_algobase.h **** * @return The greater of the parameters. 209:/usr/include/c++/4.8/bits/stl_algobase.h **** * 210:/usr/include/c++/4.8/bits/stl_algobase.h **** * This is the simple classic generic implementation. It will work on 211:/usr/include/c++/4.8/bits/stl_algobase.h **** * temporary expressions, since they are only evaluated once, unlike a 212:/usr/include/c++/4.8/bits/stl_algobase.h **** * preprocessor macro. 213:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 214:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Tp> 215:/usr/include/c++/4.8/bits/stl_algobase.h **** inline const _Tp& GAS LISTING /tmp/ccCle2Qt.s page 52 216:/usr/include/c++/4.8/bits/stl_algobase.h **** max(const _Tp& __a, const _Tp& __b) 217:/usr/include/c++/4.8/bits/stl_algobase.h **** { 218:/usr/include/c++/4.8/bits/stl_algobase.h **** // concept requirements 219:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) 220:/usr/include/c++/4.8/bits/stl_algobase.h **** //return __a < __b ? __b : __a; 221:/usr/include/c++/4.8/bits/stl_algobase.h **** if (__a < __b) 222:/usr/include/c++/4.8/bits/stl_algobase.h **** return __b; 223:/usr/include/c++/4.8/bits/stl_algobase.h **** return __a; 224:/usr/include/c++/4.8/bits/stl_algobase.h **** } 225:/usr/include/c++/4.8/bits/stl_algobase.h **** 226:/usr/include/c++/4.8/bits/stl_algobase.h **** /** 227:/usr/include/c++/4.8/bits/stl_algobase.h **** * @brief This does what you think it does. 228:/usr/include/c++/4.8/bits/stl_algobase.h **** * @ingroup sorting_algorithms 229:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __a A thing of arbitrary type. 230:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __b Another thing of arbitrary type. 231:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __comp A @link comparison_functors comparison functor@endlink. 232:/usr/include/c++/4.8/bits/stl_algobase.h **** * @return The lesser of the parameters. 233:/usr/include/c++/4.8/bits/stl_algobase.h **** * 234:/usr/include/c++/4.8/bits/stl_algobase.h **** * This will work on temporary expressions, since they are only evaluated 235:/usr/include/c++/4.8/bits/stl_algobase.h **** * once, unlike a preprocessor macro. 236:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 237:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Tp, typename _Compare> 238:/usr/include/c++/4.8/bits/stl_algobase.h **** inline const _Tp& 239:/usr/include/c++/4.8/bits/stl_algobase.h **** min(const _Tp& __a, const _Tp& __b, _Compare __comp) 240:/usr/include/c++/4.8/bits/stl_algobase.h **** { 241:/usr/include/c++/4.8/bits/stl_algobase.h **** //return __comp(__b, __a) ? __b : __a; 242:/usr/include/c++/4.8/bits/stl_algobase.h **** if (__comp(__b, __a)) 243:/usr/include/c++/4.8/bits/stl_algobase.h **** return __b; 244:/usr/include/c++/4.8/bits/stl_algobase.h **** return __a; 245:/usr/include/c++/4.8/bits/stl_algobase.h **** } 246:/usr/include/c++/4.8/bits/stl_algobase.h **** 247:/usr/include/c++/4.8/bits/stl_algobase.h **** /** 248:/usr/include/c++/4.8/bits/stl_algobase.h **** * @brief This does what you think it does. 249:/usr/include/c++/4.8/bits/stl_algobase.h **** * @ingroup sorting_algorithms 250:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __a A thing of arbitrary type. 251:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __b Another thing of arbitrary type. 252:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __comp A @link comparison_functors comparison functor@endlink. 253:/usr/include/c++/4.8/bits/stl_algobase.h **** * @return The greater of the parameters. 254:/usr/include/c++/4.8/bits/stl_algobase.h **** * 255:/usr/include/c++/4.8/bits/stl_algobase.h **** * This will work on temporary expressions, since they are only evaluated 256:/usr/include/c++/4.8/bits/stl_algobase.h **** * once, unlike a preprocessor macro. 257:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 258:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Tp, typename _Compare> 259:/usr/include/c++/4.8/bits/stl_algobase.h **** inline const _Tp& 260:/usr/include/c++/4.8/bits/stl_algobase.h **** max(const _Tp& __a, const _Tp& __b, _Compare __comp) 261:/usr/include/c++/4.8/bits/stl_algobase.h **** { 262:/usr/include/c++/4.8/bits/stl_algobase.h **** //return __comp(__a, __b) ? __b : __a; 263:/usr/include/c++/4.8/bits/stl_algobase.h **** if (__comp(__a, __b)) 264:/usr/include/c++/4.8/bits/stl_algobase.h **** return __b; 265:/usr/include/c++/4.8/bits/stl_algobase.h **** return __a; 266:/usr/include/c++/4.8/bits/stl_algobase.h **** } 267:/usr/include/c++/4.8/bits/stl_algobase.h **** 268:/usr/include/c++/4.8/bits/stl_algobase.h **** // If _Iterator is a __normal_iterator return its base (a plain pointer, 269:/usr/include/c++/4.8/bits/stl_algobase.h **** // normally) otherwise return it untouched. See copy, fill, ... 270:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Iterator> 271:/usr/include/c++/4.8/bits/stl_algobase.h **** struct _Niter_base 272:/usr/include/c++/4.8/bits/stl_algobase.h **** : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value> GAS LISTING /tmp/ccCle2Qt.s page 53 273:/usr/include/c++/4.8/bits/stl_algobase.h **** { }; 274:/usr/include/c++/4.8/bits/stl_algobase.h **** 275:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Iterator> 276:/usr/include/c++/4.8/bits/stl_algobase.h **** inline typename _Niter_base<_Iterator>::iterator_type 277:/usr/include/c++/4.8/bits/stl_algobase.h **** __niter_base(_Iterator __it) 278:/usr/include/c++/4.8/bits/stl_algobase.h **** { return std::_Niter_base<_Iterator>::_S_base(__it); } 279:/usr/include/c++/4.8/bits/stl_algobase.h **** 280:/usr/include/c++/4.8/bits/stl_algobase.h **** // Likewise, for move_iterator. 281:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Iterator> 282:/usr/include/c++/4.8/bits/stl_algobase.h **** struct _Miter_base 283:/usr/include/c++/4.8/bits/stl_algobase.h **** : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value> 284:/usr/include/c++/4.8/bits/stl_algobase.h **** { }; 285:/usr/include/c++/4.8/bits/stl_algobase.h **** 286:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Iterator> 287:/usr/include/c++/4.8/bits/stl_algobase.h **** inline typename _Miter_base<_Iterator>::iterator_type 288:/usr/include/c++/4.8/bits/stl_algobase.h **** __miter_base(_Iterator __it) 662 .loc 9 288 0 663 .cfi_startproc 664 .LVL59: 665 0000 4883EC08 subq $8, %rsp 666 .cfi_def_cfa_offset 16 289:/usr/include/c++/4.8/bits/stl_algobase.h **** { return std::_Miter_base<_Iterator>::_S_base(__it); } 667 .loc 9 289 0 668 0004 E8000000 call _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_ 668 00 669 .LVL60: 670 0009 4883C408 addq $8, %rsp 671 .cfi_def_cfa_offset 8 672 000d C3 ret 673 .cfi_endproc 674 .LFE1833: 676 .section .text._ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_,"axG",@progbits,_ZSt 677 .weak _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_ 679 _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_: 680 .LFB1836: 277:/usr/include/c++/4.8/bits/stl_algobase.h **** { return std::_Niter_base<_Iterator>::_S_base(__it); } 681 .loc 9 277 0 682 .cfi_startproc 683 .LVL61: 684 0000 4883EC08 subq $8, %rsp 685 .cfi_def_cfa_offset 16 278:/usr/include/c++/4.8/bits/stl_algobase.h **** 686 .loc 9 278 0 687 0004 E8000000 call _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_ 687 00 688 .LVL62: 689 0009 4883C408 addq $8, %rsp 690 .cfi_def_cfa_offset 8 691 000d C3 ret 692 .cfi_endproc 693 .LFE1836: 695 .section .text._ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_,"axG",@progbits,_ZNSt10_Iter_baseIPiLb0EE7_S_ 696 .weak _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ 698 _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_: 699 .LFB1839: 212:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { return __it; } 700 .loc 8 212 0 GAS LISTING /tmp/ccCle2Qt.s page 54 701 .cfi_startproc 702 .LVL63: 703 0000 4889F8 movq %rdi, %rax 704 .loc 8 213 0 705 0003 C3 ret 706 .cfi_endproc 707 .LFE1839: 709 .section .text._ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_,"axG",@progbits,_ZSt1 710 .weak _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ 712 _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_: 713 .LFB1837: 277:/usr/include/c++/4.8/bits/stl_algobase.h **** { return std::_Niter_base<_Iterator>::_S_base(__it); } 714 .loc 9 277 0 715 .cfi_startproc 716 .LVL64: 717 0000 4883EC08 subq $8, %rsp 718 .cfi_def_cfa_offset 16 278:/usr/include/c++/4.8/bits/stl_algobase.h **** 719 .loc 9 278 0 720 0004 E8000000 call _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ 720 00 721 .LVL65: 722 0009 4883C408 addq $8, %rsp 723 .cfi_def_cfa_offset 8 724 000d C3 ret 725 .cfi_endproc 726 .LFE1837: 728 .section .text._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S 729 .weak _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ 731 _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_: 732 .LFB1840: 290:/usr/include/c++/4.8/bits/stl_algobase.h **** 291:/usr/include/c++/4.8/bits/stl_algobase.h **** // All of these auxiliary structs serve two purposes. (1) Replace 292:/usr/include/c++/4.8/bits/stl_algobase.h **** // calls to copy with memmove whenever possible. (Memmove, not memcpy, 293:/usr/include/c++/4.8/bits/stl_algobase.h **** // because the input and output ranges are permitted to overlap.) 294:/usr/include/c++/4.8/bits/stl_algobase.h **** // (2) If we're using random access iterators, then write the loop as 295:/usr/include/c++/4.8/bits/stl_algobase.h **** // a for loop with an explicit count. 296:/usr/include/c++/4.8/bits/stl_algobase.h **** 297:/usr/include/c++/4.8/bits/stl_algobase.h **** template<bool, bool, typename> 298:/usr/include/c++/4.8/bits/stl_algobase.h **** struct __copy_move 299:/usr/include/c++/4.8/bits/stl_algobase.h **** { 300:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _II, typename _OI> 301:/usr/include/c++/4.8/bits/stl_algobase.h **** static _OI 302:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_m(_II __first, _II __last, _OI __result) 303:/usr/include/c++/4.8/bits/stl_algobase.h **** { 304:/usr/include/c++/4.8/bits/stl_algobase.h **** for (; __first != __last; ++__result, ++__first) 305:/usr/include/c++/4.8/bits/stl_algobase.h **** *__result = *__first; 306:/usr/include/c++/4.8/bits/stl_algobase.h **** return __result; 307:/usr/include/c++/4.8/bits/stl_algobase.h **** } 308:/usr/include/c++/4.8/bits/stl_algobase.h **** }; 309:/usr/include/c++/4.8/bits/stl_algobase.h **** 310:/usr/include/c++/4.8/bits/stl_algobase.h **** #if __cplusplus >= 201103L 311:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Category> 312:/usr/include/c++/4.8/bits/stl_algobase.h **** struct __copy_move<true, false, _Category> 313:/usr/include/c++/4.8/bits/stl_algobase.h **** { 314:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _II, typename _OI> 315:/usr/include/c++/4.8/bits/stl_algobase.h **** static _OI GAS LISTING /tmp/ccCle2Qt.s page 55 316:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_m(_II __first, _II __last, _OI __result) 317:/usr/include/c++/4.8/bits/stl_algobase.h **** { 318:/usr/include/c++/4.8/bits/stl_algobase.h **** for (; __first != __last; ++__result, ++__first) 319:/usr/include/c++/4.8/bits/stl_algobase.h **** *__result = std::move(*__first); 320:/usr/include/c++/4.8/bits/stl_algobase.h **** return __result; 321:/usr/include/c++/4.8/bits/stl_algobase.h **** } 322:/usr/include/c++/4.8/bits/stl_algobase.h **** }; 323:/usr/include/c++/4.8/bits/stl_algobase.h **** #endif 324:/usr/include/c++/4.8/bits/stl_algobase.h **** 325:/usr/include/c++/4.8/bits/stl_algobase.h **** template<> 326:/usr/include/c++/4.8/bits/stl_algobase.h **** struct __copy_move<false, false, random_access_iterator_tag> 327:/usr/include/c++/4.8/bits/stl_algobase.h **** { 328:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _II, typename _OI> 329:/usr/include/c++/4.8/bits/stl_algobase.h **** static _OI 330:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_m(_II __first, _II __last, _OI __result) 331:/usr/include/c++/4.8/bits/stl_algobase.h **** { 332:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_II>::difference_type _Distance; 333:/usr/include/c++/4.8/bits/stl_algobase.h **** for(_Distance __n = __last - __first; __n > 0; --__n) 334:/usr/include/c++/4.8/bits/stl_algobase.h **** { 335:/usr/include/c++/4.8/bits/stl_algobase.h **** *__result = *__first; 336:/usr/include/c++/4.8/bits/stl_algobase.h **** ++__first; 337:/usr/include/c++/4.8/bits/stl_algobase.h **** ++__result; 338:/usr/include/c++/4.8/bits/stl_algobase.h **** } 339:/usr/include/c++/4.8/bits/stl_algobase.h **** return __result; 340:/usr/include/c++/4.8/bits/stl_algobase.h **** } 341:/usr/include/c++/4.8/bits/stl_algobase.h **** }; 342:/usr/include/c++/4.8/bits/stl_algobase.h **** 343:/usr/include/c++/4.8/bits/stl_algobase.h **** #if __cplusplus >= 201103L 344:/usr/include/c++/4.8/bits/stl_algobase.h **** template<> 345:/usr/include/c++/4.8/bits/stl_algobase.h **** struct __copy_move<true, false, random_access_iterator_tag> 346:/usr/include/c++/4.8/bits/stl_algobase.h **** { 347:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _II, typename _OI> 348:/usr/include/c++/4.8/bits/stl_algobase.h **** static _OI 349:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_m(_II __first, _II __last, _OI __result) 350:/usr/include/c++/4.8/bits/stl_algobase.h **** { 351:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_II>::difference_type _Distance; 352:/usr/include/c++/4.8/bits/stl_algobase.h **** for(_Distance __n = __last - __first; __n > 0; --__n) 353:/usr/include/c++/4.8/bits/stl_algobase.h **** { 354:/usr/include/c++/4.8/bits/stl_algobase.h **** *__result = std::move(*__first); 355:/usr/include/c++/4.8/bits/stl_algobase.h **** ++__first; 356:/usr/include/c++/4.8/bits/stl_algobase.h **** ++__result; 357:/usr/include/c++/4.8/bits/stl_algobase.h **** } 358:/usr/include/c++/4.8/bits/stl_algobase.h **** return __result; 359:/usr/include/c++/4.8/bits/stl_algobase.h **** } 360:/usr/include/c++/4.8/bits/stl_algobase.h **** }; 361:/usr/include/c++/4.8/bits/stl_algobase.h **** #endif 362:/usr/include/c++/4.8/bits/stl_algobase.h **** 363:/usr/include/c++/4.8/bits/stl_algobase.h **** template<bool _IsMove> 364:/usr/include/c++/4.8/bits/stl_algobase.h **** struct __copy_move<_IsMove, true, random_access_iterator_tag> 365:/usr/include/c++/4.8/bits/stl_algobase.h **** { 366:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _Tp> 367:/usr/include/c++/4.8/bits/stl_algobase.h **** static _Tp* 368:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) 733 .loc 9 368 0 734 .cfi_startproc 735 .LVL66: 736 0000 55 pushq %rbp GAS LISTING /tmp/ccCle2Qt.s page 56 737 .cfi_def_cfa_offset 16 738 .cfi_offset 6, -16 739 0001 53 pushq %rbx 740 .cfi_def_cfa_offset 24 741 .cfi_offset 3, -24 742 0002 4883EC08 subq $8, %rsp 743 .cfi_def_cfa_offset 32 744 0006 4889D5 movq %rdx, %rbp 745 .LBB8: 369:/usr/include/c++/4.8/bits/stl_algobase.h **** { 370:/usr/include/c++/4.8/bits/stl_algobase.h **** const ptrdiff_t _Num = __last - __first; 746 .loc 9 370 0 747 0009 4829FE subq %rdi, %rsi 748 .LVL67: 749 000c 4889F3 movq %rsi, %rbx 750 000f 48C1FB02 sarq $2, %rbx 751 .LVL68: 371:/usr/include/c++/4.8/bits/stl_algobase.h **** if (_Num) 752 .loc 9 371 0 753 0013 4885DB testq %rbx, %rbx 754 0016 7413 je .L63 372:/usr/include/c++/4.8/bits/stl_algobase.h **** __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); 755 .loc 9 372 0 756 0018 488D149D leaq 0(,%rbx,4), %rdx 756 00000000 757 .LVL69: 758 0020 4889FE movq %rdi, %rsi 759 0023 4889EF movq %rbp, %rdi 760 .LVL70: 761 0026 E8000000 call memmove 761 00 762 .LVL71: 763 .L63: 373:/usr/include/c++/4.8/bits/stl_algobase.h **** return __result + _Num; 764 .loc 9 373 0 765 002b 488D449D leaq 0(%rbp,%rbx,4), %rax 765 00 766 .LBE8: 374:/usr/include/c++/4.8/bits/stl_algobase.h **** } 767 .loc 9 374 0 768 0030 4883C408 addq $8, %rsp 769 .cfi_def_cfa_offset 24 770 0034 5B popq %rbx 771 .cfi_def_cfa_offset 16 772 .LVL72: 773 0035 5D popq %rbp 774 .cfi_def_cfa_offset 8 775 .LVL73: 776 0036 C3 ret 777 .cfi_endproc 778 .LFE1840: 780 .section .text._ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_,"axG",@progbits,_ZSt13__copy_move_aILb0E 781 .weak _ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_ 783 _ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_: 784 .LFB1838: 375:/usr/include/c++/4.8/bits/stl_algobase.h **** }; 376:/usr/include/c++/4.8/bits/stl_algobase.h **** GAS LISTING /tmp/ccCle2Qt.s page 57 377:/usr/include/c++/4.8/bits/stl_algobase.h **** template<bool _IsMove, typename _II, typename _OI> 378:/usr/include/c++/4.8/bits/stl_algobase.h **** inline _OI 379:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_move_a(_II __first, _II __last, _OI __result) 785 .loc 9 379 0 786 .cfi_startproc 787 .LVL74: 788 0000 4883EC08 subq $8, %rsp 789 .cfi_def_cfa_offset 16 790 .LVL75: 791 .LBB9: 380:/usr/include/c++/4.8/bits/stl_algobase.h **** { 381:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_II>::value_type _ValueTypeI; 382:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_OI>::value_type _ValueTypeO; 383:/usr/include/c++/4.8/bits/stl_algobase.h **** typedef typename iterator_traits<_II>::iterator_category _Category; 384:/usr/include/c++/4.8/bits/stl_algobase.h **** const bool __simple = (__is_trivial(_ValueTypeI) 385:/usr/include/c++/4.8/bits/stl_algobase.h **** && __is_pointer<_II>::__value 386:/usr/include/c++/4.8/bits/stl_algobase.h **** && __is_pointer<_OI>::__value 387:/usr/include/c++/4.8/bits/stl_algobase.h **** && __are_same<_ValueTypeI, _ValueTypeO>::__value); 388:/usr/include/c++/4.8/bits/stl_algobase.h **** 389:/usr/include/c++/4.8/bits/stl_algobase.h **** return std::__copy_move<_IsMove, __simple, 390:/usr/include/c++/4.8/bits/stl_algobase.h **** _Category>::__copy_m(__first, __last, __result); 792 .loc 9 390 0 793 0004 E8000000 call _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ 793 00 794 .LVL76: 795 .LBE9: 391:/usr/include/c++/4.8/bits/stl_algobase.h **** } 796 .loc 9 391 0 797 0009 4883C408 addq $8, %rsp 798 .cfi_def_cfa_offset 8 799 000d C3 ret 800 .cfi_endproc 801 .LFE1838: 803 .section .text._ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_,"axG",@progbits,_ZSt14__copy_move_a2ILb 804 .weak _ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_ 806 _ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_: 807 .LFB1834: 392:/usr/include/c++/4.8/bits/stl_algobase.h **** 393:/usr/include/c++/4.8/bits/stl_algobase.h **** // Helpers for streambuf iterators (either istream or ostream). 394:/usr/include/c++/4.8/bits/stl_algobase.h **** // NB: avoid including <iosfwd>, relatively large. 395:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _CharT> 396:/usr/include/c++/4.8/bits/stl_algobase.h **** struct char_traits; 397:/usr/include/c++/4.8/bits/stl_algobase.h **** 398:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _CharT, typename _Traits> 399:/usr/include/c++/4.8/bits/stl_algobase.h **** class istreambuf_iterator; 400:/usr/include/c++/4.8/bits/stl_algobase.h **** 401:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _CharT, typename _Traits> 402:/usr/include/c++/4.8/bits/stl_algobase.h **** class ostreambuf_iterator; 403:/usr/include/c++/4.8/bits/stl_algobase.h **** 404:/usr/include/c++/4.8/bits/stl_algobase.h **** template<bool _IsMove, typename _CharT> 405:/usr/include/c++/4.8/bits/stl_algobase.h **** typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 406:/usr/include/c++/4.8/bits/stl_algobase.h **** ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 407:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_move_a2(_CharT*, _CharT*, 408:/usr/include/c++/4.8/bits/stl_algobase.h **** ostreambuf_iterator<_CharT, char_traits<_CharT> >); 409:/usr/include/c++/4.8/bits/stl_algobase.h **** 410:/usr/include/c++/4.8/bits/stl_algobase.h **** template<bool _IsMove, typename _CharT> 411:/usr/include/c++/4.8/bits/stl_algobase.h **** typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, GAS LISTING /tmp/ccCle2Qt.s page 58 412:/usr/include/c++/4.8/bits/stl_algobase.h **** ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 413:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_move_a2(const _CharT*, const _CharT*, 414:/usr/include/c++/4.8/bits/stl_algobase.h **** ostreambuf_iterator<_CharT, char_traits<_CharT> >); 415:/usr/include/c++/4.8/bits/stl_algobase.h **** 416:/usr/include/c++/4.8/bits/stl_algobase.h **** template<bool _IsMove, typename _CharT> 417:/usr/include/c++/4.8/bits/stl_algobase.h **** typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 418:/usr/include/c++/4.8/bits/stl_algobase.h **** _CharT*>::__type 419:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 420:/usr/include/c++/4.8/bits/stl_algobase.h **** istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 421:/usr/include/c++/4.8/bits/stl_algobase.h **** 422:/usr/include/c++/4.8/bits/stl_algobase.h **** template<bool _IsMove, typename _II, typename _OI> 423:/usr/include/c++/4.8/bits/stl_algobase.h **** inline _OI 424:/usr/include/c++/4.8/bits/stl_algobase.h **** __copy_move_a2(_II __first, _II __last, _OI __result) 808 .loc 9 424 0 809 .cfi_startproc 810 .LVL77: 811 0000 4154 pushq %r12 812 .cfi_def_cfa_offset 16 813 .cfi_offset 12, -16 814 0002 55 pushq %rbp 815 .cfi_def_cfa_offset 24 816 .cfi_offset 6, -24 817 0003 53 pushq %rbx 818 .cfi_def_cfa_offset 32 819 .cfi_offset 3, -32 820 0004 4989FC movq %rdi, %r12 821 0007 4889F3 movq %rsi, %rbx 425:/usr/include/c++/4.8/bits/stl_algobase.h **** { 426:/usr/include/c++/4.8/bits/stl_algobase.h **** return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first), 427:/usr/include/c++/4.8/bits/stl_algobase.h **** std::__niter_base(__last), 428:/usr/include/c++/4.8/bits/stl_algobase.h **** std::__niter_base(__result))); 822 .loc 9 428 0 823 000a 4889D7 movq %rdx, %rdi 824 .LVL78: 825 000d E8000000 call _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ 825 00 826 .LVL79: 827 0012 4889C5 movq %rax, %rbp 828 0015 4889DF movq %rbx, %rdi 829 0018 E8000000 call _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_ 829 00 830 .LVL80: 831 001d 4889C3 movq %rax, %rbx 832 .LVL81: 833 0020 4C89E7 movq %r12, %rdi 834 0023 E8000000 call _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_ 834 00 835 .LVL82: 836 0028 4889EA movq %rbp, %rdx 837 002b 4889DE movq %rbx, %rsi 838 002e 4889C7 movq %rax, %rdi 839 0031 E8000000 call _ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_ 839 00 840 .LVL83: 429:/usr/include/c++/4.8/bits/stl_algobase.h **** } 841 .loc 9 429 0 842 0036 5B popq %rbx GAS LISTING /tmp/ccCle2Qt.s page 59 843 .cfi_def_cfa_offset 24 844 0037 5D popq %rbp 845 .cfi_def_cfa_offset 16 846 0038 415C popq %r12 847 .cfi_def_cfa_offset 8 848 .LVL84: 849 003a C3 ret 850 .cfi_endproc 851 .LFE1834: 853 .section .text._ZSt4copyIPKiPiET0_T_S4_S3_,"axG",@progbits,_ZSt4copyIPKiPiET0_T_S4_S3_,comdat 854 .weak _ZSt4copyIPKiPiET0_T_S4_S3_ 856 _ZSt4copyIPKiPiET0_T_S4_S3_: 857 .LFB1824: 430:/usr/include/c++/4.8/bits/stl_algobase.h **** 431:/usr/include/c++/4.8/bits/stl_algobase.h **** /** 432:/usr/include/c++/4.8/bits/stl_algobase.h **** * @brief Copies the range [first,last) into result. 433:/usr/include/c++/4.8/bits/stl_algobase.h **** * @ingroup mutating_algorithms 434:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __first An input iterator. 435:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __last An input iterator. 436:/usr/include/c++/4.8/bits/stl_algobase.h **** * @param __result An output iterator. 437:/usr/include/c++/4.8/bits/stl_algobase.h **** * @return result + (first - last) 438:/usr/include/c++/4.8/bits/stl_algobase.h **** * 439:/usr/include/c++/4.8/bits/stl_algobase.h **** * This inline function will boil down to a call to @c memmove whenever 440:/usr/include/c++/4.8/bits/stl_algobase.h **** * possible. Failing that, if random access iterators are passed, then the 441:/usr/include/c++/4.8/bits/stl_algobase.h **** * loop count will be known (and therefore a candidate for compiler 442:/usr/include/c++/4.8/bits/stl_algobase.h **** * optimizations such as unrolling). Result may not be contained within 443:/usr/include/c++/4.8/bits/stl_algobase.h **** * [first,last); the copy_backward function should be used instead. 444:/usr/include/c++/4.8/bits/stl_algobase.h **** * 445:/usr/include/c++/4.8/bits/stl_algobase.h **** * Note that the end of the output range is permitted to be contained 446:/usr/include/c++/4.8/bits/stl_algobase.h **** * within [first,last). 447:/usr/include/c++/4.8/bits/stl_algobase.h **** */ 448:/usr/include/c++/4.8/bits/stl_algobase.h **** template<typename _II, typename _OI> 449:/usr/include/c++/4.8/bits/stl_algobase.h **** inline _OI 450:/usr/include/c++/4.8/bits/stl_algobase.h **** copy(_II __first, _II __last, _OI __result) 858 .loc 9 450 0 859 .cfi_startproc 860 .LVL85: 861 0000 4154 pushq %r12 862 .cfi_def_cfa_offset 16 863 .cfi_offset 12, -16 864 0002 55 pushq %rbp 865 .cfi_def_cfa_offset 24 866 .cfi_offset 6, -24 867 0003 53 pushq %rbx 868 .cfi_def_cfa_offset 32 869 .cfi_offset 3, -32 870 0004 4989FC movq %rdi, %r12 871 0007 4889D5 movq %rdx, %rbp 451:/usr/include/c++/4.8/bits/stl_algobase.h **** { 452:/usr/include/c++/4.8/bits/stl_algobase.h **** // concept requirements 453:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_InputIteratorConcept<_II>) 454:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_function_requires(_OutputIteratorConcept<_OI, 455:/usr/include/c++/4.8/bits/stl_algobase.h **** typename iterator_traits<_II>::value_type>) 456:/usr/include/c++/4.8/bits/stl_algobase.h **** __glibcxx_requires_valid_range(__first, __last); 457:/usr/include/c++/4.8/bits/stl_algobase.h **** 458:/usr/include/c++/4.8/bits/stl_algobase.h **** return (std::__copy_move_a2<__is_move_iterator<_II>::__value> 459:/usr/include/c++/4.8/bits/stl_algobase.h **** (std::__miter_base(__first), std::__miter_base(__last), GAS LISTING /tmp/ccCle2Qt.s page 60 460:/usr/include/c++/4.8/bits/stl_algobase.h **** __result)); 872 .loc 9 460 0 873 000a 4889F7 movq %rsi, %rdi 874 .LVL86: 875 000d E8000000 call _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_ 875 00 876 .LVL87: 877 0012 4889C3 movq %rax, %rbx 878 0015 4C89E7 movq %r12, %rdi 879 0018 E8000000 call _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_ 879 00 880 .LVL88: 881 001d 4889EA movq %rbp, %rdx 882 0020 4889DE movq %rbx, %rsi 883 0023 4889C7 movq %rax, %rdi 884 0026 E8000000 call _ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_ 884 00 885 .LVL89: 461:/usr/include/c++/4.8/bits/stl_algobase.h **** } 886 .loc 9 461 0 887 002b 5B popq %rbx 888 .cfi_def_cfa_offset 24 889 002c 5D popq %rbp 890 .cfi_def_cfa_offset 16 891 .LVL90: 892 002d 415C popq %r12 893 .cfi_def_cfa_offset 8 894 .LVL91: 895 002f C3 ret 896 .cfi_endproc 897 .LFE1824: 899 .section .text._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_,"axG",@progbits 900 .weak _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_ 902 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_: 903 .LFB1813: 904 .file 10 "/usr/include/c++/4.8/bits/stl_uninitialized.h" 1:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // Raw memory manipulators -*- C++ -*- 2:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 3:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // Copyright (C) 2001-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // 5:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // any later version. 10:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 11:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 16:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 20:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // a copy of the GCC Runtime Library Exception along with this program; GAS LISTING /tmp/ccCle2Qt.s page 61 22:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // <http://www.gnu.org/licenses/>. 24:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 25:/usr/include/c++/4.8/bits/stl_uninitialized.h **** /* 26:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * 27:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Copyright (c) 1994 28:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Hewlett-Packard Company 29:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * 30:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Permission to use, copy, modify, distribute and sell this software 31:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * and its documentation for any purpose is hereby granted without fee, 32:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * provided that the above copyright notice appear in all copies and 33:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * that both that copyright notice and this permission notice appear 34:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * in supporting documentation. Hewlett-Packard Company makes no 35:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * representations about the suitability of this software for any 36:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * purpose. It is provided "as is" without express or implied warranty. 37:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * 38:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * 39:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Copyright (c) 1996,1997 40:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Silicon Graphics Computer Systems, Inc. 41:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * 42:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Permission to use, copy, modify, distribute and sell this software 43:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * and its documentation for any purpose is hereby granted without fee, 44:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * provided that the above copyright notice appear in all copies and 45:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * that both that copyright notice and this permission notice appear 46:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * in supporting documentation. Silicon Graphics makes no 47:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * representations about the suitability of this software for any 48:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * purpose. It is provided "as is" without express or implied warranty. 49:/usr/include/c++/4.8/bits/stl_uninitialized.h **** */ 50:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 51:/usr/include/c++/4.8/bits/stl_uninitialized.h **** /** @file bits/stl_uninitialized.h 52:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * This is an internal header file, included by other library headers. 53:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Do not attempt to use it directly. @headername{memory} 54:/usr/include/c++/4.8/bits/stl_uninitialized.h **** */ 55:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 56:/usr/include/c++/4.8/bits/stl_uninitialized.h **** #ifndef _STL_UNINITIALIZED_H 57:/usr/include/c++/4.8/bits/stl_uninitialized.h **** #define _STL_UNINITIALIZED_H 1 58:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 59:/usr/include/c++/4.8/bits/stl_uninitialized.h **** namespace std _GLIBCXX_VISIBILITY(default) 60:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 61:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 62:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 63:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<bool _TrivialValueTypes> 64:/usr/include/c++/4.8/bits/stl_uninitialized.h **** struct __uninitialized_copy 65:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 66:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _InputIterator, typename _ForwardIterator> 67:/usr/include/c++/4.8/bits/stl_uninitialized.h **** static _ForwardIterator 68:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_copy(_InputIterator __first, _InputIterator __last, 69:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __result) 70:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 71:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __cur = __result; 72:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __try 73:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 74:/usr/include/c++/4.8/bits/stl_uninitialized.h **** for (; __first != __last; ++__first, ++__cur) 75:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::_Construct(std::__addressof(*__cur), *__first); 76:/usr/include/c++/4.8/bits/stl_uninitialized.h **** return __cur; 77:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 78:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __catch(...) GAS LISTING /tmp/ccCle2Qt.s page 62 79:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 80:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::_Destroy(__result, __cur); 81:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __throw_exception_again; 82:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 83:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 84:/usr/include/c++/4.8/bits/stl_uninitialized.h **** }; 85:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 86:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<> 87:/usr/include/c++/4.8/bits/stl_uninitialized.h **** struct __uninitialized_copy<true> 88:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 89:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _InputIterator, typename _ForwardIterator> 90:/usr/include/c++/4.8/bits/stl_uninitialized.h **** static _ForwardIterator 91:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_copy(_InputIterator __first, _InputIterator __last, 905 .loc 10 91 0 906 .cfi_startproc 907 .LVL92: 908 0000 4883EC08 subq $8, %rsp 909 .cfi_def_cfa_offset 16 92:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __result) 93:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { return std::copy(__first, __last, __result); } 910 .loc 10 93 0 911 0004 E8000000 call _ZSt4copyIPKiPiET0_T_S4_S3_ 911 00 912 .LVL93: 913 0009 4883C408 addq $8, %rsp 914 .cfi_def_cfa_offset 8 915 000d C3 ret 916 .cfi_endproc 917 .LFE1813: 919 .section .text._ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_,"axG",@progbits,_ZSt18uninitialized_copy 920 .weak _ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_ 922 _ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_: 923 .LFB1805: 94:/usr/include/c++/4.8/bits/stl_uninitialized.h **** }; 95:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 96:/usr/include/c++/4.8/bits/stl_uninitialized.h **** /** 97:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @brief Copies the range [first,last) into result. 98:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __first An input iterator. 99:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __last An input iterator. 100:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __result An output iterator. 101:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @return __result + (__first - __last) 102:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * 103:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Like copy(), but does not require an initialized output range. 104:/usr/include/c++/4.8/bits/stl_uninitialized.h **** */ 105:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _InputIterator, typename _ForwardIterator> 106:/usr/include/c++/4.8/bits/stl_uninitialized.h **** inline _ForwardIterator 107:/usr/include/c++/4.8/bits/stl_uninitialized.h **** uninitialized_copy(_InputIterator __first, _InputIterator __last, 924 .loc 10 107 0 925 .cfi_startproc 926 .LVL94: 927 0000 4883EC08 subq $8, %rsp 928 .cfi_def_cfa_offset 16 929 .LBB10: 108:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __result) 109:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 110:/usr/include/c++/4.8/bits/stl_uninitialized.h **** typedef typename iterator_traits<_InputIterator>::value_type 111:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ValueType1; GAS LISTING /tmp/ccCle2Qt.s page 63 112:/usr/include/c++/4.8/bits/stl_uninitialized.h **** typedef typename iterator_traits<_ForwardIterator>::value_type 113:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ValueType2; 114:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 115:/usr/include/c++/4.8/bits/stl_uninitialized.h **** return std::__uninitialized_copy<(__is_trivial(_ValueType1) 116:/usr/include/c++/4.8/bits/stl_uninitialized.h **** && __is_trivial(_ValueType2))>:: 117:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_copy(__first, __last, __result); 930 .loc 10 117 0 931 0004 E8000000 call _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_ 931 00 932 .LVL95: 933 .LBE10: 118:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 934 .loc 10 118 0 935 0009 4883C408 addq $8, %rsp 936 .cfi_def_cfa_offset 8 937 000d C3 ret 938 .cfi_endproc 939 .LFE1805: 941 .section .text._ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E,"axG",@progbits,_ZSt22__uni 942 .weak _ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E 944 _ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E: 945 .LFB1792: 119:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 120:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 121:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<bool _TrivialValueType> 122:/usr/include/c++/4.8/bits/stl_uninitialized.h **** struct __uninitialized_fill 123:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 124:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _ForwardIterator, typename _Tp> 125:/usr/include/c++/4.8/bits/stl_uninitialized.h **** static void 126:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 127:/usr/include/c++/4.8/bits/stl_uninitialized.h **** const _Tp& __x) 128:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 129:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __cur = __first; 130:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __try 131:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 132:/usr/include/c++/4.8/bits/stl_uninitialized.h **** for (; __cur != __last; ++__cur) 133:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::_Construct(std::__addressof(*__cur), __x); 134:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 135:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __catch(...) 136:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 137:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::_Destroy(__first, __cur); 138:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __throw_exception_again; 139:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 140:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 141:/usr/include/c++/4.8/bits/stl_uninitialized.h **** }; 142:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 143:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<> 144:/usr/include/c++/4.8/bits/stl_uninitialized.h **** struct __uninitialized_fill<true> 145:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 146:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _ForwardIterator, typename _Tp> 147:/usr/include/c++/4.8/bits/stl_uninitialized.h **** static void 148:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 149:/usr/include/c++/4.8/bits/stl_uninitialized.h **** const _Tp& __x) 150:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { std::fill(__first, __last, __x); } 151:/usr/include/c++/4.8/bits/stl_uninitialized.h **** }; 152:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 153:/usr/include/c++/4.8/bits/stl_uninitialized.h **** /** GAS LISTING /tmp/ccCle2Qt.s page 64 154:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @brief Copies the value x into the range [first,last). 155:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __first An input iterator. 156:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __last An input iterator. 157:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __x The source value. 158:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @return Nothing. 159:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * 160:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Like fill(), but does not require an initialized output range. 161:/usr/include/c++/4.8/bits/stl_uninitialized.h **** */ 162:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _ForwardIterator, typename _Tp> 163:/usr/include/c++/4.8/bits/stl_uninitialized.h **** inline void 164:/usr/include/c++/4.8/bits/stl_uninitialized.h **** uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 165:/usr/include/c++/4.8/bits/stl_uninitialized.h **** const _Tp& __x) 166:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 167:/usr/include/c++/4.8/bits/stl_uninitialized.h **** typedef typename iterator_traits<_ForwardIterator>::value_type 168:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ValueType; 169:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 170:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::__uninitialized_fill<__is_trivial(_ValueType)>:: 171:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_fill(__first, __last, __x); 172:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 173:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 174:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 175:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<bool _TrivialValueType> 176:/usr/include/c++/4.8/bits/stl_uninitialized.h **** struct __uninitialized_fill_n 177:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 178:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _ForwardIterator, typename _Size, typename _Tp> 179:/usr/include/c++/4.8/bits/stl_uninitialized.h **** static void 180:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_fill_n(_ForwardIterator __first, _Size __n, 181:/usr/include/c++/4.8/bits/stl_uninitialized.h **** const _Tp& __x) 182:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 183:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __cur = __first; 184:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __try 185:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 186:/usr/include/c++/4.8/bits/stl_uninitialized.h **** for (; __n > 0; --__n, ++__cur) 187:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::_Construct(std::__addressof(*__cur), __x); 188:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 189:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __catch(...) 190:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 191:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::_Destroy(__first, __cur); 192:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __throw_exception_again; 193:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 194:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 195:/usr/include/c++/4.8/bits/stl_uninitialized.h **** }; 196:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 197:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<> 198:/usr/include/c++/4.8/bits/stl_uninitialized.h **** struct __uninitialized_fill_n<true> 199:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 200:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _ForwardIterator, typename _Size, typename _Tp> 201:/usr/include/c++/4.8/bits/stl_uninitialized.h **** static void 202:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_fill_n(_ForwardIterator __first, _Size __n, 203:/usr/include/c++/4.8/bits/stl_uninitialized.h **** const _Tp& __x) 204:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { std::fill_n(__first, __n, __x); } 205:/usr/include/c++/4.8/bits/stl_uninitialized.h **** }; 206:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 207:/usr/include/c++/4.8/bits/stl_uninitialized.h **** /** 208:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @brief Copies the value x into the range [first,first+n). 209:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __first An input iterator. 210:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __n The number of copies to make. GAS LISTING /tmp/ccCle2Qt.s page 65 211:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @param __x The source value. 212:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * @return Nothing. 213:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * 214:/usr/include/c++/4.8/bits/stl_uninitialized.h **** * Like fill_n(), but does not require an initialized output range. 215:/usr/include/c++/4.8/bits/stl_uninitialized.h **** */ 216:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _ForwardIterator, typename _Size, typename _Tp> 217:/usr/include/c++/4.8/bits/stl_uninitialized.h **** inline void 218:/usr/include/c++/4.8/bits/stl_uninitialized.h **** uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 219:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 220:/usr/include/c++/4.8/bits/stl_uninitialized.h **** typedef typename iterator_traits<_ForwardIterator>::value_type 221:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ValueType; 222:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 223:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::__uninitialized_fill_n<__is_trivial(_ValueType)>:: 224:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninit_fill_n(__first, __n, __x); 225:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 226:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 227:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // Extensions: versions of uninitialized_copy, uninitialized_fill, 228:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // and uninitialized_fill_n that take an allocator parameter. 229:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // We dispatch back to the standard versions when we're given the 230:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // default allocator. For nondefault allocators we do not use 231:/usr/include/c++/4.8/bits/stl_uninitialized.h **** // any of the POD optimizations. 232:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 233:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _InputIterator, typename _ForwardIterator, 234:/usr/include/c++/4.8/bits/stl_uninitialized.h **** typename _Allocator> 235:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator 236:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 237:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __result, _Allocator& __alloc) 238:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 239:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __cur = __result; 240:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __try 241:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 242:/usr/include/c++/4.8/bits/stl_uninitialized.h **** typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 243:/usr/include/c++/4.8/bits/stl_uninitialized.h **** for (; __first != __last; ++__first, ++__cur) 244:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __traits::construct(__alloc, std::__addressof(*__cur), *__first); 245:/usr/include/c++/4.8/bits/stl_uninitialized.h **** return __cur; 246:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 247:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __catch(...) 248:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { 249:/usr/include/c++/4.8/bits/stl_uninitialized.h **** std::_Destroy(__result, __cur, __alloc); 250:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __throw_exception_again; 251:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 252:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 253:/usr/include/c++/4.8/bits/stl_uninitialized.h **** 254:/usr/include/c++/4.8/bits/stl_uninitialized.h **** template<typename _InputIterator, typename _ForwardIterator, typename _Tp> 255:/usr/include/c++/4.8/bits/stl_uninitialized.h **** inline _ForwardIterator 256:/usr/include/c++/4.8/bits/stl_uninitialized.h **** __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 946 .loc 10 256 0 947 .cfi_startproc 948 .LVL96: 949 0000 4883EC08 subq $8, %rsp 950 .cfi_def_cfa_offset 16 257:/usr/include/c++/4.8/bits/stl_uninitialized.h **** _ForwardIterator __result, allocator<_Tp>&) 258:/usr/include/c++/4.8/bits/stl_uninitialized.h **** { return std::uninitialized_copy(__first, __last, __result); } 951 .loc 10 258 0 952 0004 E8000000 call _ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_ 952 00 953 .LVL97: GAS LISTING /tmp/ccCle2Qt.s page 66 954 0009 4883C408 addq $8, %rsp 955 .cfi_def_cfa_offset 8 956 000d C3 ret 957 .cfi_endproc 958 .LFE1792: 960 .section .text._ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag,"axG" 961 .align 2 962 .weak _ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag 964 _ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag: 965 .LFB1746: 558:/usr/include/c++/4.8/bits/stl_vector.h **** 559:/usr/include/c++/4.8/bits/stl_vector.h **** /** 560:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) iterator that points one past 561:/usr/include/c++/4.8/bits/stl_vector.h **** * the last element in the %vector. Iteration is done in 562:/usr/include/c++/4.8/bits/stl_vector.h **** * ordinary element order. 563:/usr/include/c++/4.8/bits/stl_vector.h **** */ 564:/usr/include/c++/4.8/bits/stl_vector.h **** const_iterator 565:/usr/include/c++/4.8/bits/stl_vector.h **** end() const _GLIBCXX_NOEXCEPT 566:/usr/include/c++/4.8/bits/stl_vector.h **** { return const_iterator(this->_M_impl._M_finish); } 567:/usr/include/c++/4.8/bits/stl_vector.h **** 568:/usr/include/c++/4.8/bits/stl_vector.h **** /** 569:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read/write reverse iterator that points to the 570:/usr/include/c++/4.8/bits/stl_vector.h **** * last element in the %vector. Iteration is done in reverse 571:/usr/include/c++/4.8/bits/stl_vector.h **** * element order. 572:/usr/include/c++/4.8/bits/stl_vector.h **** */ 573:/usr/include/c++/4.8/bits/stl_vector.h **** reverse_iterator 574:/usr/include/c++/4.8/bits/stl_vector.h **** rbegin() _GLIBCXX_NOEXCEPT 575:/usr/include/c++/4.8/bits/stl_vector.h **** { return reverse_iterator(end()); } 576:/usr/include/c++/4.8/bits/stl_vector.h **** 577:/usr/include/c++/4.8/bits/stl_vector.h **** /** 578:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) reverse iterator that points 579:/usr/include/c++/4.8/bits/stl_vector.h **** * to the last element in the %vector. Iteration is done in 580:/usr/include/c++/4.8/bits/stl_vector.h **** * reverse element order. 581:/usr/include/c++/4.8/bits/stl_vector.h **** */ 582:/usr/include/c++/4.8/bits/stl_vector.h **** const_reverse_iterator 583:/usr/include/c++/4.8/bits/stl_vector.h **** rbegin() const _GLIBCXX_NOEXCEPT 584:/usr/include/c++/4.8/bits/stl_vector.h **** { return const_reverse_iterator(end()); } 585:/usr/include/c++/4.8/bits/stl_vector.h **** 586:/usr/include/c++/4.8/bits/stl_vector.h **** /** 587:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read/write reverse iterator that points to one 588:/usr/include/c++/4.8/bits/stl_vector.h **** * before the first element in the %vector. Iteration is done 589:/usr/include/c++/4.8/bits/stl_vector.h **** * in reverse element order. 590:/usr/include/c++/4.8/bits/stl_vector.h **** */ 591:/usr/include/c++/4.8/bits/stl_vector.h **** reverse_iterator 592:/usr/include/c++/4.8/bits/stl_vector.h **** rend() _GLIBCXX_NOEXCEPT 593:/usr/include/c++/4.8/bits/stl_vector.h **** { return reverse_iterator(begin()); } 594:/usr/include/c++/4.8/bits/stl_vector.h **** 595:/usr/include/c++/4.8/bits/stl_vector.h **** /** 596:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) reverse iterator that points 597:/usr/include/c++/4.8/bits/stl_vector.h **** * to one before the first element in the %vector. Iteration 598:/usr/include/c++/4.8/bits/stl_vector.h **** * is done in reverse element order. 599:/usr/include/c++/4.8/bits/stl_vector.h **** */ 600:/usr/include/c++/4.8/bits/stl_vector.h **** const_reverse_iterator 601:/usr/include/c++/4.8/bits/stl_vector.h **** rend() const _GLIBCXX_NOEXCEPT 602:/usr/include/c++/4.8/bits/stl_vector.h **** { return const_reverse_iterator(begin()); } 603:/usr/include/c++/4.8/bits/stl_vector.h **** 604:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L GAS LISTING /tmp/ccCle2Qt.s page 67 605:/usr/include/c++/4.8/bits/stl_vector.h **** /** 606:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) iterator that points to the 607:/usr/include/c++/4.8/bits/stl_vector.h **** * first element in the %vector. Iteration is done in ordinary 608:/usr/include/c++/4.8/bits/stl_vector.h **** * element order. 609:/usr/include/c++/4.8/bits/stl_vector.h **** */ 610:/usr/include/c++/4.8/bits/stl_vector.h **** const_iterator 611:/usr/include/c++/4.8/bits/stl_vector.h **** cbegin() const noexcept 612:/usr/include/c++/4.8/bits/stl_vector.h **** { return const_iterator(this->_M_impl._M_start); } 613:/usr/include/c++/4.8/bits/stl_vector.h **** 614:/usr/include/c++/4.8/bits/stl_vector.h **** /** 615:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) iterator that points one past 616:/usr/include/c++/4.8/bits/stl_vector.h **** * the last element in the %vector. Iteration is done in 617:/usr/include/c++/4.8/bits/stl_vector.h **** * ordinary element order. 618:/usr/include/c++/4.8/bits/stl_vector.h **** */ 619:/usr/include/c++/4.8/bits/stl_vector.h **** const_iterator 620:/usr/include/c++/4.8/bits/stl_vector.h **** cend() const noexcept 621:/usr/include/c++/4.8/bits/stl_vector.h **** { return const_iterator(this->_M_impl._M_finish); } 622:/usr/include/c++/4.8/bits/stl_vector.h **** 623:/usr/include/c++/4.8/bits/stl_vector.h **** /** 624:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) reverse iterator that points 625:/usr/include/c++/4.8/bits/stl_vector.h **** * to the last element in the %vector. Iteration is done in 626:/usr/include/c++/4.8/bits/stl_vector.h **** * reverse element order. 627:/usr/include/c++/4.8/bits/stl_vector.h **** */ 628:/usr/include/c++/4.8/bits/stl_vector.h **** const_reverse_iterator 629:/usr/include/c++/4.8/bits/stl_vector.h **** crbegin() const noexcept 630:/usr/include/c++/4.8/bits/stl_vector.h **** { return const_reverse_iterator(end()); } 631:/usr/include/c++/4.8/bits/stl_vector.h **** 632:/usr/include/c++/4.8/bits/stl_vector.h **** /** 633:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) reverse iterator that points 634:/usr/include/c++/4.8/bits/stl_vector.h **** * to one before the first element in the %vector. Iteration 635:/usr/include/c++/4.8/bits/stl_vector.h **** * is done in reverse element order. 636:/usr/include/c++/4.8/bits/stl_vector.h **** */ 637:/usr/include/c++/4.8/bits/stl_vector.h **** const_reverse_iterator 638:/usr/include/c++/4.8/bits/stl_vector.h **** crend() const noexcept 639:/usr/include/c++/4.8/bits/stl_vector.h **** { return const_reverse_iterator(begin()); } 640:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 641:/usr/include/c++/4.8/bits/stl_vector.h **** 642:/usr/include/c++/4.8/bits/stl_vector.h **** // [23.2.4.2] capacity 643:/usr/include/c++/4.8/bits/stl_vector.h **** /** Returns the number of elements in the %vector. */ 644:/usr/include/c++/4.8/bits/stl_vector.h **** size_type 645:/usr/include/c++/4.8/bits/stl_vector.h **** size() const _GLIBCXX_NOEXCEPT 646:/usr/include/c++/4.8/bits/stl_vector.h **** { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } 647:/usr/include/c++/4.8/bits/stl_vector.h **** 648:/usr/include/c++/4.8/bits/stl_vector.h **** /** Returns the size() of the largest possible %vector. */ 649:/usr/include/c++/4.8/bits/stl_vector.h **** size_type 650:/usr/include/c++/4.8/bits/stl_vector.h **** max_size() const _GLIBCXX_NOEXCEPT 651:/usr/include/c++/4.8/bits/stl_vector.h **** { return _Alloc_traits::max_size(_M_get_Tp_allocator()); } 652:/usr/include/c++/4.8/bits/stl_vector.h **** 653:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 654:/usr/include/c++/4.8/bits/stl_vector.h **** /** 655:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Resizes the %vector to the specified number of elements. 656:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __new_size Number of elements the %vector should contain. 657:/usr/include/c++/4.8/bits/stl_vector.h **** * 658:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will %resize the %vector to the specified 659:/usr/include/c++/4.8/bits/stl_vector.h **** * number of elements. If the number is smaller than the 660:/usr/include/c++/4.8/bits/stl_vector.h **** * %vector's current size the %vector is truncated, otherwise 661:/usr/include/c++/4.8/bits/stl_vector.h **** * default constructed elements are appended. GAS LISTING /tmp/ccCle2Qt.s page 68 662:/usr/include/c++/4.8/bits/stl_vector.h **** */ 663:/usr/include/c++/4.8/bits/stl_vector.h **** void 664:/usr/include/c++/4.8/bits/stl_vector.h **** resize(size_type __new_size) 665:/usr/include/c++/4.8/bits/stl_vector.h **** { 666:/usr/include/c++/4.8/bits/stl_vector.h **** if (__new_size > size()) 667:/usr/include/c++/4.8/bits/stl_vector.h **** _M_default_append(__new_size - size()); 668:/usr/include/c++/4.8/bits/stl_vector.h **** else if (__new_size < size()) 669:/usr/include/c++/4.8/bits/stl_vector.h **** _M_erase_at_end(this->_M_impl._M_start + __new_size); 670:/usr/include/c++/4.8/bits/stl_vector.h **** } 671:/usr/include/c++/4.8/bits/stl_vector.h **** 672:/usr/include/c++/4.8/bits/stl_vector.h **** /** 673:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Resizes the %vector to the specified number of elements. 674:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __new_size Number of elements the %vector should contain. 675:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x Data with which new elements should be populated. 676:/usr/include/c++/4.8/bits/stl_vector.h **** * 677:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will %resize the %vector to the specified 678:/usr/include/c++/4.8/bits/stl_vector.h **** * number of elements. If the number is smaller than the 679:/usr/include/c++/4.8/bits/stl_vector.h **** * %vector's current size the %vector is truncated, otherwise 680:/usr/include/c++/4.8/bits/stl_vector.h **** * the %vector is extended and new elements are populated with 681:/usr/include/c++/4.8/bits/stl_vector.h **** * given data. 682:/usr/include/c++/4.8/bits/stl_vector.h **** */ 683:/usr/include/c++/4.8/bits/stl_vector.h **** void 684:/usr/include/c++/4.8/bits/stl_vector.h **** resize(size_type __new_size, const value_type& __x) 685:/usr/include/c++/4.8/bits/stl_vector.h **** { 686:/usr/include/c++/4.8/bits/stl_vector.h **** if (__new_size > size()) 687:/usr/include/c++/4.8/bits/stl_vector.h **** insert(end(), __new_size - size(), __x); 688:/usr/include/c++/4.8/bits/stl_vector.h **** else if (__new_size < size()) 689:/usr/include/c++/4.8/bits/stl_vector.h **** _M_erase_at_end(this->_M_impl._M_start + __new_size); 690:/usr/include/c++/4.8/bits/stl_vector.h **** } 691:/usr/include/c++/4.8/bits/stl_vector.h **** #else 692:/usr/include/c++/4.8/bits/stl_vector.h **** /** 693:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Resizes the %vector to the specified number of elements. 694:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __new_size Number of elements the %vector should contain. 695:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x Data with which new elements should be populated. 696:/usr/include/c++/4.8/bits/stl_vector.h **** * 697:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will %resize the %vector to the specified 698:/usr/include/c++/4.8/bits/stl_vector.h **** * number of elements. If the number is smaller than the 699:/usr/include/c++/4.8/bits/stl_vector.h **** * %vector's current size the %vector is truncated, otherwise 700:/usr/include/c++/4.8/bits/stl_vector.h **** * the %vector is extended and new elements are populated with 701:/usr/include/c++/4.8/bits/stl_vector.h **** * given data. 702:/usr/include/c++/4.8/bits/stl_vector.h **** */ 703:/usr/include/c++/4.8/bits/stl_vector.h **** void 704:/usr/include/c++/4.8/bits/stl_vector.h **** resize(size_type __new_size, value_type __x = value_type()) 705:/usr/include/c++/4.8/bits/stl_vector.h **** { 706:/usr/include/c++/4.8/bits/stl_vector.h **** if (__new_size > size()) 707:/usr/include/c++/4.8/bits/stl_vector.h **** insert(end(), __new_size - size(), __x); 708:/usr/include/c++/4.8/bits/stl_vector.h **** else if (__new_size < size()) 709:/usr/include/c++/4.8/bits/stl_vector.h **** _M_erase_at_end(this->_M_impl._M_start + __new_size); 710:/usr/include/c++/4.8/bits/stl_vector.h **** } 711:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 712:/usr/include/c++/4.8/bits/stl_vector.h **** 713:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 714:/usr/include/c++/4.8/bits/stl_vector.h **** /** A non-binding request to reduce capacity() to size(). */ 715:/usr/include/c++/4.8/bits/stl_vector.h **** void 716:/usr/include/c++/4.8/bits/stl_vector.h **** shrink_to_fit() 717:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_shrink_to_fit(); } 718:/usr/include/c++/4.8/bits/stl_vector.h **** #endif GAS LISTING /tmp/ccCle2Qt.s page 69 719:/usr/include/c++/4.8/bits/stl_vector.h **** 720:/usr/include/c++/4.8/bits/stl_vector.h **** /** 721:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns the total number of elements that the %vector can 722:/usr/include/c++/4.8/bits/stl_vector.h **** * hold before needing to allocate more memory. 723:/usr/include/c++/4.8/bits/stl_vector.h **** */ 724:/usr/include/c++/4.8/bits/stl_vector.h **** size_type 725:/usr/include/c++/4.8/bits/stl_vector.h **** capacity() const _GLIBCXX_NOEXCEPT 726:/usr/include/c++/4.8/bits/stl_vector.h **** { return size_type(this->_M_impl._M_end_of_storage 727:/usr/include/c++/4.8/bits/stl_vector.h **** - this->_M_impl._M_start); } 728:/usr/include/c++/4.8/bits/stl_vector.h **** 729:/usr/include/c++/4.8/bits/stl_vector.h **** /** 730:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns true if the %vector is empty. (Thus begin() would 731:/usr/include/c++/4.8/bits/stl_vector.h **** * equal end().) 732:/usr/include/c++/4.8/bits/stl_vector.h **** */ 733:/usr/include/c++/4.8/bits/stl_vector.h **** bool 734:/usr/include/c++/4.8/bits/stl_vector.h **** empty() const _GLIBCXX_NOEXCEPT 735:/usr/include/c++/4.8/bits/stl_vector.h **** { return begin() == end(); } 736:/usr/include/c++/4.8/bits/stl_vector.h **** 737:/usr/include/c++/4.8/bits/stl_vector.h **** /** 738:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Attempt to preallocate enough memory for specified number of 739:/usr/include/c++/4.8/bits/stl_vector.h **** * elements. 740:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n Number of elements required. 741:/usr/include/c++/4.8/bits/stl_vector.h **** * @throw std::length_error If @a n exceeds @c max_size(). 742:/usr/include/c++/4.8/bits/stl_vector.h **** * 743:/usr/include/c++/4.8/bits/stl_vector.h **** * This function attempts to reserve enough memory for the 744:/usr/include/c++/4.8/bits/stl_vector.h **** * %vector to hold the specified number of elements. If the 745:/usr/include/c++/4.8/bits/stl_vector.h **** * number requested is more than max_size(), length_error is 746:/usr/include/c++/4.8/bits/stl_vector.h **** * thrown. 747:/usr/include/c++/4.8/bits/stl_vector.h **** * 748:/usr/include/c++/4.8/bits/stl_vector.h **** * The advantage of this function is that if optimal code is a 749:/usr/include/c++/4.8/bits/stl_vector.h **** * necessity and the user can determine the number of elements 750:/usr/include/c++/4.8/bits/stl_vector.h **** * that will be required, the user can reserve the memory in 751:/usr/include/c++/4.8/bits/stl_vector.h **** * %advance, and thus prevent a possible reallocation of memory 752:/usr/include/c++/4.8/bits/stl_vector.h **** * and copying of %vector data. 753:/usr/include/c++/4.8/bits/stl_vector.h **** */ 754:/usr/include/c++/4.8/bits/stl_vector.h **** void 755:/usr/include/c++/4.8/bits/stl_vector.h **** reserve(size_type __n); 756:/usr/include/c++/4.8/bits/stl_vector.h **** 757:/usr/include/c++/4.8/bits/stl_vector.h **** // element access 758:/usr/include/c++/4.8/bits/stl_vector.h **** /** 759:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Subscript access to the data contained in the %vector. 760:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n The index of the element for which data should be 761:/usr/include/c++/4.8/bits/stl_vector.h **** * accessed. 762:/usr/include/c++/4.8/bits/stl_vector.h **** * @return Read/write reference to data. 763:/usr/include/c++/4.8/bits/stl_vector.h **** * 764:/usr/include/c++/4.8/bits/stl_vector.h **** * This operator allows for easy, array-style, data access. 765:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that data access with this operator is unchecked and 766:/usr/include/c++/4.8/bits/stl_vector.h **** * out_of_range lookups are not defined. (For checked lookups 767:/usr/include/c++/4.8/bits/stl_vector.h **** * see at().) 768:/usr/include/c++/4.8/bits/stl_vector.h **** */ 769:/usr/include/c++/4.8/bits/stl_vector.h **** reference 770:/usr/include/c++/4.8/bits/stl_vector.h **** operator[](size_type __n) 771:/usr/include/c++/4.8/bits/stl_vector.h **** { return *(this->_M_impl._M_start + __n); } 772:/usr/include/c++/4.8/bits/stl_vector.h **** 773:/usr/include/c++/4.8/bits/stl_vector.h **** /** 774:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Subscript access to the data contained in the %vector. 775:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n The index of the element for which data should be GAS LISTING /tmp/ccCle2Qt.s page 70 776:/usr/include/c++/4.8/bits/stl_vector.h **** * accessed. 777:/usr/include/c++/4.8/bits/stl_vector.h **** * @return Read-only (constant) reference to data. 778:/usr/include/c++/4.8/bits/stl_vector.h **** * 779:/usr/include/c++/4.8/bits/stl_vector.h **** * This operator allows for easy, array-style, data access. 780:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that data access with this operator is unchecked and 781:/usr/include/c++/4.8/bits/stl_vector.h **** * out_of_range lookups are not defined. (For checked lookups 782:/usr/include/c++/4.8/bits/stl_vector.h **** * see at().) 783:/usr/include/c++/4.8/bits/stl_vector.h **** */ 784:/usr/include/c++/4.8/bits/stl_vector.h **** const_reference 785:/usr/include/c++/4.8/bits/stl_vector.h **** operator[](size_type __n) const 786:/usr/include/c++/4.8/bits/stl_vector.h **** { return *(this->_M_impl._M_start + __n); } 787:/usr/include/c++/4.8/bits/stl_vector.h **** 788:/usr/include/c++/4.8/bits/stl_vector.h **** protected: 789:/usr/include/c++/4.8/bits/stl_vector.h **** /// Safety check used only from at(). 790:/usr/include/c++/4.8/bits/stl_vector.h **** void 791:/usr/include/c++/4.8/bits/stl_vector.h **** _M_range_check(size_type __n) const 792:/usr/include/c++/4.8/bits/stl_vector.h **** { 793:/usr/include/c++/4.8/bits/stl_vector.h **** if (__n >= this->size()) 794:/usr/include/c++/4.8/bits/stl_vector.h **** __throw_out_of_range(__N("vector::_M_range_check")); 795:/usr/include/c++/4.8/bits/stl_vector.h **** } 796:/usr/include/c++/4.8/bits/stl_vector.h **** 797:/usr/include/c++/4.8/bits/stl_vector.h **** public: 798:/usr/include/c++/4.8/bits/stl_vector.h **** /** 799:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Provides access to the data contained in the %vector. 800:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n The index of the element for which data should be 801:/usr/include/c++/4.8/bits/stl_vector.h **** * accessed. 802:/usr/include/c++/4.8/bits/stl_vector.h **** * @return Read/write reference to data. 803:/usr/include/c++/4.8/bits/stl_vector.h **** * @throw std::out_of_range If @a __n is an invalid index. 804:/usr/include/c++/4.8/bits/stl_vector.h **** * 805:/usr/include/c++/4.8/bits/stl_vector.h **** * This function provides for safer data access. The parameter 806:/usr/include/c++/4.8/bits/stl_vector.h **** * is first checked that it is in the range of the vector. The 807:/usr/include/c++/4.8/bits/stl_vector.h **** * function throws out_of_range if the check fails. 808:/usr/include/c++/4.8/bits/stl_vector.h **** */ 809:/usr/include/c++/4.8/bits/stl_vector.h **** reference 810:/usr/include/c++/4.8/bits/stl_vector.h **** at(size_type __n) 811:/usr/include/c++/4.8/bits/stl_vector.h **** { 812:/usr/include/c++/4.8/bits/stl_vector.h **** _M_range_check(__n); 813:/usr/include/c++/4.8/bits/stl_vector.h **** return (*this)[__n]; 814:/usr/include/c++/4.8/bits/stl_vector.h **** } 815:/usr/include/c++/4.8/bits/stl_vector.h **** 816:/usr/include/c++/4.8/bits/stl_vector.h **** /** 817:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Provides access to the data contained in the %vector. 818:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n The index of the element for which data should be 819:/usr/include/c++/4.8/bits/stl_vector.h **** * accessed. 820:/usr/include/c++/4.8/bits/stl_vector.h **** * @return Read-only (constant) reference to data. 821:/usr/include/c++/4.8/bits/stl_vector.h **** * @throw std::out_of_range If @a __n is an invalid index. 822:/usr/include/c++/4.8/bits/stl_vector.h **** * 823:/usr/include/c++/4.8/bits/stl_vector.h **** * This function provides for safer data access. The parameter 824:/usr/include/c++/4.8/bits/stl_vector.h **** * is first checked that it is in the range of the vector. The 825:/usr/include/c++/4.8/bits/stl_vector.h **** * function throws out_of_range if the check fails. 826:/usr/include/c++/4.8/bits/stl_vector.h **** */ 827:/usr/include/c++/4.8/bits/stl_vector.h **** const_reference 828:/usr/include/c++/4.8/bits/stl_vector.h **** at(size_type __n) const 829:/usr/include/c++/4.8/bits/stl_vector.h **** { 830:/usr/include/c++/4.8/bits/stl_vector.h **** _M_range_check(__n); 831:/usr/include/c++/4.8/bits/stl_vector.h **** return (*this)[__n]; 832:/usr/include/c++/4.8/bits/stl_vector.h **** } GAS LISTING /tmp/ccCle2Qt.s page 71 833:/usr/include/c++/4.8/bits/stl_vector.h **** 834:/usr/include/c++/4.8/bits/stl_vector.h **** /** 835:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read/write reference to the data at the first 836:/usr/include/c++/4.8/bits/stl_vector.h **** * element of the %vector. 837:/usr/include/c++/4.8/bits/stl_vector.h **** */ 838:/usr/include/c++/4.8/bits/stl_vector.h **** reference 839:/usr/include/c++/4.8/bits/stl_vector.h **** front() 840:/usr/include/c++/4.8/bits/stl_vector.h **** { return *begin(); } 841:/usr/include/c++/4.8/bits/stl_vector.h **** 842:/usr/include/c++/4.8/bits/stl_vector.h **** /** 843:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) reference to the data at the first 844:/usr/include/c++/4.8/bits/stl_vector.h **** * element of the %vector. 845:/usr/include/c++/4.8/bits/stl_vector.h **** */ 846:/usr/include/c++/4.8/bits/stl_vector.h **** const_reference 847:/usr/include/c++/4.8/bits/stl_vector.h **** front() const 848:/usr/include/c++/4.8/bits/stl_vector.h **** { return *begin(); } 849:/usr/include/c++/4.8/bits/stl_vector.h **** 850:/usr/include/c++/4.8/bits/stl_vector.h **** /** 851:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read/write reference to the data at the last 852:/usr/include/c++/4.8/bits/stl_vector.h **** * element of the %vector. 853:/usr/include/c++/4.8/bits/stl_vector.h **** */ 854:/usr/include/c++/4.8/bits/stl_vector.h **** reference 855:/usr/include/c++/4.8/bits/stl_vector.h **** back() 856:/usr/include/c++/4.8/bits/stl_vector.h **** { return *(end() - 1); } 857:/usr/include/c++/4.8/bits/stl_vector.h **** 858:/usr/include/c++/4.8/bits/stl_vector.h **** /** 859:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a read-only (constant) reference to the data at the 860:/usr/include/c++/4.8/bits/stl_vector.h **** * last element of the %vector. 861:/usr/include/c++/4.8/bits/stl_vector.h **** */ 862:/usr/include/c++/4.8/bits/stl_vector.h **** const_reference 863:/usr/include/c++/4.8/bits/stl_vector.h **** back() const 864:/usr/include/c++/4.8/bits/stl_vector.h **** { return *(end() - 1); } 865:/usr/include/c++/4.8/bits/stl_vector.h **** 866:/usr/include/c++/4.8/bits/stl_vector.h **** // _GLIBCXX_RESOLVE_LIB_DEFECTS 867:/usr/include/c++/4.8/bits/stl_vector.h **** // DR 464. Suggestion for new member functions in standard containers. 868:/usr/include/c++/4.8/bits/stl_vector.h **** // data access 869:/usr/include/c++/4.8/bits/stl_vector.h **** /** 870:/usr/include/c++/4.8/bits/stl_vector.h **** * Returns a pointer such that [data(), data() + size()) is a valid 871:/usr/include/c++/4.8/bits/stl_vector.h **** * range. For a non-empty %vector, data() == &front(). 872:/usr/include/c++/4.8/bits/stl_vector.h **** */ 873:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 874:/usr/include/c++/4.8/bits/stl_vector.h **** _Tp* 875:/usr/include/c++/4.8/bits/stl_vector.h **** #else 876:/usr/include/c++/4.8/bits/stl_vector.h **** pointer 877:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 878:/usr/include/c++/4.8/bits/stl_vector.h **** data() _GLIBCXX_NOEXCEPT 879:/usr/include/c++/4.8/bits/stl_vector.h **** { return std::__addressof(front()); } 880:/usr/include/c++/4.8/bits/stl_vector.h **** 881:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 882:/usr/include/c++/4.8/bits/stl_vector.h **** const _Tp* 883:/usr/include/c++/4.8/bits/stl_vector.h **** #else 884:/usr/include/c++/4.8/bits/stl_vector.h **** const_pointer 885:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 886:/usr/include/c++/4.8/bits/stl_vector.h **** data() const _GLIBCXX_NOEXCEPT 887:/usr/include/c++/4.8/bits/stl_vector.h **** { return std::__addressof(front()); } 888:/usr/include/c++/4.8/bits/stl_vector.h **** 889:/usr/include/c++/4.8/bits/stl_vector.h **** // [23.2.4.3] modifiers GAS LISTING /tmp/ccCle2Qt.s page 72 890:/usr/include/c++/4.8/bits/stl_vector.h **** /** 891:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Add data to the end of the %vector. 892:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x Data to be added. 893:/usr/include/c++/4.8/bits/stl_vector.h **** * 894:/usr/include/c++/4.8/bits/stl_vector.h **** * This is a typical stack operation. The function creates an 895:/usr/include/c++/4.8/bits/stl_vector.h **** * element at the end of the %vector and assigns the given data 896:/usr/include/c++/4.8/bits/stl_vector.h **** * to it. Due to the nature of a %vector this operation can be 897:/usr/include/c++/4.8/bits/stl_vector.h **** * done in constant time if the %vector has preallocated space 898:/usr/include/c++/4.8/bits/stl_vector.h **** * available. 899:/usr/include/c++/4.8/bits/stl_vector.h **** */ 900:/usr/include/c++/4.8/bits/stl_vector.h **** void 901:/usr/include/c++/4.8/bits/stl_vector.h **** push_back(const value_type& __x) 902:/usr/include/c++/4.8/bits/stl_vector.h **** { 903:/usr/include/c++/4.8/bits/stl_vector.h **** if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 904:/usr/include/c++/4.8/bits/stl_vector.h **** { 905:/usr/include/c++/4.8/bits/stl_vector.h **** _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 906:/usr/include/c++/4.8/bits/stl_vector.h **** __x); 907:/usr/include/c++/4.8/bits/stl_vector.h **** ++this->_M_impl._M_finish; 908:/usr/include/c++/4.8/bits/stl_vector.h **** } 909:/usr/include/c++/4.8/bits/stl_vector.h **** else 910:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 911:/usr/include/c++/4.8/bits/stl_vector.h **** _M_emplace_back_aux(__x); 912:/usr/include/c++/4.8/bits/stl_vector.h **** #else 913:/usr/include/c++/4.8/bits/stl_vector.h **** _M_insert_aux(end(), __x); 914:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 915:/usr/include/c++/4.8/bits/stl_vector.h **** } 916:/usr/include/c++/4.8/bits/stl_vector.h **** 917:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 918:/usr/include/c++/4.8/bits/stl_vector.h **** void 919:/usr/include/c++/4.8/bits/stl_vector.h **** push_back(value_type&& __x) 920:/usr/include/c++/4.8/bits/stl_vector.h **** { emplace_back(std::move(__x)); } 921:/usr/include/c++/4.8/bits/stl_vector.h **** 922:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename... _Args> 923:/usr/include/c++/4.8/bits/stl_vector.h **** void 924:/usr/include/c++/4.8/bits/stl_vector.h **** emplace_back(_Args&&... __args); 925:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 926:/usr/include/c++/4.8/bits/stl_vector.h **** 927:/usr/include/c++/4.8/bits/stl_vector.h **** /** 928:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Removes last element. 929:/usr/include/c++/4.8/bits/stl_vector.h **** * 930:/usr/include/c++/4.8/bits/stl_vector.h **** * This is a typical stack operation. It shrinks the %vector by one. 931:/usr/include/c++/4.8/bits/stl_vector.h **** * 932:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that no data is returned, and if the last element's 933:/usr/include/c++/4.8/bits/stl_vector.h **** * data is needed, it should be retrieved before pop_back() is 934:/usr/include/c++/4.8/bits/stl_vector.h **** * called. 935:/usr/include/c++/4.8/bits/stl_vector.h **** */ 936:/usr/include/c++/4.8/bits/stl_vector.h **** void 937:/usr/include/c++/4.8/bits/stl_vector.h **** pop_back() 938:/usr/include/c++/4.8/bits/stl_vector.h **** { 939:/usr/include/c++/4.8/bits/stl_vector.h **** --this->_M_impl._M_finish; 940:/usr/include/c++/4.8/bits/stl_vector.h **** _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 941:/usr/include/c++/4.8/bits/stl_vector.h **** } 942:/usr/include/c++/4.8/bits/stl_vector.h **** 943:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 944:/usr/include/c++/4.8/bits/stl_vector.h **** /** 945:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Inserts an object in %vector before specified iterator. 946:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __position An iterator into the %vector. GAS LISTING /tmp/ccCle2Qt.s page 73 947:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __args Arguments. 948:/usr/include/c++/4.8/bits/stl_vector.h **** * @return An iterator that points to the inserted data. 949:/usr/include/c++/4.8/bits/stl_vector.h **** * 950:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will insert an object of type T constructed 951:/usr/include/c++/4.8/bits/stl_vector.h **** * with T(std::forward<Args>(args)...) before the specified location. 952:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that this kind of operation could be expensive for a %vector 953:/usr/include/c++/4.8/bits/stl_vector.h **** * and if it is frequently used the user should consider using 954:/usr/include/c++/4.8/bits/stl_vector.h **** * std::list. 955:/usr/include/c++/4.8/bits/stl_vector.h **** */ 956:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename... _Args> 957:/usr/include/c++/4.8/bits/stl_vector.h **** iterator 958:/usr/include/c++/4.8/bits/stl_vector.h **** emplace(iterator __position, _Args&&... __args); 959:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 960:/usr/include/c++/4.8/bits/stl_vector.h **** 961:/usr/include/c++/4.8/bits/stl_vector.h **** /** 962:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Inserts given value into %vector before specified iterator. 963:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __position An iterator into the %vector. 964:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x Data to be inserted. 965:/usr/include/c++/4.8/bits/stl_vector.h **** * @return An iterator that points to the inserted data. 966:/usr/include/c++/4.8/bits/stl_vector.h **** * 967:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will insert a copy of the given value before 968:/usr/include/c++/4.8/bits/stl_vector.h **** * the specified location. Note that this kind of operation 969:/usr/include/c++/4.8/bits/stl_vector.h **** * could be expensive for a %vector and if it is frequently 970:/usr/include/c++/4.8/bits/stl_vector.h **** * used the user should consider using std::list. 971:/usr/include/c++/4.8/bits/stl_vector.h **** */ 972:/usr/include/c++/4.8/bits/stl_vector.h **** iterator 973:/usr/include/c++/4.8/bits/stl_vector.h **** insert(iterator __position, const value_type& __x); 974:/usr/include/c++/4.8/bits/stl_vector.h **** 975:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 976:/usr/include/c++/4.8/bits/stl_vector.h **** /** 977:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Inserts given rvalue into %vector before specified iterator. 978:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __position An iterator into the %vector. 979:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x Data to be inserted. 980:/usr/include/c++/4.8/bits/stl_vector.h **** * @return An iterator that points to the inserted data. 981:/usr/include/c++/4.8/bits/stl_vector.h **** * 982:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will insert a copy of the given rvalue before 983:/usr/include/c++/4.8/bits/stl_vector.h **** * the specified location. Note that this kind of operation 984:/usr/include/c++/4.8/bits/stl_vector.h **** * could be expensive for a %vector and if it is frequently 985:/usr/include/c++/4.8/bits/stl_vector.h **** * used the user should consider using std::list. 986:/usr/include/c++/4.8/bits/stl_vector.h **** */ 987:/usr/include/c++/4.8/bits/stl_vector.h **** iterator 988:/usr/include/c++/4.8/bits/stl_vector.h **** insert(iterator __position, value_type&& __x) 989:/usr/include/c++/4.8/bits/stl_vector.h **** { return emplace(__position, std::move(__x)); } 990:/usr/include/c++/4.8/bits/stl_vector.h **** 991:/usr/include/c++/4.8/bits/stl_vector.h **** /** 992:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Inserts an initializer_list into the %vector. 993:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __position An iterator into the %vector. 994:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __l An initializer_list. 995:/usr/include/c++/4.8/bits/stl_vector.h **** * 996:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will insert copies of the data in the 997:/usr/include/c++/4.8/bits/stl_vector.h **** * initializer_list @a l into the %vector before the location 998:/usr/include/c++/4.8/bits/stl_vector.h **** * specified by @a position. 999:/usr/include/c++/4.8/bits/stl_vector.h **** * 1000:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that this kind of operation could be expensive for a 1001:/usr/include/c++/4.8/bits/stl_vector.h **** * %vector and if it is frequently used the user should 1002:/usr/include/c++/4.8/bits/stl_vector.h **** * consider using std::list. 1003:/usr/include/c++/4.8/bits/stl_vector.h **** */ GAS LISTING /tmp/ccCle2Qt.s page 74 1004:/usr/include/c++/4.8/bits/stl_vector.h **** void 1005:/usr/include/c++/4.8/bits/stl_vector.h **** insert(iterator __position, initializer_list<value_type> __l) 1006:/usr/include/c++/4.8/bits/stl_vector.h **** { this->insert(__position, __l.begin(), __l.end()); } 1007:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 1008:/usr/include/c++/4.8/bits/stl_vector.h **** 1009:/usr/include/c++/4.8/bits/stl_vector.h **** /** 1010:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Inserts a number of copies of given data into the %vector. 1011:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __position An iterator into the %vector. 1012:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __n Number of elements to be inserted. 1013:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x Data to be inserted. 1014:/usr/include/c++/4.8/bits/stl_vector.h **** * 1015:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will insert a specified number of copies of 1016:/usr/include/c++/4.8/bits/stl_vector.h **** * the given data before the location specified by @a position. 1017:/usr/include/c++/4.8/bits/stl_vector.h **** * 1018:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that this kind of operation could be expensive for a 1019:/usr/include/c++/4.8/bits/stl_vector.h **** * %vector and if it is frequently used the user should 1020:/usr/include/c++/4.8/bits/stl_vector.h **** * consider using std::list. 1021:/usr/include/c++/4.8/bits/stl_vector.h **** */ 1022:/usr/include/c++/4.8/bits/stl_vector.h **** void 1023:/usr/include/c++/4.8/bits/stl_vector.h **** insert(iterator __position, size_type __n, const value_type& __x) 1024:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_fill_insert(__position, __n, __x); } 1025:/usr/include/c++/4.8/bits/stl_vector.h **** 1026:/usr/include/c++/4.8/bits/stl_vector.h **** /** 1027:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Inserts a range into the %vector. 1028:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __position An iterator into the %vector. 1029:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __first An input iterator. 1030:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __last An input iterator. 1031:/usr/include/c++/4.8/bits/stl_vector.h **** * 1032:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will insert copies of the data in the range 1033:/usr/include/c++/4.8/bits/stl_vector.h **** * [__first,__last) into the %vector before the location specified 1034:/usr/include/c++/4.8/bits/stl_vector.h **** * by @a pos. 1035:/usr/include/c++/4.8/bits/stl_vector.h **** * 1036:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that this kind of operation could be expensive for a 1037:/usr/include/c++/4.8/bits/stl_vector.h **** * %vector and if it is frequently used the user should 1038:/usr/include/c++/4.8/bits/stl_vector.h **** * consider using std::list. 1039:/usr/include/c++/4.8/bits/stl_vector.h **** */ 1040:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 1041:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _InputIterator, 1042:/usr/include/c++/4.8/bits/stl_vector.h **** typename = std::_RequireInputIter<_InputIterator>> 1043:/usr/include/c++/4.8/bits/stl_vector.h **** void 1044:/usr/include/c++/4.8/bits/stl_vector.h **** insert(iterator __position, _InputIterator __first, 1045:/usr/include/c++/4.8/bits/stl_vector.h **** _InputIterator __last) 1046:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_insert_dispatch(__position, __first, __last, __false_type()); } 1047:/usr/include/c++/4.8/bits/stl_vector.h **** #else 1048:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _InputIterator> 1049:/usr/include/c++/4.8/bits/stl_vector.h **** void 1050:/usr/include/c++/4.8/bits/stl_vector.h **** insert(iterator __position, _InputIterator __first, 1051:/usr/include/c++/4.8/bits/stl_vector.h **** _InputIterator __last) 1052:/usr/include/c++/4.8/bits/stl_vector.h **** { 1053:/usr/include/c++/4.8/bits/stl_vector.h **** // Check whether it's an integral type. If so, it's not an iterator. 1054:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename std::__is_integer<_InputIterator>::__type _Integral; 1055:/usr/include/c++/4.8/bits/stl_vector.h **** _M_insert_dispatch(__position, __first, __last, _Integral()); 1056:/usr/include/c++/4.8/bits/stl_vector.h **** } 1057:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 1058:/usr/include/c++/4.8/bits/stl_vector.h **** 1059:/usr/include/c++/4.8/bits/stl_vector.h **** /** 1060:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Remove element at given position. GAS LISTING /tmp/ccCle2Qt.s page 75 1061:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __position Iterator pointing to element to be erased. 1062:/usr/include/c++/4.8/bits/stl_vector.h **** * @return An iterator pointing to the next element (or end()). 1063:/usr/include/c++/4.8/bits/stl_vector.h **** * 1064:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will erase the element at the given position and thus 1065:/usr/include/c++/4.8/bits/stl_vector.h **** * shorten the %vector by one. 1066:/usr/include/c++/4.8/bits/stl_vector.h **** * 1067:/usr/include/c++/4.8/bits/stl_vector.h **** * Note This operation could be expensive and if it is 1068:/usr/include/c++/4.8/bits/stl_vector.h **** * frequently used the user should consider using std::list. 1069:/usr/include/c++/4.8/bits/stl_vector.h **** * The user is also cautioned that this function only erases 1070:/usr/include/c++/4.8/bits/stl_vector.h **** * the element, and that if the element is itself a pointer, 1071:/usr/include/c++/4.8/bits/stl_vector.h **** * the pointed-to memory is not touched in any way. Managing 1072:/usr/include/c++/4.8/bits/stl_vector.h **** * the pointer is the user's responsibility. 1073:/usr/include/c++/4.8/bits/stl_vector.h **** */ 1074:/usr/include/c++/4.8/bits/stl_vector.h **** iterator 1075:/usr/include/c++/4.8/bits/stl_vector.h **** erase(iterator __position); 1076:/usr/include/c++/4.8/bits/stl_vector.h **** 1077:/usr/include/c++/4.8/bits/stl_vector.h **** /** 1078:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Remove a range of elements. 1079:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __first Iterator pointing to the first element to be erased. 1080:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __last Iterator pointing to one past the last element to be 1081:/usr/include/c++/4.8/bits/stl_vector.h **** * erased. 1082:/usr/include/c++/4.8/bits/stl_vector.h **** * @return An iterator pointing to the element pointed to by @a __last 1083:/usr/include/c++/4.8/bits/stl_vector.h **** * prior to erasing (or end()). 1084:/usr/include/c++/4.8/bits/stl_vector.h **** * 1085:/usr/include/c++/4.8/bits/stl_vector.h **** * This function will erase the elements in the range 1086:/usr/include/c++/4.8/bits/stl_vector.h **** * [__first,__last) and shorten the %vector accordingly. 1087:/usr/include/c++/4.8/bits/stl_vector.h **** * 1088:/usr/include/c++/4.8/bits/stl_vector.h **** * Note This operation could be expensive and if it is 1089:/usr/include/c++/4.8/bits/stl_vector.h **** * frequently used the user should consider using std::list. 1090:/usr/include/c++/4.8/bits/stl_vector.h **** * The user is also cautioned that this function only erases 1091:/usr/include/c++/4.8/bits/stl_vector.h **** * the elements, and that if the elements themselves are 1092:/usr/include/c++/4.8/bits/stl_vector.h **** * pointers, the pointed-to memory is not touched in any way. 1093:/usr/include/c++/4.8/bits/stl_vector.h **** * Managing the pointer is the user's responsibility. 1094:/usr/include/c++/4.8/bits/stl_vector.h **** */ 1095:/usr/include/c++/4.8/bits/stl_vector.h **** iterator 1096:/usr/include/c++/4.8/bits/stl_vector.h **** erase(iterator __first, iterator __last); 1097:/usr/include/c++/4.8/bits/stl_vector.h **** 1098:/usr/include/c++/4.8/bits/stl_vector.h **** /** 1099:/usr/include/c++/4.8/bits/stl_vector.h **** * @brief Swaps data with another %vector. 1100:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __x A %vector of the same element and allocator types. 1101:/usr/include/c++/4.8/bits/stl_vector.h **** * 1102:/usr/include/c++/4.8/bits/stl_vector.h **** * This exchanges the elements between two vectors in constant time. 1103:/usr/include/c++/4.8/bits/stl_vector.h **** * (Three pointers, so it should be quite fast.) 1104:/usr/include/c++/4.8/bits/stl_vector.h **** * Note that the global std::swap() function is specialized such that 1105:/usr/include/c++/4.8/bits/stl_vector.h **** * std::swap(v1,v2) will feed to this function. 1106:/usr/include/c++/4.8/bits/stl_vector.h **** */ 1107:/usr/include/c++/4.8/bits/stl_vector.h **** void 1108:/usr/include/c++/4.8/bits/stl_vector.h **** swap(vector& __x) 1109:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 1110:/usr/include/c++/4.8/bits/stl_vector.h **** noexcept(_Alloc_traits::_S_nothrow_swap()) 1111:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 1112:/usr/include/c++/4.8/bits/stl_vector.h **** { 1113:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_swap_data(__x._M_impl); 1114:/usr/include/c++/4.8/bits/stl_vector.h **** _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), 1115:/usr/include/c++/4.8/bits/stl_vector.h **** __x._M_get_Tp_allocator()); 1116:/usr/include/c++/4.8/bits/stl_vector.h **** } 1117:/usr/include/c++/4.8/bits/stl_vector.h **** GAS LISTING /tmp/ccCle2Qt.s page 76 1118:/usr/include/c++/4.8/bits/stl_vector.h **** /** 1119:/usr/include/c++/4.8/bits/stl_vector.h **** * Erases all the elements. Note that this function only erases the 1120:/usr/include/c++/4.8/bits/stl_vector.h **** * elements, and that if the elements themselves are pointers, the 1121:/usr/include/c++/4.8/bits/stl_vector.h **** * pointed-to memory is not touched in any way. Managing the pointer is 1122:/usr/include/c++/4.8/bits/stl_vector.h **** * the user's responsibility. 1123:/usr/include/c++/4.8/bits/stl_vector.h **** */ 1124:/usr/include/c++/4.8/bits/stl_vector.h **** void 1125:/usr/include/c++/4.8/bits/stl_vector.h **** clear() _GLIBCXX_NOEXCEPT 1126:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_erase_at_end(this->_M_impl._M_start); } 1127:/usr/include/c++/4.8/bits/stl_vector.h **** 1128:/usr/include/c++/4.8/bits/stl_vector.h **** protected: 1129:/usr/include/c++/4.8/bits/stl_vector.h **** /** 1130:/usr/include/c++/4.8/bits/stl_vector.h **** * Memory expansion handler. Uses the member allocation function to 1131:/usr/include/c++/4.8/bits/stl_vector.h **** * obtain @a n bytes of memory, and then copies [first,last) into it. 1132:/usr/include/c++/4.8/bits/stl_vector.h **** */ 1133:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _ForwardIterator> 1134:/usr/include/c++/4.8/bits/stl_vector.h **** pointer 1135:/usr/include/c++/4.8/bits/stl_vector.h **** _M_allocate_and_copy(size_type __n, 1136:/usr/include/c++/4.8/bits/stl_vector.h **** _ForwardIterator __first, _ForwardIterator __last) 1137:/usr/include/c++/4.8/bits/stl_vector.h **** { 1138:/usr/include/c++/4.8/bits/stl_vector.h **** pointer __result = this->_M_allocate(__n); 1139:/usr/include/c++/4.8/bits/stl_vector.h **** __try 1140:/usr/include/c++/4.8/bits/stl_vector.h **** { 1141:/usr/include/c++/4.8/bits/stl_vector.h **** std::__uninitialized_copy_a(__first, __last, __result, 1142:/usr/include/c++/4.8/bits/stl_vector.h **** _M_get_Tp_allocator()); 1143:/usr/include/c++/4.8/bits/stl_vector.h **** return __result; 1144:/usr/include/c++/4.8/bits/stl_vector.h **** } 1145:/usr/include/c++/4.8/bits/stl_vector.h **** __catch(...) 1146:/usr/include/c++/4.8/bits/stl_vector.h **** { 1147:/usr/include/c++/4.8/bits/stl_vector.h **** _M_deallocate(__result, __n); 1148:/usr/include/c++/4.8/bits/stl_vector.h **** __throw_exception_again; 1149:/usr/include/c++/4.8/bits/stl_vector.h **** } 1150:/usr/include/c++/4.8/bits/stl_vector.h **** } 1151:/usr/include/c++/4.8/bits/stl_vector.h **** 1152:/usr/include/c++/4.8/bits/stl_vector.h **** 1153:/usr/include/c++/4.8/bits/stl_vector.h **** // Internal constructor functions follow. 1154:/usr/include/c++/4.8/bits/stl_vector.h **** 1155:/usr/include/c++/4.8/bits/stl_vector.h **** // Called by the range constructor to implement [23.1.1]/9 1156:/usr/include/c++/4.8/bits/stl_vector.h **** 1157:/usr/include/c++/4.8/bits/stl_vector.h **** // _GLIBCXX_RESOLVE_LIB_DEFECTS 1158:/usr/include/c++/4.8/bits/stl_vector.h **** // 438. Ambiguity in the "do the right thing" clause 1159:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _Integer> 1160:/usr/include/c++/4.8/bits/stl_vector.h **** void 1161:/usr/include/c++/4.8/bits/stl_vector.h **** _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) 1162:/usr/include/c++/4.8/bits/stl_vector.h **** { 1163:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start = _M_allocate(static_cast<size_type>(__n)); 1164:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_end_of_storage = 1165:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start + static_cast<size_type>(__n); 1166:/usr/include/c++/4.8/bits/stl_vector.h **** _M_fill_initialize(static_cast<size_type>(__n), __value); 1167:/usr/include/c++/4.8/bits/stl_vector.h **** } 1168:/usr/include/c++/4.8/bits/stl_vector.h **** 1169:/usr/include/c++/4.8/bits/stl_vector.h **** // Called by the range constructor to implement [23.1.1]/9 1170:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _InputIterator> 1171:/usr/include/c++/4.8/bits/stl_vector.h **** void 1172:/usr/include/c++/4.8/bits/stl_vector.h **** _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, 1173:/usr/include/c++/4.8/bits/stl_vector.h **** __false_type) 1174:/usr/include/c++/4.8/bits/stl_vector.h **** { GAS LISTING /tmp/ccCle2Qt.s page 77 1175:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename std::iterator_traits<_InputIterator>:: 1176:/usr/include/c++/4.8/bits/stl_vector.h **** iterator_category _IterCategory; 1177:/usr/include/c++/4.8/bits/stl_vector.h **** _M_range_initialize(__first, __last, _IterCategory()); 1178:/usr/include/c++/4.8/bits/stl_vector.h **** } 1179:/usr/include/c++/4.8/bits/stl_vector.h **** 1180:/usr/include/c++/4.8/bits/stl_vector.h **** // Called by the second initialize_dispatch above 1181:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _InputIterator> 1182:/usr/include/c++/4.8/bits/stl_vector.h **** void 1183:/usr/include/c++/4.8/bits/stl_vector.h **** _M_range_initialize(_InputIterator __first, 1184:/usr/include/c++/4.8/bits/stl_vector.h **** _InputIterator __last, std::input_iterator_tag) 1185:/usr/include/c++/4.8/bits/stl_vector.h **** { 1186:/usr/include/c++/4.8/bits/stl_vector.h **** for (; __first != __last; ++__first) 1187:/usr/include/c++/4.8/bits/stl_vector.h **** #if __cplusplus >= 201103L 1188:/usr/include/c++/4.8/bits/stl_vector.h **** emplace_back(*__first); 1189:/usr/include/c++/4.8/bits/stl_vector.h **** #else 1190:/usr/include/c++/4.8/bits/stl_vector.h **** push_back(*__first); 1191:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 1192:/usr/include/c++/4.8/bits/stl_vector.h **** } 1193:/usr/include/c++/4.8/bits/stl_vector.h **** 1194:/usr/include/c++/4.8/bits/stl_vector.h **** // Called by the second initialize_dispatch above 1195:/usr/include/c++/4.8/bits/stl_vector.h **** template<typename _ForwardIterator> 1196:/usr/include/c++/4.8/bits/stl_vector.h **** void 1197:/usr/include/c++/4.8/bits/stl_vector.h **** _M_range_initialize(_ForwardIterator __first, 966 .loc 5 1197 0 967 .cfi_startproc 968 .LVL98: 969 0000 4156 pushq %r14 970 .cfi_def_cfa_offset 16 971 .cfi_offset 14, -16 972 0002 4155 pushq %r13 973 .cfi_def_cfa_offset 24 974 .cfi_offset 13, -24 975 0004 4154 pushq %r12 976 .cfi_def_cfa_offset 32 977 .cfi_offset 12, -32 978 0006 55 pushq %rbp 979 .cfi_def_cfa_offset 40 980 .cfi_offset 6, -40 981 0007 53 pushq %rbx 982 .cfi_def_cfa_offset 48 983 .cfi_offset 3, -48 984 0008 4889FB movq %rdi, %rbx 985 000b 4989F4 movq %rsi, %r12 986 000e 4989D5 movq %rdx, %r13 987 .LBB11: 1198:/usr/include/c++/4.8/bits/stl_vector.h **** _ForwardIterator __last, std::forward_iterator_tag) 1199:/usr/include/c++/4.8/bits/stl_vector.h **** { 1200:/usr/include/c++/4.8/bits/stl_vector.h **** const size_type __n = std::distance(__first, __last); 988 .loc 5 1200 0 989 0011 4889D6 movq %rdx, %rsi 990 .LVL99: 991 0014 4C89E7 movq %r12, %rdi 992 .LVL100: 993 0017 E8000000 call _ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_ 993 00 994 .LVL101: 995 001c 4989C6 movq %rax, %r14 GAS LISTING /tmp/ccCle2Qt.s page 78 996 .LVL102: 1201:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start = this->_M_allocate(__n); 997 .loc 5 1201 0 998 001f 4889C6 movq %rax, %rsi 999 0022 4889DF movq %rbx, %rdi 1000 0025 E8000000 call _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm 1000 00 1001 .LVL103: 1002 002a 4889C5 movq %rax, %rbp 1003 002d 488903 movq %rax, (%rbx) 1202:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 1004 .loc 5 1202 0 1005 0030 4A8D04B0 leaq (%rax,%r14,4), %rax 1006 0034 48894310 movq %rax, 16(%rbx) 1203:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_finish = 1204:/usr/include/c++/4.8/bits/stl_vector.h **** std::__uninitialized_copy_a(__first, __last, 1205:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start, 1206:/usr/include/c++/4.8/bits/stl_vector.h **** _M_get_Tp_allocator()); 1007 .loc 5 1206 0 1008 0038 4889DF movq %rbx, %rdi 1009 003b E8000000 call _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv 1009 00 1010 .LVL104: 1011 0040 4889C1 movq %rax, %rcx 1012 0043 4889EA movq %rbp, %rdx 1013 0046 4C89EE movq %r13, %rsi 1014 0049 4C89E7 movq %r12, %rdi 1015 004c E8000000 call _ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E 1015 00 1016 .LVL105: 1203:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_finish = 1017 .loc 5 1203 0 1018 0051 48894308 movq %rax, 8(%rbx) 1019 .LBE11: 1207:/usr/include/c++/4.8/bits/stl_vector.h **** } 1020 .loc 5 1207 0 1021 0055 5B popq %rbx 1022 .cfi_def_cfa_offset 40 1023 .LVL106: 1024 0056 5D popq %rbp 1025 .cfi_def_cfa_offset 32 1026 0057 415C popq %r12 1027 .cfi_def_cfa_offset 24 1028 .LVL107: 1029 0059 415D popq %r13 1030 .cfi_def_cfa_offset 16 1031 .LVL108: 1032 005b 415E popq %r14 1033 .cfi_def_cfa_offset 8 1034 .LVL109: 1035 005d C3 ret 1036 .cfi_endproc 1037 .LFE1746: 1039 .section .text._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_,"axG",@progbits,_ZNSt6vectorIiS 1040 .align 2 1041 .weak _ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_ 1043 _ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_: GAS LISTING /tmp/ccCle2Qt.s page 79 1044 .LFB1668: 364:/usr/include/c++/4.8/bits/stl_vector.h **** const allocator_type& __a = allocator_type()) 1045 .loc 5 364 0 1046 .cfi_startproc 1047 .cfi_personality 0x3,__gxx_personality_v0 1048 .cfi_lsda 0x3,.LLSDA1668 1049 .LVL110: 1050 0000 55 pushq %rbp 1051 .cfi_def_cfa_offset 16 1052 .cfi_offset 6, -16 1053 0001 53 pushq %rbx 1054 .cfi_def_cfa_offset 24 1055 .cfi_offset 3, -24 1056 0002 4883EC28 subq $40, %rsp 1057 .cfi_def_cfa_offset 64 1058 0006 4889FB movq %rdi, %rbx 1059 0009 48897424 movq %rsi, 16(%rsp) 1059 10 1060 000e 48895424 movq %rdx, 24(%rsp) 1060 18 1061 .LBB12: 366:/usr/include/c++/4.8/bits/stl_vector.h **** { 1062 .loc 5 366 0 1063 0013 4889CE movq %rcx, %rsi 1064 0016 E8000000 call _ZNSt12_Vector_baseIiSaIiEEC2ERKS0_ 1064 00 1065 .LVL111: 369:/usr/include/c++/4.8/bits/stl_vector.h **** } 1066 .loc 5 369 0 1067 001b 488D7C24 leaq 16(%rsp), %rdi 1067 10 1068 0020 E8000000 call _ZNKSt16initializer_listIiE3endEv 1068 00 1069 .LVL112: 1070 0025 4889C5 movq %rax, %rbp 1071 0028 488D7C24 leaq 16(%rsp), %rdi 1071 10 1072 002d E8000000 call _ZNKSt16initializer_listIiE5beginEv 1072 00 1073 .LVL113: 368:/usr/include/c++/4.8/bits/stl_vector.h **** random_access_iterator_tag()); 1074 .loc 5 368 0 1075 0032 C6042400 movb $0, (%rsp) 1076 0036 4889EA movq %rbp, %rdx 1077 0039 4889C6 movq %rax, %rsi 1078 003c 4889DF movq %rbx, %rdi 1079 .LEHB0: 1080 003f E8000000 call _ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag 1080 00 1081 .LEHE0: 1082 .LVL114: 1083 0044 EB13 jmp .L82 1084 .L81: 1085 0046 4889C5 movq %rax, %rbp 366:/usr/include/c++/4.8/bits/stl_vector.h **** { 1086 .loc 5 366 0 1087 0049 4889DF movq %rbx, %rdi GAS LISTING /tmp/ccCle2Qt.s page 80 1088 004c E8000000 call _ZNSt12_Vector_baseIiSaIiEED2Ev 1088 00 1089 .LVL115: 1090 0051 4889EF movq %rbp, %rdi 1091 .LEHB1: 1092 0054 E8000000 call _Unwind_Resume 1092 00 1093 .LEHE1: 1094 .LVL116: 1095 .L82: 1096 .LBE12: 370:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 1097 .loc 5 370 0 1098 0059 4883C428 addq $40, %rsp 1099 .cfi_def_cfa_offset 24 1100 005d 5B popq %rbx 1101 .cfi_def_cfa_offset 16 1102 .LVL117: 1103 005e 5D popq %rbp 1104 .cfi_def_cfa_offset 8 1105 005f C3 ret 1106 .cfi_endproc 1107 .LFE1668: 1108 .globl __gxx_personality_v0 1109 .section .gcc_except_table._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_,"aG",@progbits,_ZNS 1110 .LLSDA1668: 1111 0000 FF .byte 0xff 1112 0001 FF .byte 0xff 1113 0002 01 .byte 0x1 1114 0003 08 .uleb128 .LLSDACSE1668-.LLSDACSB1668 1115 .LLSDACSB1668: 1116 0004 3F .uleb128 .LEHB0-.LFB1668 1117 0005 05 .uleb128 .LEHE0-.LEHB0 1118 0006 46 .uleb128 .L81-.LFB1668 1119 0007 00 .uleb128 0 1120 0008 54 .uleb128 .LEHB1-.LFB1668 1121 0009 05 .uleb128 .LEHE1-.LEHB1 1122 000a 00 .uleb128 0 1123 000b 00 .uleb128 0 1124 .LLSDACSE1668: 1125 .section .text._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_,"axG",@progbits,_ZNSt6vectorIiS 1127 .weak _ZNSt6vectorIiSaIiEEC1ESt16initializer_listIiERKS0_ 1128 .set _ZNSt6vectorIiSaIiEEC1ESt16initializer_listIiERKS0_,_ZNSt6vectorIiSaIiEEC2ESt16initializer_li 1129 .section .rodata.str1.1,"aMS",@progbits,1 1130 .LC0: 1131 0000 72616E67 .string "rangeLoop " 1131 654C6F6F 1131 702000 1132 .text 1133 .globl _Z9rangeLoopv 1135 _Z9rangeLoopv: 1136 .LFB1601: 5:range-loop.cpp **** 1137 .loc 1 5 0 1138 .cfi_startproc 1139 .cfi_personality 0x3,__gxx_personality_v0 1140 .cfi_lsda 0x3,.LLSDA1601 GAS LISTING /tmp/ccCle2Qt.s page 81 1141 0034 55 pushq %rbp 1142 .cfi_def_cfa_offset 16 1143 .cfi_offset 6, -16 1144 0035 53 pushq %rbx 1145 .cfi_def_cfa_offset 24 1146 .cfi_offset 3, -24 1147 0036 4883EC58 subq $88, %rsp 1148 .cfi_def_cfa_offset 112 1149 .LBB13: 7:range-loop.cpp **** int a[4] = {5,6,7,8}; 1150 .loc 1 7 0 1151 003a 488D4C24 leaq 32(%rsp), %rcx 1151 20 1152 003f BE000000 movl $._85, %esi 1152 00 1153 0044 BA040000 movl $4, %edx 1153 00 1154 0049 488D7C24 leaq 48(%rsp), %rdi 1154 30 1155 .LEHB2: 1156 004e E8000000 call _ZNSt6vectorIiSaIiEEC1ESt16initializer_listIiERKS0_ 1156 00 1157 .LEHE2: 1158 .LVL118: 8:range-loop.cpp **** 1159 .loc 1 8 0 1160 0053 C7442420 movl $5, 32(%rsp) 1160 05000000 1161 005b C7442424 movl $6, 36(%rsp) 1161 06000000 1162 0063 C7442428 movl $7, 40(%rsp) 1162 07000000 1163 006b C744242C movl $8, 44(%rsp) 1163 08000000 10:range-loop.cpp **** for (auto i : v ) { 1164 .loc 1 10 0 1165 0073 BE000000 movl $.LC0, %esi 1165 00 1166 0078 BF000000 movl $_ZSt4cout, %edi 1166 00 1167 .LEHB3: 1168 007d E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 1168 00 1169 .LVL119: 1170 .LBB14: 11:range-loop.cpp **** std::cout << i; 1171 .loc 1 11 0 1172 0082 488D7C24 leaq 48(%rsp), %rdi 1172 30 1173 .LVL120: 1174 0087 E8000000 call _ZNSt6vectorIiSaIiEE5beginEv 1174 00 1175 .LVL121: 1176 008c 48890424 movq %rax, (%rsp) 1177 0090 488D7C24 leaq 48(%rsp), %rdi 1177 30 1178 .LVL122: GAS LISTING /tmp/ccCle2Qt.s page 82 1179 0095 E8000000 call _ZNSt6vectorIiSaIiEE3endEv 1179 00 1180 .LVL123: 1181 009a 48894424 movq %rax, 16(%rsp) 1181 10 1182 009f EB1C jmp .L85 1183 .L86: 11:range-loop.cpp **** std::cout << i; 1184 .loc 1 11 0 is_stmt 0 discriminator 3 1185 00a1 4889E7 movq %rsp, %rdi 1186 00a4 E8000000 call _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv 1186 00 1187 .LVL124: 12:range-loop.cpp **** } 1188 .loc 1 12 0 is_stmt 1 discriminator 3 1189 00a9 8B30 movl (%rax), %esi 1190 00ab BF000000 movl $_ZSt4cout, %edi 1190 00 1191 00b0 E8000000 call _ZNSolsEi 1191 00 1192 .LVL125: 11:range-loop.cpp **** std::cout << i; 1193 .loc 1 11 0 1194 00b5 4889E7 movq %rsp, %rdi 1195 00b8 E8000000 call _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv 1195 00 1196 .LVL126: 1197 .L85: 11:range-loop.cpp **** std::cout << i; 1198 .loc 1 11 0 is_stmt 0 discriminator 1 1199 00bd 488D7424 leaq 16(%rsp), %rsi 1199 10 1200 00c2 4889E7 movq %rsp, %rdi 1201 00c5 E8000000 call _ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ 1201 00 1202 .LVL127: 1203 00ca 84C0 testb %al, %al 1204 00cc 75D3 jne .L86 1205 .LBE14: 1206 .LBB15: 14:range-loop.cpp **** std::cout << &j; 1207 .loc 1 14 0 is_stmt 1 1208 00ce 488D7C24 leaq 48(%rsp), %rdi 1208 30 1209 .LVL128: 1210 00d3 E8000000 call _ZNSt6vectorIiSaIiEE5beginEv 1210 00 1211 .LVL129: 1212 00d8 48894424 movq %rax, 16(%rsp) 1212 10 1213 00dd 488D7424 leaq 16(%rsp), %rsi 1213 10 1214 00e2 4889E7 movq %rsp, %rdi 1215 00e5 E8000000 call _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC1IPiEERKNS0_IT_NS_11__enable_ifIXsrSt1 1215 00 1216 .LVL130: 1217 00ea EB15 jmp .L87 GAS LISTING /tmp/ccCle2Qt.s page 83 1218 .L88: 15:range-loop.cpp **** } 1219 .loc 1 15 0 1220 00ec 4889E6 movq %rsp, %rsi 1221 00ef BF000000 movl $_ZSt4cout, %edi 1221 00 1222 00f4 E8000000 call _ZNSolsEPKv 1222 00 1223 .LVL131: 14:range-loop.cpp **** std::cout << &j; 1224 .loc 1 14 0 1225 00f9 4889E7 movq %rsp, %rdi 1226 00fc E8000000 call _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv 1226 00 1227 .LVL132: 1228 .L87: 14:range-loop.cpp **** std::cout << &j; 1229 .loc 1 14 0 is_stmt 0 discriminator 1 1230 0101 488D7C24 leaq 48(%rsp), %rdi 1230 30 1231 .LVL133: 1232 0106 E8000000 call _ZNSt6vectorIiSaIiEE3endEv 1232 00 1233 .LVL134: 1234 010b 48894424 movq %rax, 16(%rsp) 1234 10 1235 0110 488D7424 leaq 16(%rsp), %rsi 1235 10 1236 0115 4889E7 movq %rsp, %rdi 1237 0118 E8000000 call _ZN9__gnu_cxxltIPKiPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T1_EERKNS7_IT0_S9_EE 1237 00 1238 .LVL135: 1239 011d 84C0 testb %al, %al 1240 011f 75CB jne .L88 1241 .LVL136: 1242 0121 488D5C24 leaq 32(%rsp), %rbx 1242 20 1243 .LVL137: 1244 .LBE15: 1245 .LBB16: 18:range-loop.cpp **** std::cout << i; 1246 .loc 1 18 0 is_stmt 1 1247 0126 488D6C24 leaq 48(%rsp), %rbp 1247 30 1248 .LVL138: 1249 .L90: 19:range-loop.cpp **** } 1250 .loc 1 19 0 discriminator 2 1251 012b 8B33 movl (%rbx), %esi 1252 012d BF000000 movl $_ZSt4cout, %edi 1252 00 1253 0132 E8000000 call _ZNSolsEi 1253 00 1254 .LVL139: 1255 0137 4883C304 addq $4, %rbx 1256 .LVL140: 18:range-loop.cpp **** std::cout << i; GAS LISTING /tmp/ccCle2Qt.s page 84 1257 .loc 1 18 0 1258 013b 4839DD cmpq %rbx, %rbp 1259 013e 75EB jne .L90 1260 0140 488D5C24 leaq 32(%rsp), %rbx 1260 20 1261 .LVL141: 1262 .LBE16: 1263 .LBB17: 22:range-loop.cpp **** ++r; 1264 .loc 1 22 0 1265 0145 488D6C24 leaq 48(%rsp), %rbp 1265 30 1266 .LVL142: 1267 .L92: 23:range-loop.cpp **** std::cout << r; 1268 .loc 1 23 0 discriminator 2 1269 014a 8B03 movl (%rbx), %eax 1270 014c 8D7001 leal 1(%rax), %esi 1271 014f 8933 movl %esi, (%rbx) 24:range-loop.cpp **** } 1272 .loc 1 24 0 discriminator 2 1273 0151 BF000000 movl $_ZSt4cout, %edi 1273 00 1274 0156 E8000000 call _ZNSolsEi 1274 00 1275 .LVL143: 1276 015b 4883C304 addq $4, %rbx 1277 .LVL144: 22:range-loop.cpp **** ++r; 1278 .loc 1 22 0 1279 015f 4839DD cmpq %rbx, %rbp 1280 0162 75E6 jne .L92 1281 .LBE17: 27:range-loop.cpp **** } 1282 .loc 1 27 0 1283 0164 BE000000 movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi 1283 00 1284 0169 BF000000 movl $_ZSt4cout, %edi 1284 00 1285 016e E8000000 call _ZNSolsEPFRSoS_E 1285 00 1286 .LEHE3: 1287 .LVL145: 27:range-loop.cpp **** } 1288 .loc 1 27 0 is_stmt 0 discriminator 1 1289 0173 488D7C24 leaq 48(%rsp), %rdi 1289 30 1290 0178 E8000000 call _ZNSt6vectorIiSaIiEED1Ev 1290 00 1291 .LVL146: 1292 017d EB15 jmp .L95 1293 .LVL147: 1294 .L94: 1295 017f 4889C3 movq %rax, %rbx 27:range-loop.cpp **** } 1296 .loc 1 27 0 1297 0182 488D7C24 leaq 48(%rsp), %rdi GAS LISTING /tmp/ccCle2Qt.s page 85 1297 30 1298 0187 E8000000 call _ZNSt6vectorIiSaIiEED1Ev 1298 00 1299 .LVL148: 1300 018c 4889DF movq %rbx, %rdi 1301 .LEHB4: 1302 018f E8000000 call _Unwind_Resume 1302 00 1303 .LEHE4: 1304 .LVL149: 1305 .L95: 1306 .LBE13: 1307 .loc 1 28 0 is_stmt 1 1308 0194 4883C458 addq $88, %rsp 1309 .cfi_def_cfa_offset 24 1310 0198 5B popq %rbx 1311 .cfi_def_cfa_offset 16 1312 .LVL150: 1313 0199 5D popq %rbp 1314 .cfi_def_cfa_offset 8 1315 .LVL151: 1316 019a C3 ret 1317 .cfi_endproc 1318 .LFE1601: 1319 .section .gcc_except_table,"a",@progbits 1320 .LLSDA1601: 1321 0000 FF .byte 0xff 1322 0001 FF .byte 0xff 1323 0002 01 .byte 0x1 1324 0003 0F .uleb128 .LLSDACSE1601-.LLSDACSB1601 1325 .LLSDACSB1601: 1326 0004 1A .uleb128 .LEHB2-.LFB1601 1327 0005 05 .uleb128 .LEHE2-.LEHB2 1328 0006 00 .uleb128 0 1329 0007 00 .uleb128 0 1330 0008 49 .uleb128 .LEHB3-.LFB1601 1331 0009 F601 .uleb128 .LEHE3-.LEHB3 1332 000b CB02 .uleb128 .L94-.LFB1601 1333 000d 00 .uleb128 0 1334 000e DB02 .uleb128 .LEHB4-.LFB1601 1335 0010 05 .uleb128 .LEHE4-.LEHB4 1336 0011 00 .uleb128 0 1337 0012 00 .uleb128 0 1338 .LLSDACSE1601: 1339 .text 1342 _GLOBAL__sub_I__Z9rangeLoopv: 1343 .LFB1842: 1344 .loc 1 28 0 1345 .cfi_startproc 1346 019b 4883EC08 subq $8, %rsp 1347 .cfi_def_cfa_offset 16 1348 .loc 1 28 0 1349 019f BEFFFF00 movl $65535, %esi 1349 00 1350 01a4 BF010000 movl $1, %edi 1350 00 1351 01a9 E852FEFF call _Z41__static_initialization_and_destruction_0ii GAS LISTING /tmp/ccCle2Qt.s page 86 1351 FF 1352 .LVL152: 1353 01ae 4883C408 addq $8, %rsp 1354 .cfi_def_cfa_offset 8 1355 01b2 C3 ret 1356 .cfi_endproc 1357 .LFE1842: 1359 .section .init_array,"aw" 1360 .align 8 1361 0000 00000000 .quad _GLOBAL__sub_I__Z9rangeLoopv 1361 00000000 1362 .section .rodata 1363 .align 16 1366 ._85: 1367 0000 01000000 .long 1 1368 0004 02000000 .long 2 1369 0008 03000000 .long 3 1370 000c 04000000 .long 4 1371 .local _ZStL8__ioinit 1372 .comm _ZStL8__ioinit,1,1 1373 .text 1374 .Letext0: 1375 .file 11 "/usr/include/libio.h" 1376 .file 12 "/usr/include/stdio.h" 1377 .file 13 "<built-in>" 1378 .file 14 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h" 1379 .file 15 "/usr/include/wchar.h" 1380 .file 16 "/usr/include/c++/4.8/cwchar" 1381 .file 17 "/usr/include/c++/4.8/bits/exception_ptr.h" 1382 .file 18 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h" 1383 .file 19 "/usr/include/c++/4.8/type_traits" 1384 .file 20 "/usr/include/c++/4.8/bits/stl_pair.h" 1385 .file 21 "/usr/include/c++/4.8/bits/char_traits.h" 1386 .file 22 "/usr/include/c++/4.8/cstdint" 1387 .file 23 "/usr/include/c++/4.8/clocale" 1388 .file 24 "/usr/include/c++/4.8/cstdlib" 1389 .file 25 "/usr/include/c++/4.8/cstdio" 1390 .file 26 "/usr/include/c++/4.8/bits/ios_base.h" 1391 .file 27 "/usr/include/c++/4.8/cwctype" 1392 .file 28 "/usr/include/c++/4.8/bits/ostream.tcc" 1393 .file 29 "/usr/include/c++/4.8/ostream" 1394 .file 30 "/usr/include/c++/4.8/bits/allocator.h" 1395 .file 31 "/usr/include/c++/4.8/bits/ptr_traits.h" 1396 .file 32 "/usr/include/c++/4.8/bits/alloc_traits.h" 1397 .file 33 "/usr/include/c++/4.8/ext/alloc_traits.h" 1398 .file 34 "/usr/include/c++/4.8/bits/vector.tcc" 1399 .file 35 "/usr/include/c++/4.8/iosfwd" 1400 .file 36 "/usr/include/x86_64-linux-gnu/bits/wchar2.h" 1401 .file 37 "/usr/include/c++/4.8/bits/functexcept.h" 1402 .file 38 "/usr/include/time.h" 1403 .file 39 "/usr/include/c++/4.8/ext/numeric_traits.h" 1404 .file 40 "/usr/include/c++/4.8/debug/debug.h" 1405 .file 41 "/usr/include/stdint.h" 1406 .file 42 "/usr/include/locale.h" 1407 .file 43 "/usr/include/x86_64-linux-gnu/bits/types.h" 1408 .file 44 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/atomic_word.h" 1409 .file 45 "/usr/include/stdlib.h" GAS LISTING /tmp/ccCle2Qt.s page 87 1410 .file 46 "/usr/include/x86_64-linux-gnu/bits/stdlib.h" 1411 .file 47 "/usr/include/_G_config.h" 1412 .file 48 "/usr/include/x86_64-linux-gnu/bits/stdio2.h" 1413 .file 49 "/usr/include/wctype.h" 1414 .file 50 "/usr/include/c++/4.8/new" GAS LISTING /tmp/ccCle2Qt.s page 88 DEFINED SYMBOLS *ABS*:0000000000000000 range-loop.cpp /tmp/ccCle2Qt.s:5 .text:0000000000000000 _Z41__static_initialization_and_destruction_0ii .bss:0000000000000000 _ZStL8__ioinit /tmp/ccCle2Qt.s:42 .text._ZNKSt16initializer_listIiE5beginEv:0000000000000000 _ZNKSt16initializer_listIiE5beginEv /tmp/ccCle2Qt.s:58 .text._ZNKSt16initializer_listIiE4sizeEv:0000000000000000 _ZNKSt16initializer_listIiE4sizeEv /tmp/ccCle2Qt.s:73 .text._ZNKSt16initializer_listIiE3endEv:0000000000000000 _ZNKSt16initializer_listIiE3endEv /tmp/ccCle2Qt.s:110 .text._ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv:0000000000000000 _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv /tmp/ccCle2Qt.s:128 .text._ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv:0000000000000000 _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv /tmp/ccCle2Qt.s:143 .text._ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv:0000000000000000 _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv /tmp/ccCle2Qt.s:160 .text._ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv /tmp/ccCle2Qt.s:176 .text._ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC2ERKS1_:0000000000000000 _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC2ERKS1_ /tmp/ccCle2Qt.s:176 .text._ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC2ERKS1_:0000000000000000 _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC1ERKS1_ /tmp/ccCle2Qt.s:196 .text._ZNSt6vectorIiSaIiEE5beginEv:0000000000000000 _ZNSt6vectorIiSaIiEE5beginEv /tmp/ccCle2Qt.s:220 .text._ZNSt6vectorIiSaIiEE3endEv:0000000000000000 _ZNSt6vectorIiSaIiEE3endEv /tmp/ccCle2Qt.s:244 .text._ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv:0000000000000000 _ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEE4baseEv /tmp/ccCle2Qt.s:258 .text._ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_:0000000000000000 _ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ /tmp/ccCle2Qt.s:297 .text._ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPiEERKNS0_IT_NS_11__enable_ifIXsrSt10__are_sameIS9_S8_E7__valueES5_E6__typeEEE:0000000000000000 _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPiEERKNS0_IT_NS_11__enable_ifIXsrSt10__are_sameIS9_S8_E7__valueES5_E6__typeEEE /tmp/ccCle2Qt.s:297 .text._ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPiEERKNS0_IT_NS_11__enable_ifIXsrSt10__are_sameIS9_S8_E7__valueES5_E6__typeEEE:0000000000000000 _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC1IPiEERKNS0_IT_NS_11__enable_ifIXsrSt10__are_sameIS9_S8_E7__valueES5_E6__typeEEE /tmp/ccCle2Qt.s:328 .text._ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv:0000000000000000 _ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv /tmp/ccCle2Qt.s:342 .text._ZN9__gnu_cxxltIPKiPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T1_EERKNS7_IT0_S9_EE:0000000000000000 _ZN9__gnu_cxxltIPKiPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T1_EERKNS7_IT0_S9_EE /tmp/ccCle2Qt.s:381 .text._ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_ /tmp/ccCle2Qt.s:381 .text._ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC1ERKS0_ /tmp/ccCle2Qt.s:402 .text._ZNSt12_Vector_baseIiSaIiEEC2ERKS0_:0000000000000000 _ZNSt12_Vector_baseIiSaIiEEC2ERKS0_ /tmp/ccCle2Qt.s:402 .text._ZNSt12_Vector_baseIiSaIiEEC2ERKS0_:0000000000000000 _ZNSt12_Vector_baseIiSaIiEEC1ERKS0_ /tmp/ccCle2Qt.s:426 .text._ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim:0000000000000000 _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim /tmp/ccCle2Qt.s:449 .text._ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim /tmp/ccCle2Qt.s:475 .text._ZNSt12_Vector_baseIiSaIiEED2Ev:0000000000000000 _ZNSt12_Vector_baseIiSaIiEED2Ev /tmp/ccCle2Qt.s:475 .text._ZNSt12_Vector_baseIiSaIiEED2Ev:0000000000000000 _ZNSt12_Vector_baseIiSaIiEED1Ev /tmp/ccCle2Qt.s:505 .text._ZNSt6vectorIiSaIiEED2Ev:0000000000000000 _ZNSt6vectorIiSaIiEED2Ev /tmp/ccCle2Qt.s:505 .text._ZNSt6vectorIiSaIiEED2Ev:0000000000000000 _ZNSt6vectorIiSaIiEED1Ev /tmp/ccCle2Qt.s:528 .text._ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag:0000000000000000 _ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag /tmp/ccCle2Qt.s:546 .text._ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_:0000000000000000 _ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_ /tmp/ccCle2Qt.s:568 .text._ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv:0000000000000000 _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv /tmp/ccCle2Qt.s:583 .text._ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv:0000000000000000 _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv /tmp/ccCle2Qt.s:617 .text._ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm /tmp/ccCle2Qt.s:644 .text._ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_:0000000000000000 _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_ /tmp/ccCle2Qt.s:659 .text._ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_:0000000000000000 _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_ /tmp/ccCle2Qt.s:679 .text._ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_:0000000000000000 _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_ /tmp/ccCle2Qt.s:698 .text._ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_:0000000000000000 _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ /tmp/ccCle2Qt.s:712 .text._ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_:0000000000000000 _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ /tmp/ccCle2Qt.s:731 .text._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_:0000000000000000 _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ /tmp/ccCle2Qt.s:783 .text._ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_:0000000000000000 _ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_ /tmp/ccCle2Qt.s:806 .text._ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_:0000000000000000 _ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_ /tmp/ccCle2Qt.s:856 .text._ZSt4copyIPKiPiET0_T_S4_S3_:0000000000000000 _ZSt4copyIPKiPiET0_T_S4_S3_ /tmp/ccCle2Qt.s:902 .text._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_:0000000000000000 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_ /tmp/ccCle2Qt.s:922 .text._ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_:0000000000000000 _ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_ /tmp/ccCle2Qt.s:944 .text._ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E:0000000000000000 _ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E /tmp/ccCle2Qt.s:964 .text._ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag:0000000000000000 _ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag /tmp/ccCle2Qt.s:1043 .text._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_:0000000000000000 _ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_ /tmp/ccCle2Qt.s:1043 .text._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_:0000000000000000 _ZNSt6vectorIiSaIiEEC1ESt16initializer_listIiERKS0_ /tmp/ccCle2Qt.s:1135 .text:0000000000000034 _Z9rangeLoopv /tmp/ccCle2Qt.s:1366 .rodata:0000000000000000 ._85 /tmp/ccCle2Qt.s:1342 .text:000000000000019b _GLOBAL__sub_I__Z9rangeLoopv .group:0000000000000000 _ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEC5ERKS1_ .group:0000000000000000 _ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC5IPiEERKNS0_IT_NS_11__enable_ifIXsrSt10__are_sameIS9_S8_E7__valueES5_E6__typeEEE .group:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC5ERKS0_ GAS LISTING /tmp/ccCle2Qt.s page 89 .group:0000000000000000 _ZNSt12_Vector_baseIiSaIiEEC5ERKS0_ .group:0000000000000000 _ZNSt12_Vector_baseIiSaIiEED5Ev .group:0000000000000000 _ZNSt6vectorIiSaIiEED5Ev .group:0000000000000000 _ZNSt6vectorIiSaIiEEC5ESt16initializer_listIiERKS0_ UNDEFINED SYMBOLS _ZNSt8ios_base4InitC1Ev __dso_handle _ZNSt8ios_base4InitD1Ev __cxa_atexit _ZdlPv _ZSt17__throw_bad_allocv _Znwm memmove __gxx_personality_v0 _Unwind_Resume _ZSt4cout _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc _ZNSolsEi _ZNSolsEPKv _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ _ZNSolsEPFRSoS_E