GAS LISTING /tmp/ccnpTmNT.s page 1 1 .file "initialization-list.cpp" 2 .text 3 .Ltext0: 5 _Z41__static_initialization_and_destruction_0ii: 6 .LFB1826: 7 .file 1 "initialization-list.cpp" 1:initialization-list.cpp **** #include <iostream> 2:initialization-list.cpp **** #include <vector> 3:initialization-list.cpp **** 4:initialization-list.cpp **** 5:initialization-list.cpp **** 6:initialization-list.cpp **** void initializationList() { 7:initialization-list.cpp **** std::vector<int> v = { 11, 13, 17 }; 8:initialization-list.cpp **** 9:initialization-list.cpp **** std::cout << "initializationList" << v[1] << std::endl; 10:initialization-list.cpp **** } 8 .loc 1 10 0 9 .cfi_startproc 10 .LVL0: 11 0000 83FF01 cmpl $1, %edi 12 0003 752E jne .L5 13 .loc 1 10 0 discriminator 1 14 0005 81FEFFFF cmpl $65535, %esi 14 0000 15 000b 7526 jne .L5 16 .loc 1 10 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 **** 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 **** GAS LISTING /tmp/ccnpTmNT.s page 2 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 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 GAS LISTING /tmp/ccnpTmNT.s page 3 27 0025 BF000000 movl $_ZNSt8ios_base4InitD1Ev, %edi 27 00 28 002a E8000000 call __cxa_atexit 28 00 29 .LVL3: 30 .loc 1 10 0 31 002f 4883C408 addq $8, %rsp 32 .cfi_def_cfa_offset 8 33 .L5: 34 0033 C3 ret 35 .cfi_endproc 36 .LFE1826: 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 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) GAS LISTING /tmp/ccnpTmNT.s page 4 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: 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 GAS LISTING /tmp/ccnpTmNT.s page 5 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: 100 0023 5D popq %rbp 101 .cfi_def_cfa_offset 8 102 0024 C3 ret 103 .cfi_endproc 104 .LFE1666: 106 .section .text._ZNSt6vectorIiSaIiEEixEm,"axG",@progbits,_ZNSt6vectorIiSaIiEEixEm,comdat 107 .align 2 108 .weak _ZNSt6vectorIiSaIiEEixEm 110 _ZNSt6vectorIiSaIiEEixEm: 111 .LFB1674: 112 .file 4 "/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 GAS LISTING /tmp/ccnpTmNT.s page 6 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 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 GAS LISTING /tmp/ccnpTmNT.s page 7 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); 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 114:/usr/include/c++/4.8/bits/stl_vector.h **** { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } 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 GAS LISTING /tmp/ccnpTmNT.s page 8 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) 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 GAS LISTING /tmp/ccnpTmNT.s page 9 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 **** } 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 **** GAS LISTING /tmp/ccnpTmNT.s page 10 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 **** 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. GAS LISTING /tmp/ccnpTmNT.s page 11 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); } 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(); GAS LISTING /tmp/ccnpTmNT.s page 12 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. 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 GAS LISTING /tmp/ccnpTmNT.s page 13 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. 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()); GAS LISTING /tmp/ccnpTmNT.s page 14 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. 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 GAS LISTING /tmp/ccnpTmNT.s page 15 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 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 539:/usr/include/c++/4.8/bits/stl_vector.h **** { return iterator(this->_M_impl._M_start); } 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 557:/usr/include/c++/4.8/bits/stl_vector.h **** { return iterator(this->_M_impl._M_finish); } 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 **** /** GAS LISTING /tmp/ccnpTmNT.s page 16 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 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 GAS LISTING /tmp/ccnpTmNT.s page 17 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. 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 GAS LISTING /tmp/ccnpTmNT.s page 18 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 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 GAS LISTING /tmp/ccnpTmNT.s page 19 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) 113 .loc 4 770 0 114 .cfi_startproc 115 .LVL10: 771:/usr/include/c++/4.8/bits/stl_vector.h **** { return *(this->_M_impl._M_start + __n); } 116 .loc 4 771 0 117 0000 488B07 movq (%rdi), %rax 118 0003 488D04B0 leaq (%rax,%rsi,4), %rax 119 0007 C3 ret 120 .cfi_endproc 121 .LFE1674: 123 .section .text._ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv,"axG",@progbits,_ZNSt12_Vector_b 124 .align 2 125 .weak _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv 127 _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv: 128 .LFB1737: 113:/usr/include/c++/4.8/bits/stl_vector.h **** { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } 129 .loc 4 113 0 130 .cfi_startproc 131 .LVL11: 132 0000 4889F8 movq %rdi, %rax 114:/usr/include/c++/4.8/bits/stl_vector.h **** 133 .loc 4 114 0 134 0003 C3 ret 135 .cfi_endproc 136 .LFE1737: 138 .section .text._ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_,"axG",@progbits,_ZNSt12_Vector_ba 139 .align 2 140 .weak _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_ 142 _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_: 143 .LFB1772: 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) 144 .loc 4 90 0 145 .cfi_startproc 146 .LVL12: 147 .LBB2: GAS LISTING /tmp/ccnpTmNT.s page 20 91:/usr/include/c++/4.8/bits/stl_vector.h **** { } 148 .loc 4 91 0 149 0000 48C70700 movq $0, (%rdi) 149 000000 150 0007 48C74708 movq $0, 8(%rdi) 150 00000000 151 000f 48C74710 movq $0, 16(%rdi) 151 00000000 152 0017 C3 ret 153 .LBE2: 154 .cfi_endproc 155 .LFE1772: 157 .weak _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC1ERKS0_ 158 .set _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC1ERKS0_,_ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2 159 .section .text._ZNSt12_Vector_baseIiSaIiEEC2ERKS0_,"axG",@progbits,_ZNSt12_Vector_baseIiSaIiEEC5ER 160 .align 2 161 .weak _ZNSt12_Vector_baseIiSaIiEEC2ERKS0_ 163 _ZNSt12_Vector_baseIiSaIiEEC2ERKS0_: 164 .LFB1731: 127:/usr/include/c++/4.8/bits/stl_vector.h **** : _M_impl(__a) { } 165 .loc 4 127 0 166 .cfi_startproc 167 .LVL13: 168 0000 4883EC08 subq $8, %rsp 169 .cfi_def_cfa_offset 16 170 .LBB3: 128:/usr/include/c++/4.8/bits/stl_vector.h **** 171 .loc 4 128 0 172 0004 E8000000 call _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC1ERKS0_ 172 00 173 .LVL14: 174 .LBE3: 175 0009 4883C408 addq $8, %rsp 176 .cfi_def_cfa_offset 8 177 000d C3 ret 178 .cfi_endproc 179 .LFE1731: 181 .weak _ZNSt12_Vector_baseIiSaIiEEC1ERKS0_ 182 .set _ZNSt12_Vector_baseIiSaIiEEC1ERKS0_,_ZNSt12_Vector_baseIiSaIiEEC2ERKS0_ 183 .section .text._ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim,"axG",@progbits,_ZN9__gnu_cxx13new_ 184 .align 2 185 .weak _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim 187 _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim: 188 .LFB1786: 189 .file 5 "/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 GAS LISTING /tmp/ccnpTmNT.s page 21 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 **** * 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> GAS LISTING /tmp/ccnpTmNT.s page 22 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) 190 .loc 5 109 0 191 .cfi_startproc 192 .LVL15: 193 0000 4883EC08 subq $8, %rsp 194 .cfi_def_cfa_offset 16 110:/usr/include/c++/4.8/ext/new_allocator.h **** { ::operator delete(__p); } 195 .loc 5 110 0 196 0004 4889F7 movq %rsi, %rdi 197 .LVL16: 198 0007 E8000000 call _ZdlPv 198 00 199 .LVL17: 200 000c 4883C408 addq $8, %rsp 201 .cfi_def_cfa_offset 8 202 0010 C3 ret 203 .cfi_endproc 204 .LFE1786: GAS LISTING /tmp/ccnpTmNT.s page 23 206 .section .text._ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim,"axG",@progbits,_ZNSt12_Vector_baseI 207 .align 2 208 .weak _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim 210 _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim: 211 .LFB1774: 171:/usr/include/c++/4.8/bits/stl_vector.h **** { 212 .loc 4 171 0 213 .cfi_startproc 214 .LVL18: 173:/usr/include/c++/4.8/bits/stl_vector.h **** _M_impl.deallocate(__p, __n); 215 .loc 4 173 0 216 0000 4885F6 testq %rsi, %rsi 217 0003 740D je .L21 171:/usr/include/c++/4.8/bits/stl_vector.h **** { 218 .loc 4 171 0 219 0005 4883EC08 subq $8, %rsp 220 .cfi_def_cfa_offset 16 174:/usr/include/c++/4.8/bits/stl_vector.h **** } 221 .loc 4 174 0 222 0009 E8000000 call _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim 222 00 223 .LVL19: 175:/usr/include/c++/4.8/bits/stl_vector.h **** 224 .loc 4 175 0 225 000e 4883C408 addq $8, %rsp 226 .cfi_def_cfa_offset 8 227 .L21: 228 0012 F3C3 rep ret 229 .cfi_endproc 230 .LFE1774: 232 .section .text._ZNSt12_Vector_baseIiSaIiEED2Ev,"axG",@progbits,_ZNSt12_Vector_baseIiSaIiEED5Ev,com 233 .align 2 234 .weak _ZNSt12_Vector_baseIiSaIiEED2Ev 236 _ZNSt12_Vector_baseIiSaIiEED2Ev: 237 .LFB1734: 159:/usr/include/c++/4.8/bits/stl_vector.h **** { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage 238 .loc 4 159 0 239 .cfi_startproc 240 .LVL20: 241 0000 4883EC08 subq $8, %rsp 242 .cfi_def_cfa_offset 16 243 .LBB4: 161:/usr/include/c++/4.8/bits/stl_vector.h **** 244 .loc 4 161 0 245 0004 488B37 movq (%rdi), %rsi 246 0007 488B5710 movq 16(%rdi), %rdx 247 000b 4829F2 subq %rsi, %rdx 248 000e 48C1FA02 sarq $2, %rdx 160:/usr/include/c++/4.8/bits/stl_vector.h **** - this->_M_impl._M_start); } 249 .loc 4 160 0 250 0012 E8000000 call _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim 250 00 251 .LVL21: 252 .LBE4: 161:/usr/include/c++/4.8/bits/stl_vector.h **** 253 .loc 4 161 0 254 0017 4883C408 addq $8, %rsp GAS LISTING /tmp/ccnpTmNT.s page 24 255 .cfi_def_cfa_offset 8 256 001b C3 ret 257 .cfi_endproc 258 .LFE1734: 260 .weak _ZNSt12_Vector_baseIiSaIiEED1Ev 261 .set _ZNSt12_Vector_baseIiSaIiEED1Ev,_ZNSt12_Vector_baseIiSaIiEED2Ev 262 .section .text._ZNSt6vectorIiSaIiEED2Ev,"axG",@progbits,_ZNSt6vectorIiSaIiEED5Ev,comdat 263 .align 2 264 .weak _ZNSt6vectorIiSaIiEED2Ev 266 _ZNSt6vectorIiSaIiEED2Ev: 267 .LFB1671: 414:/usr/include/c++/4.8/bits/stl_vector.h **** { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 268 .loc 4 414 0 269 .cfi_startproc 270 .LVL22: 271 0000 4883EC08 subq $8, %rsp 272 .cfi_def_cfa_offset 16 273 .LBB5: 416:/usr/include/c++/4.8/bits/stl_vector.h **** 274 .loc 4 416 0 275 0004 E8000000 call _ZNSt12_Vector_baseIiSaIiEED2Ev 275 00 276 .LVL23: 277 .LBE5: 278 0009 4883C408 addq $8, %rsp 279 .cfi_def_cfa_offset 8 280 000d C3 ret 281 .cfi_endproc 282 .LFE1671: 284 .weak _ZNSt6vectorIiSaIiEED1Ev 285 .set _ZNSt6vectorIiSaIiEED1Ev,_ZNSt6vectorIiSaIiEED2Ev 286 .section .text._ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_acc 287 .weak _ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_itera 289 _ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag 290 .LFB1788: 291 .file 6 "/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 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; GAS LISTING /tmp/ccnpTmNT.s page 25 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 **** 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 **** GAS LISTING /tmp/ccnpTmNT.s page 26 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, 292 .loc 6 90 0 293 .cfi_startproc 294 .LVL24: 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; 295 .loc 6 96 0 296 0000 4889F0 movq %rsi, %rax 297 0003 4829F8 subq %rdi, %rax 298 0006 48C1F802 sarq $2, %rax 97:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** } 299 .loc 6 97 0 300 000a C3 ret 301 .cfi_endproc 302 .LFE1788: 304 .section .text._ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_,"axG",@progbits, 305 .weak _ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_ 307 _ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_: 308 .LFB1775: 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 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) 309 .loc 6 114 0 310 .cfi_startproc 311 .LVL25: 312 0000 4883EC18 subq $24, %rsp 313 .cfi_def_cfa_offset 32 115:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** { GAS LISTING /tmp/ccnpTmNT.s page 27 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)); 314 .loc 6 118 0 315 0004 C6042400 movb $0, (%rsp) 316 0008 E8000000 call _ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterat 316 00 317 .LVL26: 119:/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h **** } 318 .loc 6 119 0 319 000d 4883C418 addq $24, %rsp 320 .cfi_def_cfa_offset 8 321 0011 C3 ret 322 .cfi_endproc 323 .LFE1775: 325 .section .text._ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv,"axG",@progbits,_ZNK9__gnu_cxx13new_all 326 .align 2 327 .weak _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv 329 _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv: 330 .LFB1797: 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 331 .loc 5 113 0 332 .cfi_startproc 333 .LVL27: 114:/usr/include/c++/4.8/ext/new_allocator.h **** { return size_t(-1) / sizeof(_Tp); } 334 .loc 5 114 0 335 0000 48B8FFFF movabsq $4611686018427387903, %rax 335 FFFFFFFF 335 FF3F 336 000a C3 ret 337 .cfi_endproc 338 .LFE1797: 340 .section .text._ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv,"axG",@progbits,_ZN9__gnu_cxx13new_al 341 .align 2 342 .weak _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv 344 _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv: 345 .LFB1789: 99:/usr/include/c++/4.8/ext/new_allocator.h **** { 346 .loc 5 99 0 347 .cfi_startproc 348 .LVL28: 349 0000 53 pushq %rbx 350 .cfi_def_cfa_offset 16 351 .cfi_offset 3, -16 352 0001 4889F3 movq %rsi, %rbx 101:/usr/include/c++/4.8/ext/new_allocator.h **** std::__throw_bad_alloc(); 353 .loc 5 101 0 354 0004 E8000000 call _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv 354 00 355 .LVL29: 356 0009 4839D8 cmpq %rbx, %rax 357 000c 7305 jae .L31 102:/usr/include/c++/4.8/ext/new_allocator.h **** 358 .loc 5 102 0 359 000e E8000000 call _ZSt17__throw_bad_allocv GAS LISTING /tmp/ccnpTmNT.s page 28 359 00 360 .LVL30: 361 .L31: 104:/usr/include/c++/4.8/ext/new_allocator.h **** } 362 .loc 5 104 0 363 0013 488D3C9D leaq 0(,%rbx,4), %rdi 363 00000000 364 001b E8000000 call _Znwm 364 00 365 .LVL31: 105:/usr/include/c++/4.8/ext/new_allocator.h **** 366 .loc 5 105 0 367 0020 5B popq %rbx 368 .cfi_def_cfa_offset 8 369 .LVL32: 370 0021 C3 ret 371 .cfi_endproc 372 .LFE1789: 374 .section .text._ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm,"axG",@progbits,_ZNSt12_Vector_baseIiSaI 375 .align 2 376 .weak _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm 378 _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm: 379 .LFB1776: 167:/usr/include/c++/4.8/bits/stl_vector.h **** { return __n != 0 ? _M_impl.allocate(__n) : 0; } 380 .loc 4 167 0 381 .cfi_startproc 382 .LVL33: 168:/usr/include/c++/4.8/bits/stl_vector.h **** 383 .loc 4 168 0 384 0000 B8000000 movl $0, %eax 384 00 385 0005 4885F6 testq %rsi, %rsi 386 0008 7412 je .L38 167:/usr/include/c++/4.8/bits/stl_vector.h **** { return __n != 0 ? _M_impl.allocate(__n) : 0; } 387 .loc 4 167 0 discriminator 1 388 000a 4883EC08 subq $8, %rsp 389 .cfi_def_cfa_offset 16 168:/usr/include/c++/4.8/bits/stl_vector.h **** 390 .loc 4 168 0 discriminator 1 391 000e BA000000 movl $0, %edx 391 00 392 0013 E8000000 call _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv 392 00 393 .LVL34: 394 0018 4883C408 addq $8, %rsp 395 .cfi_def_cfa_offset 8 396 .L38: 168:/usr/include/c++/4.8/bits/stl_vector.h **** 397 .loc 4 168 0 is_stmt 0 discriminator 3 398 001c F3C3 rep ret 399 .cfi_endproc 400 .LFE1776: 402 .section .text._ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_,"axG",@progbits,_ZNSt10_Iter_baseIPKiLb0EE7_ 403 .weak _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_ 405 _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_: 406 .LFB1820: 407 .file 7 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h" GAS LISTING /tmp/ccnpTmNT.s page 29 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 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 **** */ GAS LISTING /tmp/ccnpTmNT.s page 30 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 { }; 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?) GAS LISTING /tmp/ccnpTmNT.s page 31 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 **** }; 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 GAS LISTING /tmp/ccnpTmNT.s page 32 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) 408 .loc 7 212 0 is_stmt 1 409 .cfi_startproc 410 .LVL35: 411 0000 4889F8 movq %rdi, %rax 213:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { return __it; } 412 .loc 7 213 0 413 0003 C3 ret 414 .cfi_endproc 415 .LFE1820: 417 .section .text._ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_,"axG",@progbits,_ZSt 418 .weak _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_ 420 _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_: 421 .LFB1818: 422 .file 8 "/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 **** GAS LISTING /tmp/ccnpTmNT.s page 33 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 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> GAS LISTING /tmp/ccnpTmNT.s page 34 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 **** { 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 **** */ GAS LISTING /tmp/ccnpTmNT.s page 35 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 **** * 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); GAS LISTING /tmp/ccnpTmNT.s page 36 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& 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. GAS LISTING /tmp/ccnpTmNT.s page 37 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> 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 GAS LISTING /tmp/ccnpTmNT.s page 38 288:/usr/include/c++/4.8/bits/stl_algobase.h **** __miter_base(_Iterator __it) 423 .loc 8 288 0 424 .cfi_startproc 425 .LVL36: 426 0000 4883EC08 subq $8, %rsp 427 .cfi_def_cfa_offset 16 289:/usr/include/c++/4.8/bits/stl_algobase.h **** { return std::_Miter_base<_Iterator>::_S_base(__it); } 428 .loc 8 289 0 429 0004 E8000000 call _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_ 429 00 430 .LVL37: 431 0009 4883C408 addq $8, %rsp 432 .cfi_def_cfa_offset 8 433 000d C3 ret 434 .cfi_endproc 435 .LFE1818: 437 .section .text._ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_,"axG",@progbits,_ZSt 438 .weak _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_ 440 _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_: 441 .LFB1821: 277:/usr/include/c++/4.8/bits/stl_algobase.h **** { return std::_Niter_base<_Iterator>::_S_base(__it); } 442 .loc 8 277 0 443 .cfi_startproc 444 .LVL38: 445 0000 4883EC08 subq $8, %rsp 446 .cfi_def_cfa_offset 16 278:/usr/include/c++/4.8/bits/stl_algobase.h **** 447 .loc 8 278 0 448 0004 E8000000 call _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_ 448 00 449 .LVL39: 450 0009 4883C408 addq $8, %rsp 451 .cfi_def_cfa_offset 8 452 000d C3 ret 453 .cfi_endproc 454 .LFE1821: 456 .section .text._ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_,"axG",@progbits,_ZNSt10_Iter_baseIPiLb0EE7_S_ 457 .weak _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ 459 _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_: 460 .LFB1824: 212:/usr/include/c++/4.8/bits/stl_iterator_base_types.h **** { return __it; } 461 .loc 7 212 0 462 .cfi_startproc 463 .LVL40: 464 0000 4889F8 movq %rdi, %rax 465 .loc 7 213 0 466 0003 C3 ret 467 .cfi_endproc 468 .LFE1824: 470 .section .text._ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_,"axG",@progbits,_ZSt1 471 .weak _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ 473 _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_: 474 .LFB1822: 277:/usr/include/c++/4.8/bits/stl_algobase.h **** { return std::_Niter_base<_Iterator>::_S_base(__it); } 475 .loc 8 277 0 476 .cfi_startproc 477 .LVL41: GAS LISTING /tmp/ccnpTmNT.s page 39 478 0000 4883EC08 subq $8, %rsp 479 .cfi_def_cfa_offset 16 278:/usr/include/c++/4.8/bits/stl_algobase.h **** 480 .loc 8 278 0 481 0004 E8000000 call _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ 481 00 482 .LVL42: 483 0009 4883C408 addq $8, %rsp 484 .cfi_def_cfa_offset 8 485 000d C3 ret 486 .cfi_endproc 487 .LFE1822: 489 .section .text._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S 490 .weak _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ 492 _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_: 493 .LFB1825: 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 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) GAS LISTING /tmp/ccnpTmNT.s page 40 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) 494 .loc 8 368 0 495 .cfi_startproc 496 .LVL43: 497 0000 55 pushq %rbp 498 .cfi_def_cfa_offset 16 499 .cfi_offset 6, -16 500 0001 53 pushq %rbx 501 .cfi_def_cfa_offset 24 502 .cfi_offset 3, -24 503 0002 4883EC08 subq $8, %rsp 504 .cfi_def_cfa_offset 32 505 0006 4889D5 movq %rdx, %rbp 506 .LBB6: 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; 507 .loc 8 370 0 508 0009 4829FE subq %rdi, %rsi 509 .LVL44: 510 000c 4889F3 movq %rsi, %rbx GAS LISTING /tmp/ccnpTmNT.s page 41 511 000f 48C1FB02 sarq $2, %rbx 512 .LVL45: 371:/usr/include/c++/4.8/bits/stl_algobase.h **** if (_Num) 513 .loc 8 371 0 514 0013 4885DB testq %rbx, %rbx 515 0016 7413 je .L48 372:/usr/include/c++/4.8/bits/stl_algobase.h **** __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); 516 .loc 8 372 0 517 0018 488D149D leaq 0(,%rbx,4), %rdx 517 00000000 518 .LVL46: 519 0020 4889FE movq %rdi, %rsi 520 0023 4889EF movq %rbp, %rdi 521 .LVL47: 522 0026 E8000000 call memmove 522 00 523 .LVL48: 524 .L48: 373:/usr/include/c++/4.8/bits/stl_algobase.h **** return __result + _Num; 525 .loc 8 373 0 526 002b 488D449D leaq 0(%rbp,%rbx,4), %rax 526 00 527 .LBE6: 374:/usr/include/c++/4.8/bits/stl_algobase.h **** } 528 .loc 8 374 0 529 0030 4883C408 addq $8, %rsp 530 .cfi_def_cfa_offset 24 531 0034 5B popq %rbx 532 .cfi_def_cfa_offset 16 533 .LVL49: 534 0035 5D popq %rbp 535 .cfi_def_cfa_offset 8 536 .LVL50: 537 0036 C3 ret 538 .cfi_endproc 539 .LFE1825: 541 .section .text._ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_,"axG",@progbits,_ZSt13__copy_move_aILb0E 542 .weak _ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_ 544 _ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_: 545 .LFB1823: 375:/usr/include/c++/4.8/bits/stl_algobase.h **** }; 376:/usr/include/c++/4.8/bits/stl_algobase.h **** 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) 546 .loc 8 379 0 547 .cfi_startproc 548 .LVL51: 549 0000 4883EC08 subq $8, %rsp 550 .cfi_def_cfa_offset 16 551 .LVL52: 552 .LBB7: 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) GAS LISTING /tmp/ccnpTmNT.s page 42 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); 553 .loc 8 390 0 554 0004 E8000000 call _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ 554 00 555 .LVL53: 556 .LBE7: 391:/usr/include/c++/4.8/bits/stl_algobase.h **** } 557 .loc 8 391 0 558 0009 4883C408 addq $8, %rsp 559 .cfi_def_cfa_offset 8 560 000d C3 ret 561 .cfi_endproc 562 .LFE1823: 564 .section .text._ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_,"axG",@progbits,_ZSt14__copy_move_a2ILb 565 .weak _ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_ 567 _ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_: 568 .LFB1819: 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, 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) 569 .loc 8 424 0 570 .cfi_startproc GAS LISTING /tmp/ccnpTmNT.s page 43 571 .LVL54: 572 0000 4154 pushq %r12 573 .cfi_def_cfa_offset 16 574 .cfi_offset 12, -16 575 0002 55 pushq %rbp 576 .cfi_def_cfa_offset 24 577 .cfi_offset 6, -24 578 0003 53 pushq %rbx 579 .cfi_def_cfa_offset 32 580 .cfi_offset 3, -32 581 0004 4989FC movq %rdi, %r12 582 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))); 583 .loc 8 428 0 584 000a 4889D7 movq %rdx, %rdi 585 .LVL55: 586 000d E8000000 call _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ 586 00 587 .LVL56: 588 0012 4889C5 movq %rax, %rbp 589 0015 4889DF movq %rbx, %rdi 590 0018 E8000000 call _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_ 590 00 591 .LVL57: 592 001d 4889C3 movq %rax, %rbx 593 .LVL58: 594 0020 4C89E7 movq %r12, %rdi 595 0023 E8000000 call _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_ 595 00 596 .LVL59: 597 0028 4889EA movq %rbp, %rdx 598 002b 4889DE movq %rbx, %rsi 599 002e 4889C7 movq %rax, %rdi 600 0031 E8000000 call _ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_ 600 00 601 .LVL60: 429:/usr/include/c++/4.8/bits/stl_algobase.h **** } 602 .loc 8 429 0 603 0036 5B popq %rbx 604 .cfi_def_cfa_offset 24 605 0037 5D popq %rbp 606 .cfi_def_cfa_offset 16 607 0038 415C popq %r12 608 .cfi_def_cfa_offset 8 609 .LVL61: 610 003a C3 ret 611 .cfi_endproc 612 .LFE1819: 614 .section .text._ZSt4copyIPKiPiET0_T_S4_S3_,"axG",@progbits,_ZSt4copyIPKiPiET0_T_S4_S3_,comdat 615 .weak _ZSt4copyIPKiPiET0_T_S4_S3_ 617 _ZSt4copyIPKiPiET0_T_S4_S3_: 618 .LFB1809: 430:/usr/include/c++/4.8/bits/stl_algobase.h **** 431:/usr/include/c++/4.8/bits/stl_algobase.h **** /** GAS LISTING /tmp/ccnpTmNT.s page 44 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) 619 .loc 8 450 0 620 .cfi_startproc 621 .LVL62: 622 0000 4154 pushq %r12 623 .cfi_def_cfa_offset 16 624 .cfi_offset 12, -16 625 0002 55 pushq %rbp 626 .cfi_def_cfa_offset 24 627 .cfi_offset 6, -24 628 0003 53 pushq %rbx 629 .cfi_def_cfa_offset 32 630 .cfi_offset 3, -32 631 0004 4989FC movq %rdi, %r12 632 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), 460:/usr/include/c++/4.8/bits/stl_algobase.h **** __result)); 633 .loc 8 460 0 634 000a 4889F7 movq %rsi, %rdi 635 .LVL63: 636 000d E8000000 call _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_ 636 00 637 .LVL64: 638 0012 4889C3 movq %rax, %rbx 639 0015 4C89E7 movq %r12, %rdi 640 0018 E8000000 call _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_ 640 00 641 .LVL65: 642 001d 4889EA movq %rbp, %rdx 643 0020 4889DE movq %rbx, %rsi 644 0023 4889C7 movq %rax, %rdi GAS LISTING /tmp/ccnpTmNT.s page 45 645 0026 E8000000 call _ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_ 645 00 646 .LVL66: 461:/usr/include/c++/4.8/bits/stl_algobase.h **** } 647 .loc 8 461 0 648 002b 5B popq %rbx 649 .cfi_def_cfa_offset 24 650 002c 5D popq %rbp 651 .cfi_def_cfa_offset 16 652 .LVL67: 653 002d 415C popq %r12 654 .cfi_def_cfa_offset 8 655 .LVL68: 656 002f C3 ret 657 .cfi_endproc 658 .LFE1809: 660 .section .text._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_,"axG",@progbits 661 .weak _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_ 663 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_: 664 .LFB1798: 665 .file 9 "/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; 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. GAS LISTING /tmp/ccnpTmNT.s page 46 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(...) 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, 666 .loc 9 91 0 667 .cfi_startproc GAS LISTING /tmp/ccnpTmNT.s page 47 668 .LVL69: 669 0000 4883EC08 subq $8, %rsp 670 .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); } 671 .loc 9 93 0 672 0004 E8000000 call _ZSt4copyIPKiPiET0_T_S4_S3_ 672 00 673 .LVL70: 674 0009 4883C408 addq $8, %rsp 675 .cfi_def_cfa_offset 8 676 000d C3 ret 677 .cfi_endproc 678 .LFE1798: 680 .section .text._ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_,"axG",@progbits,_ZSt18uninitialized_copy 681 .weak _ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_ 683 _ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_: 684 .LFB1790: 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, 685 .loc 9 107 0 686 .cfi_startproc 687 .LVL71: 688 0000 4883EC08 subq $8, %rsp 689 .cfi_def_cfa_offset 16 690 .LBB8: 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; 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); 691 .loc 9 117 0 692 0004 E8000000 call _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_ 692 00 693 .LVL72: 694 .LBE8: 118:/usr/include/c++/4.8/bits/stl_uninitialized.h **** } 695 .loc 9 118 0 696 0009 4883C408 addq $8, %rsp 697 .cfi_def_cfa_offset 8 GAS LISTING /tmp/ccnpTmNT.s page 48 698 000d C3 ret 699 .cfi_endproc 700 .LFE1790: 702 .section .text._ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E,"axG",@progbits,_ZSt22__uni 703 .weak _ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E 705 _ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E: 706 .LFB1777: 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 **** /** 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; GAS LISTING /tmp/ccnpTmNT.s page 49 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. 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 **** } GAS LISTING /tmp/ccnpTmNT.s page 50 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, 707 .loc 9 256 0 708 .cfi_startproc 709 .LVL73: 710 0000 4883EC08 subq $8, %rsp 711 .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); } 712 .loc 9 258 0 713 0004 E8000000 call _ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_ 713 00 714 .LVL74: 715 0009 4883C408 addq $8, %rsp 716 .cfi_def_cfa_offset 8 717 000d C3 ret 718 .cfi_endproc 719 .LFE1777: 721 .section .text._ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag,"axG" 722 .align 2 723 .weak _ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag 725 _ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag: 726 .LFB1736: 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 776:/usr/include/c++/4.8/bits/stl_vector.h **** * accessed. GAS LISTING /tmp/ccnpTmNT.s page 51 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 **** } 833:/usr/include/c++/4.8/bits/stl_vector.h **** GAS LISTING /tmp/ccnpTmNT.s page 52 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 890:/usr/include/c++/4.8/bits/stl_vector.h **** /** GAS LISTING /tmp/ccnpTmNT.s page 53 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. 947:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __args Arguments. GAS LISTING /tmp/ccnpTmNT.s page 54 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 **** */ 1004:/usr/include/c++/4.8/bits/stl_vector.h **** void GAS LISTING /tmp/ccnpTmNT.s page 55 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. 1061:/usr/include/c++/4.8/bits/stl_vector.h **** * @param __position Iterator pointing to element to be erased. GAS LISTING /tmp/ccnpTmNT.s page 56 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 **** 1118:/usr/include/c++/4.8/bits/stl_vector.h **** /** GAS LISTING /tmp/ccnpTmNT.s page 57 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 **** { 1175:/usr/include/c++/4.8/bits/stl_vector.h **** typedef typename std::iterator_traits<_InputIterator>:: GAS LISTING /tmp/ccnpTmNT.s page 58 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, 727 .loc 4 1197 0 728 .cfi_startproc 729 .LVL75: 730 0000 4156 pushq %r14 731 .cfi_def_cfa_offset 16 732 .cfi_offset 14, -16 733 0002 4155 pushq %r13 734 .cfi_def_cfa_offset 24 735 .cfi_offset 13, -24 736 0004 4154 pushq %r12 737 .cfi_def_cfa_offset 32 738 .cfi_offset 12, -32 739 0006 55 pushq %rbp 740 .cfi_def_cfa_offset 40 741 .cfi_offset 6, -40 742 0007 53 pushq %rbx 743 .cfi_def_cfa_offset 48 744 .cfi_offset 3, -48 745 0008 4889FB movq %rdi, %rbx 746 000b 4989F4 movq %rsi, %r12 747 000e 4989D5 movq %rdx, %r13 748 .LBB9: 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); 749 .loc 4 1200 0 750 0011 4889D6 movq %rdx, %rsi 751 .LVL76: 752 0014 4C89E7 movq %r12, %rdi 753 .LVL77: 754 0017 E8000000 call _ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_ 754 00 755 .LVL78: 756 001c 4989C6 movq %rax, %r14 757 .LVL79: GAS LISTING /tmp/ccnpTmNT.s page 59 1201:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_start = this->_M_allocate(__n); 758 .loc 4 1201 0 759 001f 4889C6 movq %rax, %rsi 760 0022 4889DF movq %rbx, %rdi 761 0025 E8000000 call _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm 761 00 762 .LVL80: 763 002a 4889C5 movq %rax, %rbp 764 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; 765 .loc 4 1202 0 766 0030 4A8D04B0 leaq (%rax,%r14,4), %rax 767 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()); 768 .loc 4 1206 0 769 0038 4889DF movq %rbx, %rdi 770 003b E8000000 call _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv 770 00 771 .LVL81: 772 0040 4889C1 movq %rax, %rcx 773 0043 4889EA movq %rbp, %rdx 774 0046 4C89EE movq %r13, %rsi 775 0049 4C89E7 movq %r12, %rdi 776 004c E8000000 call _ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E 776 00 777 .LVL82: 1203:/usr/include/c++/4.8/bits/stl_vector.h **** this->_M_impl._M_finish = 778 .loc 4 1203 0 779 0051 48894308 movq %rax, 8(%rbx) 780 .LBE9: 1207:/usr/include/c++/4.8/bits/stl_vector.h **** } 781 .loc 4 1207 0 782 0055 5B popq %rbx 783 .cfi_def_cfa_offset 40 784 .LVL83: 785 0056 5D popq %rbp 786 .cfi_def_cfa_offset 32 787 0057 415C popq %r12 788 .cfi_def_cfa_offset 24 789 .LVL84: 790 0059 415D popq %r13 791 .cfi_def_cfa_offset 16 792 .LVL85: 793 005b 415E popq %r14 794 .cfi_def_cfa_offset 8 795 .LVL86: 796 005d C3 ret 797 .cfi_endproc 798 .LFE1736: 800 .section .text._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_,"axG",@progbits,_ZNSt6vectorIiS 801 .align 2 802 .weak _ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_ 804 _ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_: 805 .LFB1668: GAS LISTING /tmp/ccnpTmNT.s page 60 364:/usr/include/c++/4.8/bits/stl_vector.h **** const allocator_type& __a = allocator_type()) 806 .loc 4 364 0 807 .cfi_startproc 808 .cfi_personality 0x3,__gxx_personality_v0 809 .cfi_lsda 0x3,.LLSDA1668 810 .LVL87: 811 0000 55 pushq %rbp 812 .cfi_def_cfa_offset 16 813 .cfi_offset 6, -16 814 0001 53 pushq %rbx 815 .cfi_def_cfa_offset 24 816 .cfi_offset 3, -24 817 0002 4883EC28 subq $40, %rsp 818 .cfi_def_cfa_offset 64 819 0006 4889FB movq %rdi, %rbx 820 0009 48897424 movq %rsi, 16(%rsp) 820 10 821 000e 48895424 movq %rdx, 24(%rsp) 821 18 822 .LBB10: 366:/usr/include/c++/4.8/bits/stl_vector.h **** { 823 .loc 4 366 0 824 0013 4889CE movq %rcx, %rsi 825 0016 E8000000 call _ZNSt12_Vector_baseIiSaIiEEC2ERKS0_ 825 00 826 .LVL88: 369:/usr/include/c++/4.8/bits/stl_vector.h **** } 827 .loc 4 369 0 828 001b 488D7C24 leaq 16(%rsp), %rdi 828 10 829 0020 E8000000 call _ZNKSt16initializer_listIiE3endEv 829 00 830 .LVL89: 831 0025 4889C5 movq %rax, %rbp 832 0028 488D7C24 leaq 16(%rsp), %rdi 832 10 833 002d E8000000 call _ZNKSt16initializer_listIiE5beginEv 833 00 834 .LVL90: 368:/usr/include/c++/4.8/bits/stl_vector.h **** random_access_iterator_tag()); 835 .loc 4 368 0 836 0032 C6042400 movb $0, (%rsp) 837 0036 4889EA movq %rbp, %rdx 838 0039 4889C6 movq %rax, %rsi 839 003c 4889DF movq %rbx, %rdi 840 .LEHB0: 841 003f E8000000 call _ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag 841 00 842 .LEHE0: 843 .LVL91: 844 0044 EB13 jmp .L67 845 .L66: 846 0046 4889C5 movq %rax, %rbp 366:/usr/include/c++/4.8/bits/stl_vector.h **** { 847 .loc 4 366 0 848 0049 4889DF movq %rbx, %rdi 849 004c E8000000 call _ZNSt12_Vector_baseIiSaIiEED2Ev GAS LISTING /tmp/ccnpTmNT.s page 61 849 00 850 .LVL92: 851 0051 4889EF movq %rbp, %rdi 852 .LEHB1: 853 0054 E8000000 call _Unwind_Resume 853 00 854 .LEHE1: 855 .LVL93: 856 .L67: 857 .LBE10: 370:/usr/include/c++/4.8/bits/stl_vector.h **** #endif 858 .loc 4 370 0 859 0059 4883C428 addq $40, %rsp 860 .cfi_def_cfa_offset 24 861 005d 5B popq %rbx 862 .cfi_def_cfa_offset 16 863 .LVL94: 864 005e 5D popq %rbp 865 .cfi_def_cfa_offset 8 866 005f C3 ret 867 .cfi_endproc 868 .LFE1668: 869 .globl __gxx_personality_v0 870 .section .gcc_except_table._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_,"aG",@progbits,_ZNS 871 .LLSDA1668: 872 0000 FF .byte 0xff 873 0001 FF .byte 0xff 874 0002 01 .byte 0x1 875 0003 08 .uleb128 .LLSDACSE1668-.LLSDACSB1668 876 .LLSDACSB1668: 877 0004 3F .uleb128 .LEHB0-.LFB1668 878 0005 05 .uleb128 .LEHE0-.LEHB0 879 0006 46 .uleb128 .L66-.LFB1668 880 0007 00 .uleb128 0 881 0008 54 .uleb128 .LEHB1-.LFB1668 882 0009 05 .uleb128 .LEHE1-.LEHB1 883 000a 00 .uleb128 0 884 000b 00 .uleb128 0 885 .LLSDACSE1668: 886 .section .text._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_,"axG",@progbits,_ZNSt6vectorIiS 888 .weak _ZNSt6vectorIiSaIiEEC1ESt16initializer_listIiERKS0_ 889 .set _ZNSt6vectorIiSaIiEEC1ESt16initializer_listIiERKS0_,_ZNSt6vectorIiSaIiEEC2ESt16initializer_li 890 .section .rodata.str1.1,"aMS",@progbits,1 891 .LC0: 892 0000 696E6974 .string "initializationList" 892 69616C69 892 7A617469 892 6F6E4C69 892 737400 893 .text 894 .globl _Z18initializationListv 896 _Z18initializationListv: 897 .LFB1601: 6:initialization-list.cpp **** std::vector<int> v = { 11, 13, 17 }; 898 .loc 1 6 0 899 .cfi_startproc 900 .cfi_personality 0x3,__gxx_personality_v0 GAS LISTING /tmp/ccnpTmNT.s page 62 901 .cfi_lsda 0x3,.LLSDA1601 902 0034 53 pushq %rbx 903 .cfi_def_cfa_offset 16 904 .cfi_offset 3, -16 905 0035 4883EC30 subq $48, %rsp 906 .cfi_def_cfa_offset 64 907 .LBB11: 7:initialization-list.cpp **** 908 .loc 1 7 0 909 0039 488D4C24 leaq 15(%rsp), %rcx 909 0F 910 003e BE000000 movl $._85, %esi 910 00 911 0043 BA030000 movl $3, %edx 911 00 912 0048 488D7C24 leaq 16(%rsp), %rdi 912 10 913 .LEHB2: 914 004d E8000000 call _ZNSt6vectorIiSaIiEEC1ESt16initializer_listIiERKS0_ 914 00 915 .LEHE2: 916 .LVL95: 9:initialization-list.cpp **** } 917 .loc 1 9 0 918 0052 BE010000 movl $1, %esi 918 00 919 0057 488D7C24 leaq 16(%rsp), %rdi 919 10 920 005c E8000000 call _ZNSt6vectorIiSaIiEEixEm 920 00 921 .LVL96: 922 0061 8B18 movl (%rax), %ebx 923 0063 BE000000 movl $.LC0, %esi 923 00 924 0068 BF000000 movl $_ZSt4cout, %edi 924 00 925 .LEHB3: 926 006d E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 926 00 927 .LVL97: 928 0072 89DE movl %ebx, %esi 929 0074 4889C7 movq %rax, %rdi 930 0077 E8000000 call _ZNSolsEi 930 00 931 .LVL98: 9:initialization-list.cpp **** } 932 .loc 1 9 0 is_stmt 0 discriminator 1 933 007c BE000000 movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi 933 00 934 0081 4889C7 movq %rax, %rdi 935 0084 E8000000 call _ZNSolsEPFRSoS_E 935 00 936 .LEHE3: 937 .LVL99: 938 0089 488D7C24 leaq 16(%rsp), %rdi 938 10 939 008e E8000000 call _ZNSt6vectorIiSaIiEED1Ev GAS LISTING /tmp/ccnpTmNT.s page 63 939 00 940 .LVL100: 941 0093 EB15 jmp .L72 942 .L71: 943 0095 4889C3 movq %rax, %rbx 9:initialization-list.cpp **** } 944 .loc 1 9 0 945 0098 488D7C24 leaq 16(%rsp), %rdi 945 10 946 009d E8000000 call _ZNSt6vectorIiSaIiEED1Ev 946 00 947 .LVL101: 948 00a2 4889DF movq %rbx, %rdi 949 .LEHB4: 950 00a5 E8000000 call _Unwind_Resume 950 00 951 .LEHE4: 952 .LVL102: 953 .L72: 954 .LBE11: 955 .loc 1 10 0 is_stmt 1 956 00aa 4883C430 addq $48, %rsp 957 .cfi_def_cfa_offset 16 958 00ae 5B popq %rbx 959 .cfi_def_cfa_offset 8 960 00af C3 ret 961 .cfi_endproc 962 .LFE1601: 963 .section .gcc_except_table,"a",@progbits 964 .LLSDA1601: 965 0000 FF .byte 0xff 966 0001 FF .byte 0xff 967 0002 01 .byte 0x1 968 0003 0C .uleb128 .LLSDACSE1601-.LLSDACSB1601 969 .LLSDACSB1601: 970 0004 19 .uleb128 .LEHB2-.LFB1601 971 0005 05 .uleb128 .LEHE2-.LEHB2 972 0006 00 .uleb128 0 973 0007 00 .uleb128 0 974 0008 39 .uleb128 .LEHB3-.LFB1601 975 0009 1C .uleb128 .LEHE3-.LEHB3 976 000a 61 .uleb128 .L71-.LFB1601 977 000b 00 .uleb128 0 978 000c 71 .uleb128 .LEHB4-.LFB1601 979 000d 05 .uleb128 .LEHE4-.LEHB4 980 000e 00 .uleb128 0 981 000f 00 .uleb128 0 982 .LLSDACSE1601: 983 .text 986 _GLOBAL__sub_I__Z18initializationListv: 987 .LFB1827: 988 .loc 1 10 0 989 .cfi_startproc 990 00b0 4883EC08 subq $8, %rsp 991 .cfi_def_cfa_offset 16 992 .loc 1 10 0 993 00b4 BEFFFF00 movl $65535, %esi GAS LISTING /tmp/ccnpTmNT.s page 64 993 00 994 00b9 BF010000 movl $1, %edi 994 00 995 00be E83DFFFF call _Z41__static_initialization_and_destruction_0ii 995 FF 996 .LVL103: 997 00c3 4883C408 addq $8, %rsp 998 .cfi_def_cfa_offset 8 999 00c7 C3 ret 1000 .cfi_endproc 1001 .LFE1827: 1003 .section .init_array,"aw" 1004 .align 8 1005 0000 00000000 .quad _GLOBAL__sub_I__Z18initializationListv 1005 00000000 1006 .section .rodata 1007 .align 4 1010 ._85: 1011 0000 0B000000 .long 11 1012 0004 0D000000 .long 13 1013 0008 11000000 .long 17 1014 .local _ZStL8__ioinit 1015 .comm _ZStL8__ioinit,1,1 1016 .text 1017 .Letext0: 1018 .file 10 "/usr/include/libio.h" 1019 .file 11 "/usr/include/stdio.h" 1020 .file 12 "<built-in>" 1021 .file 13 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h" 1022 .file 14 "/usr/include/wchar.h" 1023 .file 15 "/usr/include/c++/4.8/cwchar" 1024 .file 16 "/usr/include/c++/4.8/bits/exception_ptr.h" 1025 .file 17 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h" 1026 .file 18 "/usr/include/c++/4.8/type_traits" 1027 .file 19 "/usr/include/c++/4.8/bits/stl_pair.h" 1028 .file 20 "/usr/include/c++/4.8/bits/char_traits.h" 1029 .file 21 "/usr/include/c++/4.8/cstdint" 1030 .file 22 "/usr/include/c++/4.8/clocale" 1031 .file 23 "/usr/include/c++/4.8/cstdlib" 1032 .file 24 "/usr/include/c++/4.8/cstdio" 1033 .file 25 "/usr/include/c++/4.8/bits/ios_base.h" 1034 .file 26 "/usr/include/c++/4.8/cwctype" 1035 .file 27 "/usr/include/c++/4.8/bits/ostream.tcc" 1036 .file 28 "/usr/include/c++/4.8/ostream" 1037 .file 29 "/usr/include/c++/4.8/bits/allocator.h" 1038 .file 30 "/usr/include/c++/4.8/bits/ptr_traits.h" 1039 .file 31 "/usr/include/c++/4.8/bits/alloc_traits.h" 1040 .file 32 "/usr/include/c++/4.8/ext/alloc_traits.h" 1041 .file 33 "/usr/include/c++/4.8/bits/vector.tcc" 1042 .file 34 "/usr/include/c++/4.8/iosfwd" 1043 .file 35 "/usr/include/x86_64-linux-gnu/bits/wchar2.h" 1044 .file 36 "/usr/include/c++/4.8/bits/functexcept.h" 1045 .file 37 "/usr/include/time.h" 1046 .file 38 "/usr/include/c++/4.8/ext/numeric_traits.h" 1047 .file 39 "/usr/include/c++/4.8/debug/debug.h" 1048 .file 40 "/usr/include/stdint.h" 1049 .file 41 "/usr/include/locale.h" GAS LISTING /tmp/ccnpTmNT.s page 65 1050 .file 42 "/usr/include/x86_64-linux-gnu/bits/types.h" 1051 .file 43 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/atomic_word.h" 1052 .file 44 "/usr/include/stdlib.h" 1053 .file 45 "/usr/include/x86_64-linux-gnu/bits/stdlib.h" 1054 .file 46 "/usr/include/_G_config.h" 1055 .file 47 "/usr/include/x86_64-linux-gnu/bits/stdio2.h" 1056 .file 48 "/usr/include/wctype.h" 1057 .file 49 "/usr/include/c++/4.8/new" GAS LISTING /tmp/ccnpTmNT.s page 66 DEFINED SYMBOLS *ABS*:0000000000000000 initialization-list.cpp /tmp/ccnpTmNT.s:5 .text:0000000000000000 _Z41__static_initialization_and_destruction_0ii .bss:0000000000000000 _ZStL8__ioinit /tmp/ccnpTmNT.s:42 .text._ZNKSt16initializer_listIiE5beginEv:0000000000000000 _ZNKSt16initializer_listIiE5beginEv /tmp/ccnpTmNT.s:58 .text._ZNKSt16initializer_listIiE4sizeEv:0000000000000000 _ZNKSt16initializer_listIiE4sizeEv /tmp/ccnpTmNT.s:73 .text._ZNKSt16initializer_listIiE3endEv:0000000000000000 _ZNKSt16initializer_listIiE3endEv /tmp/ccnpTmNT.s:110 .text._ZNSt6vectorIiSaIiEEixEm:0000000000000000 _ZNSt6vectorIiSaIiEEixEm /tmp/ccnpTmNT.s:127 .text._ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv /tmp/ccnpTmNT.s:142 .text._ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_ /tmp/ccnpTmNT.s:142 .text._ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2ERKS0_:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC1ERKS0_ /tmp/ccnpTmNT.s:163 .text._ZNSt12_Vector_baseIiSaIiEEC2ERKS0_:0000000000000000 _ZNSt12_Vector_baseIiSaIiEEC2ERKS0_ /tmp/ccnpTmNT.s:163 .text._ZNSt12_Vector_baseIiSaIiEEC2ERKS0_:0000000000000000 _ZNSt12_Vector_baseIiSaIiEEC1ERKS0_ /tmp/ccnpTmNT.s:187 .text._ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim:0000000000000000 _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim /tmp/ccnpTmNT.s:210 .text._ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim /tmp/ccnpTmNT.s:236 .text._ZNSt12_Vector_baseIiSaIiEED2Ev:0000000000000000 _ZNSt12_Vector_baseIiSaIiEED2Ev /tmp/ccnpTmNT.s:236 .text._ZNSt12_Vector_baseIiSaIiEED2Ev:0000000000000000 _ZNSt12_Vector_baseIiSaIiEED1Ev /tmp/ccnpTmNT.s:266 .text._ZNSt6vectorIiSaIiEED2Ev:0000000000000000 _ZNSt6vectorIiSaIiEED2Ev /tmp/ccnpTmNT.s:266 .text._ZNSt6vectorIiSaIiEED2Ev:0000000000000000 _ZNSt6vectorIiSaIiEED1Ev /tmp/ccnpTmNT.s:289 .text._ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag:0000000000000000 _ZSt10__distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag /tmp/ccnpTmNT.s:307 .text._ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_:0000000000000000 _ZSt8distanceIPKiENSt15iterator_traitsIT_E15difference_typeES3_S3_ /tmp/ccnpTmNT.s:329 .text._ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv:0000000000000000 _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv /tmp/ccnpTmNT.s:344 .text._ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv:0000000000000000 _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv /tmp/ccnpTmNT.s:378 .text._ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm /tmp/ccnpTmNT.s:405 .text._ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_:0000000000000000 _ZNSt10_Iter_baseIPKiLb0EE7_S_baseES1_ /tmp/ccnpTmNT.s:420 .text._ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_:0000000000000000 _ZSt12__miter_baseIPKiENSt11_Miter_baseIT_E13iterator_typeES3_ /tmp/ccnpTmNT.s:440 .text._ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_:0000000000000000 _ZSt12__niter_baseIPKiENSt11_Niter_baseIT_E13iterator_typeES3_ /tmp/ccnpTmNT.s:459 .text._ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_:0000000000000000 _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ /tmp/ccnpTmNT.s:473 .text._ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_:0000000000000000 _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ /tmp/ccnpTmNT.s:492 .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/ccnpTmNT.s:544 .text._ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_:0000000000000000 _ZSt13__copy_move_aILb0EPKiPiET1_T0_S4_S3_ /tmp/ccnpTmNT.s:567 .text._ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_:0000000000000000 _ZSt14__copy_move_a2ILb0EPKiPiET1_T0_S4_S3_ /tmp/ccnpTmNT.s:617 .text._ZSt4copyIPKiPiET0_T_S4_S3_:0000000000000000 _ZSt4copyIPKiPiET0_T_S4_S3_ /tmp/ccnpTmNT.s:663 .text._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_:0000000000000000 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKiPiEET0_T_S6_S5_ /tmp/ccnpTmNT.s:683 .text._ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_:0000000000000000 _ZSt18uninitialized_copyIPKiPiET0_T_S4_S3_ /tmp/ccnpTmNT.s:705 .text._ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E:0000000000000000 _ZSt22__uninitialized_copy_aIPKiPiiET0_T_S4_S3_RSaIT1_E /tmp/ccnpTmNT.s:725 .text._ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag:0000000000000000 _ZNSt6vectorIiSaIiEE19_M_range_initializeIPKiEEvT_S5_St20forward_iterator_tag /tmp/ccnpTmNT.s:804 .text._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_:0000000000000000 _ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_ /tmp/ccnpTmNT.s:804 .text._ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_:0000000000000000 _ZNSt6vectorIiSaIiEEC1ESt16initializer_listIiERKS0_ /tmp/ccnpTmNT.s:896 .text:0000000000000034 _Z18initializationListv /tmp/ccnpTmNT.s:1010 .rodata:0000000000000000 ._85 /tmp/ccnpTmNT.s:986 .text:00000000000000b0 _GLOBAL__sub_I__Z18initializationListv .group:0000000000000000 _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC5ERKS0_ .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 GAS LISTING /tmp/ccnpTmNT.s page 67 __gxx_personality_v0 _Unwind_Resume _ZSt4cout _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc _ZNSolsEi _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ _ZNSolsEPFRSoS_E