RUN: /usr/share/launchpad-buildd/slavebin/slave-prep Forking launchpad-buildd slave process... Kernel version: Linux bos01-arm64-031 4.4.0-101-generic #124-Ubuntu SMP Fri Nov 10 18:30:44 UTC 2017 aarch64 Buildd toolchain package versions: launchpad-buildd_157 python-lpbuildd_157 sbuild_0.67.0-2ubuntu7.1 bzr-builder_0.7.3+bzr174~ppa13~ubuntu14.10.1 bzr_2.7.0-2ubuntu3.1 git-build-recipe_0.3.4~git201611291343.dcee459~ubuntu16.04.1 git_1:2.7.4-0ubuntu1.3 dpkg-dev_1.18.4ubuntu1.3 python-debian_0.1.27ubuntu2. Syncing the system clock with the buildd NTP service... 15 Jan 23:34:09 ntpdate[1819]: adjust time server 10.211.37.1 offset 0.094346 sec RUN: /usr/share/launchpad-buildd/slavebin/in-target unpack-chroot --backend=chroot --series=bionic --arch=armhf PACKAGEBUILD-14161738 /home/buildd/filecache-default/b70461af4419c13dbae7acd6fe74d075a1a9550f Creating target for build PACKAGEBUILD-14161738 RUN: /usr/share/launchpad-buildd/slavebin/in-target mount-chroot --backend=chroot --series=bionic --arch=armhf PACKAGEBUILD-14161738 Starting target for build PACKAGEBUILD-14161738 RUN: /usr/share/launchpad-buildd/slavebin/in-target override-sources-list --backend=chroot --series=bionic --arch=armhf PACKAGEBUILD-14161738 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic main' 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu bionic main' 'deb http://ftpmaster.internal/ubuntu bionic main restricted universe multiverse' 'deb http://ftpmaster.internal/ubuntu bionic-security main restricted universe multiverse' 'deb http://ftpmaster.internal/ubuntu bionic-updates main restricted universe multiverse' Overriding sources.list in build-PACKAGEBUILD-14161738 RUN: /usr/share/launchpad-buildd/slavebin/in-target add-trusted-keys --backend=chroot --series=bionic --arch=armhf PACKAGEBUILD-14161738 Adding trusted keys to build-PACKAGEBUILD-14161738 Warning: apt-key output should not be parsed (stdout is not a terminal) OK Warning: apt-key output should not be parsed (stdout is not a terminal) /etc/apt/trusted.gpg -------------------- pub rsa1024 2009-10-22 [SC] 60C3 1780 3A41 BA51 845E 371A 1E93 77A2 BA9E F27F uid [ unknown] Launchpad Toolchain builds /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg ------------------------------------------------------ pub rsa4096 2012-05-11 [SC] 790B C727 7767 219C 42C8 6F93 3B4F E6AC C0B2 1F32 uid [ unknown] Ubuntu Archive Automatic Signing Key (2012) /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg ------------------------------------------------------ pub rsa4096 2012-05-11 [SC] 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092 uid [ unknown] Ubuntu CD Image Automatic Signing Key (2012) RUN: /usr/share/launchpad-buildd/slavebin/in-target update-debian-chroot --backend=chroot --series=bionic --arch=armhf PACKAGEBUILD-14161738 Updating target for build PACKAGEBUILD-14161738 Get:1 http://ftpmaster.internal/ubuntu bionic InRelease [235 kB] Get:2 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease [15.4 kB] Get:3 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu bionic InRelease [15.4 kB] Get:4 http://ftpmaster.internal/ubuntu bionic-security InRelease [65.4 kB] Get:5 http://ftpmaster.internal/ubuntu bionic-updates InRelease [65.4 kB] Get:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf Packages [17.0 kB] Get:7 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main Translation-en [9132 B] Get:8 http://ftpmaster.internal/ubuntu bionic/main armhf Packages [968 kB] Get:9 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu bionic/main armhf Packages [4500 B] Get:10 http://ftpmaster.internal/ubuntu bionic/main Translation-en [518 kB] Get:11 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu bionic/main Translation-en [4552 B] Get:12 http://ftpmaster.internal/ubuntu bionic/restricted armhf Packages [5896 B] Get:13 http://ftpmaster.internal/ubuntu bionic/restricted Translation-en [2384 B] Get:14 http://ftpmaster.internal/ubuntu bionic/universe armhf Packages [8143 kB] Get:15 http://ftpmaster.internal/ubuntu bionic/universe Translation-en [4941 kB] Get:16 http://ftpmaster.internal/ubuntu bionic/multiverse armhf Packages [128 kB] Get:17 http://ftpmaster.internal/ubuntu bionic/multiverse Translation-en [109 kB] Fetched 15.2 MB in 6s (2229 kB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... Calculating upgrade... The following packages were automatically installed and are no longer required: g++-7 libasn1-8-heimdal libcurl3-gnutls libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libidn2-0 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libnghttp2-14 libpsl5 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules-db libstdc++-7-dev libunistring0 libustr-1.0-1 libwind0-heimdal Use 'sudo apt autoremove' to remove them. The following NEW packages will be installed: cpp-8 g++-8 gcc-8 gcc-8-base libasan5 libgcc-8-dev libnghttp2-14 libstdc++-8-dev libubsan1 The following packages will be upgraded: adduser apt apt-transport-https base-files base-passwd binutils binutils-arm-linux-gnueabihf binutils-common bsdutils build-essential coreutils cpp cpp-7 debconf debianutils dpkg dpkg-dev e2fslibs e2fsprogs fdisk findutils g++ g++-7 gcc gcc-7 gcc-7-base gnupg gnupg-agent gpgv init init-system-helpers libapparmor1 libapt-pkg5.0 libasan4 libasn1-8-heimdal libassuan0 libatomic1 libbinutils libblkid1 libc-bin libc-dev-bin libc6 libc6-dev libcap-ng0 libcap2 libcc1-0 libcilkrts5 libcomerr2 libcurl3-gnutls libdpkg-perl libfdisk1 libgcc-7-dev libgcc1 libgcrypt20 libgomp1 libgpg-error0 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed4 libhx509-5-heimdal libidn11 libidn2-0 libip4tc0 libkeyutils1 libkrb5-26-heimdal liblockfile-bin liblockfile1 libmount1 libnettle6 libnpth0 libp11-kit0 libpcre3 libperl5.26 libpng16-16 libpsl5 libroken18-heimdal libseccomp2 libselinux1 libsemanage-common libsemanage1 libsmartcols1 libsqlite3-0 libss2 libssl1.0.0 libstdc++-7-dev libstdc++6 libsystemd0 libtasn1-6 libubsan0 libudev1 libuuid1 libwind0-heimdal linux-libc-dev lsb-base mount multiarch-support openssl optipng perl perl-base perl-modules-5.26 pinentry-curses sensible-utils systemd systemd-sysv sysvinit-utils tzdata util-linux 110 upgraded, 9 newly installed, 0 to remove and 0 not upgraded. Need to get 148 MB of archives. After this operation, 326 MB of additional disk space will be used. Get:1 http://ftpmaster.internal/ubuntu bionic/main armhf perl-modules-5.26 all 5.26.1-3 [2761 kB] Get:2 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf gcc-8-base armhf 8-20180110-1ubuntu1 [17.9 kB] Get:3 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libgcc1 armhf 1:8-20180110-1ubuntu1 [37.1 kB] Get:4 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libstdc++6 armhf 8-20180110-1ubuntu1 [349 kB] Get:5 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libgomp1 armhf 8-20180110-1ubuntu1 [66.6 kB] Get:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libcc1-0 armhf 8-20180110-1ubuntu1 [32.4 kB] Get:7 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libatomic1 armhf 8-20180110-1ubuntu1 [7068 B] Get:8 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf cpp-8 armhf 8-20180110-1ubuntu1 [30.3 MB] Get:9 http://ftpmaster.internal/ubuntu bionic/main armhf libperl5.26 armhf 5.26.1-3 [2871 kB] Get:10 http://ftpmaster.internal/ubuntu bionic/main armhf perl armhf 5.26.1-3 [201 kB] Get:11 http://ftpmaster.internal/ubuntu bionic/main armhf perl-base armhf 5.26.1-3 [1289 kB] Get:12 http://ftpmaster.internal/ubuntu bionic/main armhf libc6-dev armhf 2.26-0ubuntu2 [1900 kB] Get:13 http://ftpmaster.internal/ubuntu bionic/main armhf libc-dev-bin armhf 2.26-0ubuntu2 [60.1 kB] Get:14 http://ftpmaster.internal/ubuntu bionic/main armhf linux-libc-dev armhf 4.13.0-25.29 [944 kB] Get:15 http://ftpmaster.internal/ubuntu bionic/main armhf libc6 armhf 2.26-0ubuntu2 [2212 kB] Get:16 http://ftpmaster.internal/ubuntu bionic/main armhf init-system-helpers all 1.51 [37.3 kB] Get:17 http://ftpmaster.internal/ubuntu bionic/main armhf base-files armhf 10ubuntu1 [55.9 kB] Get:18 http://ftpmaster.internal/ubuntu bionic/main armhf bsdutils armhf 1:2.30.2-0.1ubuntu1 [55.4 kB] Get:19 http://ftpmaster.internal/ubuntu bionic/main armhf coreutils armhf 8.26-3ubuntu4 [1111 kB] Get:20 http://ftpmaster.internal/ubuntu bionic/main armhf debianutils armhf 4.8.4 [84.5 kB] Get:21 http://ftpmaster.internal/ubuntu bionic/main armhf dpkg armhf 1.19.0.4ubuntu1 [1100 kB] Get:22 http://ftpmaster.internal/ubuntu bionic/main armhf e2fslibs armhf 1.43.8-1ubuntu1 [144 kB] Get:23 http://ftpmaster.internal/ubuntu bionic/main armhf e2fsprogs armhf 1.43.8-1ubuntu1 [479 kB] Get:24 http://ftpmaster.internal/ubuntu bionic/main armhf findutils armhf 4.6.0+git+20170828-2 [277 kB] Get:25 http://ftpmaster.internal/ubuntu bionic/main armhf libuuid1 armhf 2.30.2-0.1ubuntu1 [14.5 kB] Get:26 http://ftpmaster.internal/ubuntu bionic/main armhf libblkid1 armhf 2.30.2-0.1ubuntu1 [106 kB] Get:27 http://ftpmaster.internal/ubuntu bionic/main armhf libsmartcols1 armhf 2.30.2-0.1ubuntu1 [68.7 kB] Get:28 http://ftpmaster.internal/ubuntu bionic/main armhf libfdisk1 armhf 2.30.2-0.1ubuntu1 [144 kB] Get:29 http://ftpmaster.internal/ubuntu bionic/main armhf libpcre3 armhf 2:8.39-8 [209 kB] Get:30 http://ftpmaster.internal/ubuntu bionic/main armhf libselinux1 armhf 2.7-2 [59.1 kB] Get:31 http://ftpmaster.internal/ubuntu bionic/main armhf libmount1 armhf 2.30.2-0.1ubuntu1 [116 kB] Get:32 http://ftpmaster.internal/ubuntu bionic/main armhf fdisk armhf 2.30.2-0.1ubuntu1 [96.6 kB] Get:33 http://ftpmaster.internal/ubuntu bionic/main armhf util-linux armhf 2.30.2-0.1ubuntu1 [823 kB] Get:34 http://ftpmaster.internal/ubuntu bionic/main armhf base-passwd armhf 3.5.44 [45.9 kB] Get:35 http://ftpmaster.internal/ubuntu bionic/main armhf libc-bin armhf 2.26-0ubuntu2 [477 kB] Get:36 http://ftpmaster.internal/ubuntu bionic/main armhf sysvinit-utils armhf 2.88dsf-59.10ubuntu1 [17.2 kB] Get:37 http://ftpmaster.internal/ubuntu bionic/main armhf libudev1 armhf 235-3ubuntu3 [49.4 kB] Get:38 http://ftpmaster.internal/ubuntu bionic/main armhf libapt-pkg5.0 armhf 1.6~alpha5 [709 kB] Get:39 http://ftpmaster.internal/ubuntu bionic/main armhf debconf all 1.5.65 [124 kB] Get:40 http://ftpmaster.internal/ubuntu bionic/main armhf adduser all 3.116ubuntu1 [163 kB] Get:41 http://ftpmaster.internal/ubuntu bionic/main armhf libgpg-error0 armhf 1.27-5 [32.4 kB] Get:42 http://ftpmaster.internal/ubuntu bionic/main armhf libgcrypt20 armhf 1.8.1-4 [363 kB] Get:43 http://ftpmaster.internal/ubuntu bionic/main armhf gpgv armhf 2.1.15-1ubuntu8 [157 kB] Get:44 http://ftpmaster.internal/ubuntu bionic/main armhf libseccomp2 armhf 2.3.1-2.1ubuntu3 [29.9 kB] Get:45 http://ftpmaster.internal/ubuntu bionic/main armhf apt armhf 1.6~alpha5 [1104 kB] Get:46 http://ftpmaster.internal/ubuntu bionic/main armhf libapparmor1 armhf 2.11.0-2ubuntu18 [24.6 kB] Get:47 http://ftpmaster.internal/ubuntu bionic/main armhf libcap2 armhf 1:2.25-1.2 [11.7 kB] Get:48 http://ftpmaster.internal/ubuntu bionic/main armhf libidn11 armhf 1.33-2.1 [42.7 kB] Get:49 http://ftpmaster.internal/ubuntu bionic/main armhf libip4tc0 armhf 1.6.1-2ubuntu2 [17.8 kB] Get:50 http://ftpmaster.internal/ubuntu bionic/main armhf mount armhf 2.30.2-0.1ubuntu1 [104 kB] Get:51 http://ftpmaster.internal/ubuntu bionic/main armhf systemd armhf 235-3ubuntu3 [2679 kB] Get:52 http://ftpmaster.internal/ubuntu bionic/main armhf libsystemd0 armhf 235-3ubuntu3 [178 kB] Get:53 http://ftpmaster.internal/ubuntu bionic/main armhf init armhf 1.51 [5864 B] Get:54 http://ftpmaster.internal/ubuntu bionic/main armhf systemd-sysv armhf 235-3ubuntu3 [13.1 kB] Get:55 http://ftpmaster.internal/ubuntu bionic/main armhf libcap-ng0 armhf 0.7.7-3.1 [9816 B] Get:56 http://ftpmaster.internal/ubuntu bionic/main armhf libcomerr2 armhf 1.43.8-1ubuntu1 [10.4 kB] Get:57 http://ftpmaster.internal/ubuntu bionic/main armhf libsemanage-common all 2.7-2 [6916 B] Get:58 http://ftpmaster.internal/ubuntu bionic/main armhf libsemanage1 armhf 2.7-2 [72.3 kB] Get:59 http://ftpmaster.internal/ubuntu bionic/main armhf libss2 armhf 1.43.8-1ubuntu1 [9368 B] Get:60 http://ftpmaster.internal/ubuntu bionic/main armhf libnettle6 armhf 3.3-2 [106 kB] Get:61 http://ftpmaster.internal/ubuntu bionic/main armhf libhogweed4 armhf 3.3-2 [126 kB] Get:62 http://ftpmaster.internal/ubuntu bionic/main armhf libp11-kit0 armhf 0.23.9-2 [162 kB] Get:63 http://ftpmaster.internal/ubuntu bionic/main armhf libtasn1-6 armhf 4.12-3 [31.2 kB] Get:64 http://ftpmaster.internal/ubuntu bionic/main armhf g++-7 armhf 7.2.0-18ubuntu2 [6034 kB] Get:65 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu bionic/main armhf cpp armhf 4:8-20121108-1ubuntu0.2 [42.2 kB] Get:66 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libasan5 armhf 8-20180110-1ubuntu1 [349 kB] Get:67 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libubsan1 armhf 8-20180110-1ubuntu1 [109 kB] Get:68 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libgcc-8-dev armhf 8-20180110-1ubuntu1 [629 kB] Get:69 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf gcc-8 armhf 8-20180110-1ubuntu1 [30.1 MB] Get:70 http://ftpmaster.internal/ubuntu bionic/main armhf gcc-7 armhf 7.2.0-18ubuntu2 [5925 kB] Get:71 http://ftpmaster.internal/ubuntu bionic/main armhf cpp-7 armhf 7.2.0-18ubuntu2 [5289 kB] Get:72 http://ftpmaster.internal/ubuntu bionic/main armhf libbinutils armhf 2.29.1-12ubuntu1 [307 kB] Get:73 http://ftpmaster.internal/ubuntu bionic/main armhf binutils armhf 2.29.1-12ubuntu1 [3372 B] Get:74 http://ftpmaster.internal/ubuntu bionic/main armhf binutils-common armhf 2.29.1-12ubuntu1 [190 kB] Get:75 http://ftpmaster.internal/ubuntu bionic/main armhf binutils-arm-linux-gnueabihf armhf 2.29.1-12ubuntu1 [2188 kB] Get:76 http://ftpmaster.internal/ubuntu bionic/main armhf libasan4 armhf 7.2.0-18ubuntu2 [328 kB] Get:77 http://ftpmaster.internal/ubuntu bionic/main armhf libubsan0 armhf 7.2.0-18ubuntu2 [108 kB] Get:78 http://ftpmaster.internal/ubuntu bionic/main armhf libcilkrts5 armhf 7.2.0-18ubuntu2 [36.0 kB] Get:79 http://ftpmaster.internal/ubuntu bionic/main armhf libstdc++-7-dev armhf 7.2.0-18ubuntu2 [1529 kB] Get:80 http://ftpmaster.internal/ubuntu bionic/main armhf libgcc-7-dev armhf 7.2.0-18ubuntu2 [709 kB] Get:81 http://ftpmaster.internal/ubuntu bionic/main armhf gcc-7-base armhf 7.2.0-18ubuntu2 [19.1 kB] Get:82 http://ftpmaster.internal/ubuntu bionic/main armhf lsb-base all 9.20170808ubuntu1 [12.5 kB] Get:83 http://ftpmaster.internal/ubuntu bionic/main armhf sensible-utils all 0.0.11 [14.8 kB] Get:84 http://ftpmaster.internal/ubuntu bionic/main armhf libassuan0 armhf 2.5.1-1 [28.1 kB] Get:85 http://ftpmaster.internal/ubuntu bionic/main armhf pinentry-curses armhf 1.0.0-3 [30.4 kB] Get:86 http://ftpmaster.internal/ubuntu bionic/main armhf libnpth0 armhf 1.5-3 [6632 B] Get:87 http://ftpmaster.internal/ubuntu bionic/main armhf gnupg armhf 2.1.15-1ubuntu8 [711 kB] Get:88 http://ftpmaster.internal/ubuntu bionic/main armhf gnupg-agent armhf 2.1.15-1ubuntu8 [211 kB] Get:89 http://ftpmaster.internal/ubuntu bionic/main armhf libsqlite3-0 armhf 3.21.0-1 [417 kB] Get:90 http://ftpmaster.internal/ubuntu bionic/main armhf libroken18-heimdal armhf 7.5.0+dfsg-1 [34.1 kB] Get:91 http://ftpmaster.internal/ubuntu bionic/main armhf libasn1-8-heimdal armhf 7.5.0+dfsg-1 [136 kB] Get:92 http://ftpmaster.internal/ubuntu bionic/main armhf libheimbase1-heimdal armhf 7.5.0+dfsg-1 [24.1 kB] Get:93 http://ftpmaster.internal/ubuntu bionic/main armhf libhcrypto4-heimdal armhf 7.5.0+dfsg-1 [76.5 kB] Get:94 http://ftpmaster.internal/ubuntu bionic/main armhf libwind0-heimdal armhf 7.5.0+dfsg-1 [47.2 kB] Get:95 http://ftpmaster.internal/ubuntu bionic/main armhf libhx509-5-heimdal armhf 7.5.0+dfsg-1 [87.9 kB] Get:96 http://ftpmaster.internal/ubuntu bionic/main armhf libkrb5-26-heimdal armhf 7.5.0+dfsg-1 [168 kB] Get:97 http://ftpmaster.internal/ubuntu bionic/main armhf libheimntlm0-heimdal armhf 7.5.0+dfsg-1 [13.1 kB] Get:98 http://ftpmaster.internal/ubuntu bionic/main armhf libgssapi3-heimdal armhf 7.5.0+dfsg-1 [78.8 kB] Get:99 http://ftpmaster.internal/ubuntu bionic/main armhf libssl1.0.0 armhf 1.0.2g-1ubuntu14 [706 kB] Get:100 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu bionic/main armhf gcc armhf 4:8-20121108-1ubuntu0.2 [5180 B] Get:101 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf libstdc++-8-dev armhf 8-20180110-1ubuntu1 [1573 kB] Get:102 http://ftpmaster.internal/ubuntu bionic/main armhf multiarch-support armhf 2.26-0ubuntu2 [6832 B] Get:103 http://ftpmaster.internal/ubuntu bionic/main armhf openssl armhf 1.0.2g-1ubuntu14 [477 kB] Get:104 http://ftpmaster.internal/ubuntu bionic/main armhf tzdata all 2017c-1 [188 kB] Get:105 http://ftpmaster.internal/ubuntu bionic/main armhf libidn2-0 armhf 2.0.4-1 [88.2 kB] Get:106 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main armhf g++-8 armhf 8-20180110-1ubuntu1 [32.7 MB] Get:107 http://ftpmaster.internal/ubuntu bionic/main armhf libkeyutils1 armhf 1.5.9-9.2ubuntu1 [8380 B] Get:108 http://ftpmaster.internal/ubuntu bionic/main armhf libpng16-16 armhf 1.6.34-1 [159 kB] Get:109 http://ftpmaster.internal/ubuntu bionic/universe armhf apt-transport-https all 1.6~alpha5 [1692 B] Get:110 http://ftpmaster.internal/ubuntu bionic/main armhf dpkg-dev all 1.19.0.4ubuntu1 [607 kB] Get:111 http://ftpmaster.internal/ubuntu bionic/main armhf libdpkg-perl all 1.19.0.4ubuntu1 [211 kB] Get:112 http://ftpmaster.internal/ubuntu bionic/main armhf build-essential armhf 12.4ubuntu1 [4752 B] Get:113 http://ftpmaster.internal/ubuntu bionic/main armhf libnghttp2-14 armhf 1.29.0-1 [67.1 kB] Get:114 http://ftpmaster.internal/ubuntu bionic/main armhf libpsl5 armhf 0.19.1-4 [39.9 kB] Get:115 http://ftpmaster.internal/ubuntu bionic/main armhf libcurl3-gnutls armhf 7.57.0-1ubuntu1 [180 kB] Get:116 http://ftpmaster.internal/ubuntu bionic/main armhf liblockfile-bin armhf 1.14-1.1 [10.9 kB] Get:117 http://ftpmaster.internal/ubuntu bionic/main armhf liblockfile1 armhf 1.14-1.1 [5784 B] Get:118 http://ftpmaster.internal/ubuntu bionic/main armhf optipng armhf 0.7.6-1.1 [80.6 kB] Get:119 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu bionic/main armhf g++ armhf 4:8-20121108-1ubuntu0.2 [1540 B] debconf: delaying package configuration, since apt-utils is not installed Fetched 148 MB in 5s (24.7 MB/s) (Reading database ... 12457 files and directories currently installed.) Preparing to unpack .../perl_5.26.1-3_armhf.deb ... Unpacking perl (5.26.1-3) over (5.26.0-8ubuntu1) ... Preparing to unpack .../perl-modules-5.26_5.26.1-3_all.deb ... Unpacking perl-modules-5.26 (5.26.1-3) over (5.26.0-8ubuntu1) ... Preparing to unpack .../libperl5.26_5.26.1-3_armhf.deb ... Unpacking libperl5.26:armhf (5.26.1-3) over (5.26.0-8ubuntu1) ... Preparing to unpack .../perl-base_5.26.1-3_armhf.deb ... Unpacking perl-base (5.26.1-3) over (5.26.0-8ubuntu1) ... Setting up perl-base (5.26.1-3) ... (Reading database ... 12457 files and directories currently installed.) Preparing to unpack .../libc6-dev_2.26-0ubuntu2_armhf.deb ... Unpacking libc6-dev:armhf (2.26-0ubuntu2) over (2.26-0ubuntu1) ... Preparing to unpack .../libc-dev-bin_2.26-0ubuntu2_armhf.deb ... Unpacking libc-dev-bin (2.26-0ubuntu2) over (2.26-0ubuntu1) ... Preparing to unpack .../linux-libc-dev_4.13.0-25.29_armhf.deb ... Unpacking linux-libc-dev:armhf (4.13.0-25.29) over (4.13.0-11.12) ... Selecting previously unselected package gcc-8-base:armhf. Preparing to unpack .../gcc-8-base_8-20180110-1ubuntu1_armhf.deb ... Unpacking gcc-8-base:armhf (8-20180110-1ubuntu1) ... Setting up gcc-8-base:armhf (8-20180110-1ubuntu1) ... (Reading database ... 12464 files and directories currently installed.) Preparing to unpack .../libgcc1_1%3a8-20180110-1ubuntu1_armhf.deb ... Unpacking libgcc1:armhf (1:8-20180110-1ubuntu1) over (1:7.2.0-6ubuntu1) ... Setting up libgcc1:armhf (1:8-20180110-1ubuntu1) ... (Reading database ... 12464 files and directories currently installed.) Preparing to unpack .../libc6_2.26-0ubuntu2_armhf.deb ... Unpacking libc6:armhf (2.26-0ubuntu2) over (2.26-0ubuntu1) ... Setting up libc6:armhf (2.26-0ubuntu2) ... (Reading database ... 12464 files and directories currently installed.) Preparing to unpack .../init-system-helpers_1.51_all.deb ... Unpacking init-system-helpers (1.51) over (1.49ubuntu1) ... Setting up init-system-helpers (1.51) ... (Reading database ... 12464 files and directories currently installed.) Preparing to unpack .../base-files_10ubuntu1_armhf.deb ... Unpacking base-files (10ubuntu1) over (9.6ubuntu101) ... Setting up base-files (10ubuntu1) ... Installing new version of config file /etc/debian_version ... Installing new version of config file /etc/issue ... Installing new version of config file /etc/issue.net ... Installing new version of config file /etc/lsb-release ... (Reading database ... 12464 files and directories currently installed.) Preparing to unpack .../bsdutils_1%3a2.30.2-0.1ubuntu1_armhf.deb ... Unpacking bsdutils (1:2.30.2-0.1ubuntu1) over (1:2.30.1-0ubuntu4) ... Setting up bsdutils (1:2.30.2-0.1ubuntu1) ... (Reading database ... 12464 files and directories currently installed.) Preparing to unpack .../coreutils_8.26-3ubuntu4_armhf.deb ... Unpacking coreutils (8.26-3ubuntu4) over (8.26-3ubuntu3) ... Setting up coreutils (8.26-3ubuntu4) ... (Reading database ... 12464 files and directories currently installed.) Preparing to unpack .../debianutils_4.8.4_armhf.deb ... Unpacking debianutils (4.8.4) over (4.8.2) ... Setting up debianutils (4.8.4) ... (Reading database ... 12464 files and directories currently installed.) Preparing to unpack .../dpkg_1.19.0.4ubuntu1_armhf.deb ... Unpacking dpkg (1.19.0.4ubuntu1) over (1.18.24ubuntu1) ... Setting up dpkg (1.19.0.4ubuntu1) ... Installing new version of config file /etc/alternatives/README ... Installing new version of config file /etc/cron.daily/dpkg ... Installing new version of config file /etc/logrotate.d/dpkg ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../e2fslibs_1.43.8-1ubuntu1_armhf.deb ... Unpacking e2fslibs:armhf (1.43.8-1ubuntu1) over (1.43.5-1) ... Setting up e2fslibs:armhf (1.43.8-1ubuntu1) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../e2fsprogs_1.43.8-1ubuntu1_armhf.deb ... Unpacking e2fsprogs (1.43.8-1ubuntu1) over (1.43.5-1) ... Setting up e2fsprogs (1.43.8-1ubuntu1) ... Installing new version of config file /etc/mke2fs.conf ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../findutils_4.6.0+git+20170828-2_armhf.deb ... Unpacking findutils (4.6.0+git+20170828-2) over (4.6.0+git+20170729-2) ... Setting up findutils (4.6.0+git+20170828-2) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../libuuid1_2.30.2-0.1ubuntu1_armhf.deb ... Unpacking libuuid1:armhf (2.30.2-0.1ubuntu1) over (2.30.1-0ubuntu4) ... Setting up libuuid1:armhf (2.30.2-0.1ubuntu1) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../libblkid1_2.30.2-0.1ubuntu1_armhf.deb ... Unpacking libblkid1:armhf (2.30.2-0.1ubuntu1) over (2.30.1-0ubuntu4) ... Setting up libblkid1:armhf (2.30.2-0.1ubuntu1) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../libsmartcols1_2.30.2-0.1ubuntu1_armhf.deb ... Unpacking libsmartcols1:armhf (2.30.2-0.1ubuntu1) over (2.30.1-0ubuntu4) ... Setting up libsmartcols1:armhf (2.30.2-0.1ubuntu1) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../libfdisk1_2.30.2-0.1ubuntu1_armhf.deb ... Unpacking libfdisk1:armhf (2.30.2-0.1ubuntu1) over (2.30.1-0ubuntu4) ... Setting up libfdisk1:armhf (2.30.2-0.1ubuntu1) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../libpcre3_2%3a8.39-8_armhf.deb ... Unpacking libpcre3:armhf (2:8.39-8) over (2:8.39-4) ... Setting up libpcre3:armhf (2:8.39-8) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../libselinux1_2.7-2_armhf.deb ... Unpacking libselinux1:armhf (2.7-2) over (2.7-1) ... Setting up libselinux1:armhf (2.7-2) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../libmount1_2.30.2-0.1ubuntu1_armhf.deb ... Unpacking libmount1:armhf (2.30.2-0.1ubuntu1) over (2.30.1-0ubuntu4) ... Setting up libmount1:armhf (2.30.2-0.1ubuntu1) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../fdisk_2.30.2-0.1ubuntu1_armhf.deb ... Unpacking fdisk (2.30.2-0.1ubuntu1) over (2.30.1-0ubuntu4) ... Setting up fdisk (2.30.2-0.1ubuntu1) ... (Reading database ... 12466 files and directories currently installed.) Preparing to unpack .../util-linux_2.30.2-0.1ubuntu1_armhf.deb ... Unpacking util-linux (2.30.2-0.1ubuntu1) over (2.30.1-0ubuntu4) ... Setting up util-linux (2.30.2-0.1ubuntu1) ... (Reading database ... 12467 files and directories currently installed.) Preparing to unpack .../base-passwd_3.5.44_armhf.deb ... Unpacking base-passwd (3.5.44) over (3.5.43) ... Setting up base-passwd (3.5.44) ... (Reading database ... 12467 files and directories currently installed.) Preparing to unpack .../libc-bin_2.26-0ubuntu2_armhf.deb ... Unpacking libc-bin (2.26-0ubuntu2) over (2.26-0ubuntu1) ... Setting up libc-bin (2.26-0ubuntu2) ... (Reading database ... 12467 files and directories currently installed.) Preparing to unpack .../sysvinit-utils_2.88dsf-59.10ubuntu1_armhf.deb ... Unpacking sysvinit-utils (2.88dsf-59.10ubuntu1) over (2.88dsf-59.8git1) ... Setting up sysvinit-utils (2.88dsf-59.10ubuntu1) ... (Reading database ... 12467 files and directories currently installed.) Preparing to unpack .../libstdc++6_8-20180110-1ubuntu1_armhf.deb ... Unpacking libstdc++6:armhf (8-20180110-1ubuntu1) over (7.2.0-6ubuntu1) ... Setting up libstdc++6:armhf (8-20180110-1ubuntu1) ... (Reading database ... 12467 files and directories currently installed.) Preparing to unpack .../libudev1_235-3ubuntu3_armhf.deb ... Unpacking libudev1:armhf (235-3ubuntu3) over (234-2ubuntu10) ... Setting up libudev1:armhf (235-3ubuntu3) ... (Reading database ... 12467 files and directories currently installed.) Preparing to unpack .../libapt-pkg5.0_1.6~alpha5_armhf.deb ... Unpacking libapt-pkg5.0:armhf (1.6~alpha5) over (1.5~rc4) ... Setting up libapt-pkg5.0:armhf (1.6~alpha5) ... (Reading database ... 12467 files and directories currently installed.) Preparing to unpack .../debconf_1.5.65_all.deb ... Unpacking debconf (1.5.65) over (1.5.63) ... Setting up debconf (1.5.65) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../adduser_3.116ubuntu1_all.deb ... Unpacking adduser (3.116ubuntu1) over (3.113+nmu3ubuntu5) ... Setting up adduser (3.116ubuntu1) ... (Reading database ... 12459 files and directories currently installed.) Preparing to unpack .../libgpg-error0_1.27-5_armhf.deb ... Unpacking libgpg-error0:armhf (1.27-5) over (1.27-3) ... Setting up libgpg-error0:armhf (1.27-5) ... (Reading database ... 12459 files and directories currently installed.) Preparing to unpack .../libgcrypt20_1.8.1-4_armhf.deb ... Unpacking libgcrypt20:armhf (1.8.1-4) over (1.7.8-2ubuntu1) ... Setting up libgcrypt20:armhf (1.8.1-4) ... (Reading database ... 12459 files and directories currently installed.) Preparing to unpack .../gpgv_2.1.15-1ubuntu8_armhf.deb ... Unpacking gpgv (2.1.15-1ubuntu8) over (2.1.15-1ubuntu7) ... Setting up gpgv (2.1.15-1ubuntu8) ... (Reading database ... 12459 files and directories currently installed.) Preparing to unpack .../libseccomp2_2.3.1-2.1ubuntu3_armhf.deb ... Unpacking libseccomp2:armhf (2.3.1-2.1ubuntu3) over (2.3.1-2.1ubuntu2) ... Setting up libseccomp2:armhf (2.3.1-2.1ubuntu3) ... (Reading database ... 12459 files and directories currently installed.) Preparing to unpack .../apt_1.6~alpha5_armhf.deb ... Unpacking apt (1.6~alpha5) over (1.5~rc4) ... Setting up apt (1.6~alpha5) ... (Reading database ... 12455 files and directories currently installed.) Preparing to unpack .../libapparmor1_2.11.0-2ubuntu18_armhf.deb ... Unpacking libapparmor1:armhf (2.11.0-2ubuntu18) over (2.11.0-2ubuntu17) ... Preparing to unpack .../libcap2_1%3a2.25-1.2_armhf.deb ... Unpacking libcap2:armhf (1:2.25-1.2) over (1:2.25-1) ... Preparing to unpack .../libidn11_1.33-2.1_armhf.deb ... Unpacking libidn11:armhf (1.33-2.1) over (1.33-2) ... Setting up libidn11:armhf (1.33-2.1) ... (Reading database ... 12455 files and directories currently installed.) Preparing to unpack .../libip4tc0_1.6.1-2ubuntu2_armhf.deb ... Unpacking libip4tc0:armhf (1.6.1-2ubuntu2) over (1.6.1-2ubuntu1) ... Preparing to unpack .../mount_2.30.2-0.1ubuntu1_armhf.deb ... Unpacking mount (2.30.2-0.1ubuntu1) over (2.30.1-0ubuntu4) ... Preparing to unpack .../systemd_235-3ubuntu3_armhf.deb ... Unpacking systemd (235-3ubuntu3) over (234-2ubuntu10) ... Preparing to unpack .../libsystemd0_235-3ubuntu3_armhf.deb ... Unpacking libsystemd0:armhf (235-3ubuntu3) over (234-2ubuntu10) ... Setting up libsystemd0:armhf (235-3ubuntu3) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../archives/init_1.51_armhf.deb ... Unpacking init (1.51) over (1.49ubuntu1) ... Setting up libapparmor1:armhf (2.11.0-2ubuntu18) ... Setting up libcap2:armhf (1:2.25-1.2) ... Setting up libip4tc0:armhf (1.6.1-2ubuntu2) ... Setting up mount (2.30.2-0.1ubuntu1) ... Setting up systemd (235-3ubuntu3) ... Installing new version of config file /etc/systemd/journald.conf ... Installing new version of config file /etc/systemd/system.conf ... Removing empty /etc/rc.local Removed /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service. Removing user `systemd-bus-proxy' ... Warning: group `systemd-bus-proxy' has no more members. Done. (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../systemd-sysv_235-3ubuntu3_armhf.deb ... Unpacking systemd-sysv (235-3ubuntu3) over (234-2ubuntu10) ... Preparing to unpack .../libcap-ng0_0.7.7-3.1_armhf.deb ... Unpacking libcap-ng0:armhf (0.7.7-3.1) over (0.7.7-3build1) ... Setting up libcap-ng0:armhf (0.7.7-3.1) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../libcomerr2_1.43.8-1ubuntu1_armhf.deb ... Unpacking libcomerr2:armhf (1.43.8-1ubuntu1) over (1.43.5-1) ... Setting up libcomerr2:armhf (1.43.8-1ubuntu1) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../libsemanage-common_2.7-2_all.deb ... Unpacking libsemanage-common (2.7-2) over (2.7-1) ... Setting up libsemanage-common (2.7-2) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../libsemanage1_2.7-2_armhf.deb ... Unpacking libsemanage1:armhf (2.7-2) over (2.7-1) ... Setting up libsemanage1:armhf (2.7-2) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../libss2_1.43.8-1ubuntu1_armhf.deb ... Unpacking libss2:armhf (1.43.8-1ubuntu1) over (1.43.5-1) ... Setting up libss2:armhf (1.43.8-1ubuntu1) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../libnettle6_3.3-2_armhf.deb ... Unpacking libnettle6:armhf (3.3-2) over (3.3-1) ... Setting up libnettle6:armhf (3.3-2) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../libhogweed4_3.3-2_armhf.deb ... Unpacking libhogweed4:armhf (3.3-2) over (3.3-1) ... Setting up libhogweed4:armhf (3.3-2) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../libp11-kit0_0.23.9-2_armhf.deb ... Unpacking libp11-kit0:armhf (0.23.9-2) over (0.23.7-3) ... Setting up libp11-kit0:armhf (0.23.9-2) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../libtasn1-6_4.12-3_armhf.deb ... Unpacking libtasn1-6:armhf (4.12-3) over (4.12-2.1) ... Setting up libtasn1-6:armhf (4.12-3) ... (Reading database ... 12461 files and directories currently installed.) Preparing to unpack .../00-libgomp1_8-20180110-1ubuntu1_armhf.deb ... Unpacking libgomp1:armhf (8-20180110-1ubuntu1) over (7.2.0-6ubuntu1) ... Preparing to unpack .../01-g++-7_7.2.0-18ubuntu2_armhf.deb ... Unpacking g++-7 (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../02-gcc-7_7.2.0-18ubuntu2_armhf.deb ... Unpacking gcc-7 (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../03-cpp-7_7.2.0-18ubuntu2_armhf.deb ... Unpacking cpp-7 (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../04-libcc1-0_8-20180110-1ubuntu1_armhf.deb ... Unpacking libcc1-0:armhf (8-20180110-1ubuntu1) over (7.2.0-6ubuntu1) ... Preparing to unpack .../05-libbinutils_2.29.1-12ubuntu1_armhf.deb ... Unpacking libbinutils:armhf (2.29.1-12ubuntu1) over (2.29.1-1ubuntu1) ... Preparing to unpack .../06-binutils_2.29.1-12ubuntu1_armhf.deb ... Unpacking binutils (2.29.1-12ubuntu1) over (2.29.1-1ubuntu1) ... Preparing to unpack .../07-binutils-common_2.29.1-12ubuntu1_armhf.deb ... Unpacking binutils-common:armhf (2.29.1-12ubuntu1) over (2.29.1-1ubuntu1) ... Preparing to unpack .../08-binutils-arm-linux-gnueabihf_2.29.1-12ubuntu1_armhf.deb ... Unpacking binutils-arm-linux-gnueabihf (2.29.1-12ubuntu1) over (2.29.1-1ubuntu1) ... Preparing to unpack .../09-libatomic1_8-20180110-1ubuntu1_armhf.deb ... Unpacking libatomic1:armhf (8-20180110-1ubuntu1) over (7.2.0-6ubuntu1) ... Preparing to unpack .../10-libasan4_7.2.0-18ubuntu2_armhf.deb ... Unpacking libasan4:armhf (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../11-libubsan0_7.2.0-18ubuntu2_armhf.deb ... Unpacking libubsan0:armhf (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../12-libcilkrts5_7.2.0-18ubuntu2_armhf.deb ... Unpacking libcilkrts5:armhf (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../13-libstdc++-7-dev_7.2.0-18ubuntu2_armhf.deb ... Unpacking libstdc++-7-dev:armhf (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../14-libgcc-7-dev_7.2.0-18ubuntu2_armhf.deb ... Unpacking libgcc-7-dev:armhf (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../15-gcc-7-base_7.2.0-18ubuntu2_armhf.deb ... Unpacking gcc-7-base:armhf (7.2.0-18ubuntu2) over (7.2.0-6ubuntu1) ... Preparing to unpack .../16-lsb-base_9.20170808ubuntu1_all.deb ... Unpacking lsb-base (9.20170808ubuntu1) over (9.20160110ubuntu5) ... Preparing to unpack .../17-sensible-utils_0.0.11_all.deb ... Unpacking sensible-utils (0.0.11) over (0.0.10) ... Preparing to unpack .../18-libassuan0_2.5.1-1_armhf.deb ... Unpacking libassuan0:armhf (2.5.1-1) over (2.4.3-3) ... Preparing to unpack .../19-pinentry-curses_1.0.0-3_armhf.deb ... Unpacking pinentry-curses (1.0.0-3) over (1.0.0-2) ... Preparing to unpack .../20-libnpth0_1.5-3_armhf.deb ... Unpacking libnpth0:armhf (1.5-3) over (1.5-2) ... Preparing to unpack .../21-gnupg_2.1.15-1ubuntu8_armhf.deb ... Unpacking gnupg (2.1.15-1ubuntu8) over (2.1.15-1ubuntu7) ... Preparing to unpack .../22-gnupg-agent_2.1.15-1ubuntu8_armhf.deb ... Unpacking gnupg-agent (2.1.15-1ubuntu8) over (2.1.15-1ubuntu7) ... Preparing to unpack .../23-libsqlite3-0_3.21.0-1_armhf.deb ... Unpacking libsqlite3-0:armhf (3.21.0-1) over (3.19.3-3) ... Preparing to unpack .../24-libroken18-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libroken18-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../25-libasn1-8-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libasn1-8-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../26-libheimbase1-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libheimbase1-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../27-libhcrypto4-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libhcrypto4-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../28-libwind0-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libwind0-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../29-libhx509-5-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libhx509-5-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../30-libkrb5-26-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libkrb5-26-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../31-libheimntlm0-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libheimntlm0-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../32-libgssapi3-heimdal_7.5.0+dfsg-1_armhf.deb ... Unpacking libgssapi3-heimdal:armhf (7.5.0+dfsg-1) over (7.4.0.dfsg.1-2) ... Preparing to unpack .../33-libssl1.0.0_1.0.2g-1ubuntu14_armhf.deb ... Unpacking libssl1.0.0:armhf (1.0.2g-1ubuntu14) over (1.0.2g-1ubuntu13) ... Preparing to unpack .../34-multiarch-support_2.26-0ubuntu2_armhf.deb ... Unpacking multiarch-support (2.26-0ubuntu2) over (2.26-0ubuntu1) ... Preparing to unpack .../35-openssl_1.0.2g-1ubuntu14_armhf.deb ... Unpacking openssl (1.0.2g-1ubuntu14) over (1.0.2g-1ubuntu13) ... Preparing to unpack .../36-tzdata_2017c-1_all.deb ... Unpacking tzdata (2017c-1) over (2017b-2) ... Preparing to unpack .../37-libidn2-0_2.0.4-1_armhf.deb ... Unpacking libidn2-0:armhf (2.0.4-1) over (2.0.2-5) ... Preparing to unpack .../38-libkeyutils1_1.5.9-9.2ubuntu1_armhf.deb ... Unpacking libkeyutils1:armhf (1.5.9-9.2ubuntu1) over (1.5.9-9ubuntu1) ... Preparing to unpack .../39-libpng16-16_1.6.34-1_armhf.deb ... Unpacking libpng16-16:armhf (1.6.34-1) over (1.6.32-2) ... Preparing to unpack .../40-apt-transport-https_1.6~alpha5_all.deb ... Unpacking apt-transport-https (1.6~alpha5) over (1.5~rc4) ... Selecting previously unselected package cpp-8. Preparing to unpack .../41-cpp-8_8-20180110-1ubuntu1_armhf.deb ... Unpacking cpp-8 (8-20180110-1ubuntu1) ... Preparing to unpack .../42-cpp_4%3a8-20121108-1ubuntu0.2_armhf.deb ... Unpacking cpp (4:8-20121108-1ubuntu0.2) over (4:7.2.0-1ubuntu1) ... Selecting previously unselected package libasan5:armhf. Preparing to unpack .../43-libasan5_8-20180110-1ubuntu1_armhf.deb ... Unpacking libasan5:armhf (8-20180110-1ubuntu1) ... Selecting previously unselected package libubsan1:armhf. Preparing to unpack .../44-libubsan1_8-20180110-1ubuntu1_armhf.deb ... Unpacking libubsan1:armhf (8-20180110-1ubuntu1) ... Selecting previously unselected package libgcc-8-dev:armhf. Preparing to unpack .../45-libgcc-8-dev_8-20180110-1ubuntu1_armhf.deb ... Unpacking libgcc-8-dev:armhf (8-20180110-1ubuntu1) ... Selecting previously unselected package gcc-8. Preparing to unpack .../46-gcc-8_8-20180110-1ubuntu1_armhf.deb ... Unpacking gcc-8 (8-20180110-1ubuntu1) ... Preparing to unpack .../47-gcc_4%3a8-20121108-1ubuntu0.2_armhf.deb ... Unpacking gcc (4:8-20121108-1ubuntu0.2) over (4:7.2.0-1ubuntu1) ... Selecting previously unselected package libstdc++-8-dev:armhf. Preparing to unpack .../48-libstdc++-8-dev_8-20180110-1ubuntu1_armhf.deb ... Unpacking libstdc++-8-dev:armhf (8-20180110-1ubuntu1) ... Selecting previously unselected package g++-8. Preparing to unpack .../49-g++-8_8-20180110-1ubuntu1_armhf.deb ... Unpacking g++-8 (8-20180110-1ubuntu1) ... Preparing to unpack .../50-g++_4%3a8-20121108-1ubuntu0.2_armhf.deb ... Unpacking g++ (4:8-20121108-1ubuntu0.2) over (4:7.2.0-1ubuntu1) ... Preparing to unpack .../51-dpkg-dev_1.19.0.4ubuntu1_all.deb ... Unpacking dpkg-dev (1.19.0.4ubuntu1) over (1.18.24ubuntu1) ... Preparing to unpack .../52-libdpkg-perl_1.19.0.4ubuntu1_all.deb ... Unpacking libdpkg-perl (1.19.0.4ubuntu1) over (1.18.24ubuntu1) ... Preparing to unpack .../53-build-essential_12.4ubuntu1_armhf.deb ... Unpacking build-essential (12.4ubuntu1) over (12.1ubuntu2) ... Selecting previously unselected package libnghttp2-14:armhf. Preparing to unpack .../54-libnghttp2-14_1.29.0-1_armhf.deb ... Unpacking libnghttp2-14:armhf (1.29.0-1) ... Preparing to unpack .../55-libpsl5_0.19.1-4_armhf.deb ... Unpacking libpsl5:armhf (0.19.1-4) over (0.18.0-2) ... Preparing to unpack .../56-libcurl3-gnutls_7.57.0-1ubuntu1_armhf.deb ... Unpacking libcurl3-gnutls:armhf (7.57.0-1ubuntu1) over (7.55.1-1ubuntu1) ... Preparing to unpack .../57-liblockfile-bin_1.14-1.1_armhf.deb ... Unpacking liblockfile-bin (1.14-1.1) over (1.14-1) ... Preparing to unpack .../58-liblockfile1_1.14-1.1_armhf.deb ... Unpacking liblockfile1:armhf (1.14-1.1) over (1.14-1) ... Preparing to unpack .../59-optipng_0.7.6-1.1_armhf.deb ... Unpacking optipng (0.7.6-1.1) over (0.7.6-1build1) ... Setting up libnpth0:armhf (1.5-3) ... Setting up cpp-8 (8-20180110-1ubuntu1) ... Setting up libgomp1:armhf (8-20180110-1ubuntu1) ... Setting up libatomic1:armhf (8-20180110-1ubuntu1) ... Setting up cpp (4:8-20121108-1ubuntu0.2) ... Setting up liblockfile-bin (1.14-1.1) ... Setting up libcc1-0:armhf (8-20180110-1ubuntu1) ... Setting up apt-transport-https (1.6~alpha5) ... Setting up libidn2-0:armhf (2.0.4-1) ... Setting up libssl1.0.0:armhf (1.0.2g-1ubuntu14) ... Setting up libnghttp2-14:armhf (1.29.0-1) ... Setting up libpng16-16:armhf (1.6.34-1) ... Setting up libpsl5:armhf (0.19.1-4) ... Setting up multiarch-support (2.26-0ubuntu2) ... Setting up tzdata (2017c-1) ... Current default time zone: 'Etc/UTC' Local time is now: Mon Jan 15 23:35:28 UTC 2018. Universal Time is now: Mon Jan 15 23:35:28 UTC 2018. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up systemd-sysv (235-3ubuntu3) ... Setting up liblockfile1:armhf (1.14-1.1) ... Setting up linux-libc-dev:armhf (4.13.0-25.29) ... Setting up libroken18-heimdal:armhf (7.5.0+dfsg-1) ... Setting up perl-modules-5.26 (5.26.1-3) ... Setting up optipng (0.7.6-1.1) ... Setting up lsb-base (9.20170808ubuntu1) ... Setting up gcc-7-base:armhf (7.2.0-18ubuntu2) ... Setting up binutils-common:armhf (2.29.1-12ubuntu1) ... Setting up sensible-utils (0.0.11) ... Processing triggers for libc-bin (2.26-0ubuntu2) ... Setting up libperl5.26:armhf (5.26.1-3) ... Setting up libheimbase1-heimdal:armhf (7.5.0+dfsg-1) ... Setting up openssl (1.0.2g-1ubuntu14) ... Setting up libsqlite3-0:armhf (3.21.0-1) ... Setting up libc-dev-bin (2.26-0ubuntu2) ... Setting up libkeyutils1:armhf (1.5.9-9.2ubuntu1) ... Setting up libc6-dev:armhf (2.26-0ubuntu2) ... Setting up libasan5:armhf (8-20180110-1ubuntu1) ... Setting up libassuan0:armhf (2.5.1-1) ... Setting up libubsan1:armhf (8-20180110-1ubuntu1) ... Setting up libwind0-heimdal:armhf (7.5.0+dfsg-1) ... Setting up libasan4:armhf (7.2.0-18ubuntu2) ... Setting up libbinutils:armhf (2.29.1-12ubuntu1) ... Setting up libcilkrts5:armhf (7.2.0-18ubuntu2) ... Setting up libcurl3-gnutls:armhf (7.57.0-1ubuntu1) ... Setting up init (1.51) ... Setting up libasn1-8-heimdal:armhf (7.5.0+dfsg-1) ... Setting up libubsan0:armhf (7.2.0-18ubuntu2) ... Setting up libhcrypto4-heimdal:armhf (7.5.0+dfsg-1) ... Setting up binutils-arm-linux-gnueabihf (2.29.1-12ubuntu1) ... Setting up libhx509-5-heimdal:armhf (7.5.0+dfsg-1) ... Setting up libgcc-7-dev:armhf (7.2.0-18ubuntu2) ... Setting up cpp-7 (7.2.0-18ubuntu2) ... Setting up libstdc++-7-dev:armhf (7.2.0-18ubuntu2) ... Setting up perl (5.26.1-3) ... Setting up pinentry-curses (1.0.0-3) ... Setting up libgcc-8-dev:armhf (8-20180110-1ubuntu1) ... Setting up binutils (2.29.1-12ubuntu1) ... Setting up libkrb5-26-heimdal:armhf (7.5.0+dfsg-1) ... Setting up gnupg-agent (2.1.15-1ubuntu8) ... Setting up libheimntlm0-heimdal:armhf (7.5.0+dfsg-1) ... Setting up libstdc++-8-dev:armhf (8-20180110-1ubuntu1) ... Setting up gcc-7 (7.2.0-18ubuntu2) ... Setting up g++-7 (7.2.0-18ubuntu2) ... Setting up gnupg (2.1.15-1ubuntu8) ... Setting up libdpkg-perl (1.19.0.4ubuntu1) ... Setting up gcc-8 (8-20180110-1ubuntu1) ... Setting up g++-8 (8-20180110-1ubuntu1) ... Setting up dpkg-dev (1.19.0.4ubuntu1) ... Setting up libgssapi3-heimdal:armhf (7.5.0+dfsg-1) ... Setting up gcc (4:8-20121108-1ubuntu0.2) ... Setting up g++ (4:8-20121108-1ubuntu0.2) ... Setting up build-essential (12.4ubuntu1) ... Processing triggers for libc-bin (2.26-0ubuntu2) ... RUN: /usr/share/launchpad-buildd/slavebin/sbuild-package PACKAGEBUILD-14161738 armhf bionic -c chroot:build-PACKAGEBUILD-14161738 --arch=armhf --dist=bionic --nolog 'tbb_2017~U7-8.dsc' Initiating build PACKAGEBUILD-14161738 with 4 jobs across 4 processor cores. Kernel reported to sbuild: 4.4.0-101-generic #124-Ubuntu SMP Fri Nov 10 18:30:44 UTC 2017 armv7l sbuild (Debian sbuild) 0.67.0 (26 Dec 2015) on bos01-arm64-031.buildd +==============================================================================+ | tbb 2017~U7-8 (armhf) 15 Jan 2018 23:35 | +==============================================================================+ Package: tbb Version: 2017~U7-8 Source Version: 2017~U7-8 Distribution: bionic Machine Architecture: arm64 Host Architecture: armhf Build Architecture: armhf I: NOTICE: Log filtering will replace 'build/tbb-a8yB14/tbb-2017~U7' with '<>' I: NOTICE: Log filtering will replace 'build/tbb-a8yB14' with '<>' I: NOTICE: Log filtering will replace 'home/buildd/build-PACKAGEBUILD-14161738/chroot-autobuild' with '<>' +------------------------------------------------------------------------------+ | Fetch source files | +------------------------------------------------------------------------------+ Local sources ------------- tbb_2017~U7-8.dsc exists in .; copying to chroot Check architectures ------------------- Check dependencies ------------------ Merged Build-Depends: build-essential, fakeroot Filtered Build-Depends: build-essential, fakeroot dpkg-deb: building package 'sbuild-build-depends-core-dummy' in '/<>/resolver-43WxhW/apt_archive/sbuild-build-depends-core-dummy.deb'. Ign:1 copy:/<>/resolver-43WxhW/apt_archive ./ InRelease Get:2 copy:/<>/resolver-43WxhW/apt_archive ./ Release [2119 B] Ign:3 copy:/<>/resolver-43WxhW/apt_archive ./ Release.gpg Get:4 copy:/<>/resolver-43WxhW/apt_archive ./ Sources [214 B] Get:5 copy:/<>/resolver-43WxhW/apt_archive ./ Packages [527 B] Fetched 2860 B in 0s (49.0 kB/s) Reading package lists... Reading package lists... +------------------------------------------------------------------------------+ | Install core build dependencies (apt-based resolver) | +------------------------------------------------------------------------------+ Installing build dependencies Reading package lists... Building dependency tree... Reading state information... The following packages were automatically installed and are no longer required: g++-7 libasn1-8-heimdal libcurl3-gnutls libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libidn2-0 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libnghttp2-14 libpsl5 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules-db libstdc++-7-dev libunistring0 libustr-1.0-1 libwind0-heimdal Use 'apt autoremove' to remove them. The following NEW packages will be installed: sbuild-build-depends-core-dummy 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 852 B of archives. After this operation, 0 B of additional disk space will be used. Get:1 copy:/<>/resolver-43WxhW/apt_archive ./ sbuild-build-depends-core-dummy 0.invalid.0 [852 B] debconf: delaying package configuration, since apt-utils is not installed Fetched 852 B in 0s (41.6 kB/s) Selecting previously unselected package sbuild-build-depends-core-dummy. (Reading database ... 13406 files and directories currently installed.) Preparing to unpack .../sbuild-build-depends-core-dummy_0.invalid.0_armhf.deb ... Unpacking sbuild-build-depends-core-dummy (0.invalid.0) ... Setting up sbuild-build-depends-core-dummy (0.invalid.0) ... Merged Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1~), libjs-jquery, dh-exec (>= 0.3), gdb Filtered Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1~), libjs-jquery, dh-exec (>= 0.3), gdb dpkg-deb: building package 'sbuild-build-depends-tbb-dummy' in '/<>/resolver-e_hZA8/apt_archive/sbuild-build-depends-tbb-dummy.deb'. Ign:1 copy:/<>/resolver-e_hZA8/apt_archive ./ InRelease Get:2 copy:/<>/resolver-e_hZA8/apt_archive ./ Release [2119 B] Ign:3 copy:/<>/resolver-e_hZA8/apt_archive ./ Release.gpg Get:4 copy:/<>/resolver-e_hZA8/apt_archive ./ Sources [247 B] Get:5 copy:/<>/resolver-e_hZA8/apt_archive ./ Packages [565 B] Fetched 2931 B in 0s (42.7 kB/s) Reading package lists... Reading package lists... +------------------------------------------------------------------------------+ | Install tbb build dependencies (apt-based resolver) | +------------------------------------------------------------------------------+ Installing build dependencies Reading package lists... Building dependency tree... Reading state information... The following packages were automatically installed and are no longer required: g++-7 libasn1-8-heimdal libcurl3-gnutls libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libidn2-0 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libnghttp2-14 libpsl5 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules-db libstdc++-7-dev libustr-1.0-1 libwind0-heimdal Use 'apt autoremove' to remove them. The following additional packages will be installed: autoconf automake autopoint autotools-dev bsdmainutils debhelper dh-autoreconf dh-exec dh-strip-nondeterminism file gdb gettext gettext-base groff-base intltool-debian libarchive-zip-perl libbabeltrace1 libbsd0 libcroco3 libdw1 libelf1 libexpat1 libfile-stripnondeterminism-perl libfreetype6 libglib2.0-0 libgraphite2-3 libharfbuzz0b libicu-le-hb0 libicu60 libjs-jquery libmagic-mgc libmagic1 libmpdec2 libpipeline1 libpython3.6 libpython3.6-minimal libpython3.6-stdlib libsigsegv2 libtimedate-perl libtool libxml2 m4 man-db mime-support po-debconf Suggested packages: autoconf-archive gnu-standards autoconf-doc wamerican | wordlist whois vacation dh-make dwz gdb-doc gettext-doc libasprintf-dev libgettextpo-dev groff libtool-doc gfortran | fortran95-compiler gcj-jdk m4-doc less www-browser apparmor libmail-box-perl Recommended packages: libc-dbg gdbserver curl | wget | lynx libarchive-cpio-perl libglib2.0-data shared-mime-info xdg-user-dirs javascript-common libltdl-dev libmail-sendmail-perl The following packages will be REMOVED: pkg-create-dbgsym* The following NEW packages will be installed: autoconf automake autopoint autotools-dev bsdmainutils debhelper dh-autoreconf dh-exec dh-strip-nondeterminism file gdb gettext gettext-base groff-base intltool-debian libarchive-zip-perl libbabeltrace1 libbsd0 libcroco3 libdw1 libelf1 libexpat1 libfile-stripnondeterminism-perl libfreetype6 libglib2.0-0 libgraphite2-3 libharfbuzz0b libicu-le-hb0 libicu60 libjs-jquery libmagic-mgc libmagic1 libmpdec2 libpipeline1 libpython3.6 libpython3.6-minimal libpython3.6-stdlib libsigsegv2 libtimedate-perl libtool libxml2 m4 man-db mime-support po-debconf sbuild-build-depends-tbb-dummy 0 upgraded, 46 newly installed, 1 to remove and 0 not upgraded. Need to get 22.9 MB of archives. After this operation, 81.5 MB of additional disk space will be used. Get:1 copy:/<>/resolver-e_hZA8/apt_archive ./ sbuild-build-depends-tbb-dummy 0.invalid.0 [896 B] Get:2 http://ftpmaster.internal/ubuntu bionic/main armhf groff-base armhf 1.22.3-9 [1013 kB] Get:3 http://ftpmaster.internal/ubuntu bionic/main armhf libbsd0 armhf 0.8.6-3 [40.6 kB] Get:4 http://ftpmaster.internal/ubuntu bionic/main armhf bsdmainutils armhf 9.0.14ubuntu1 [173 kB] Get:5 http://ftpmaster.internal/ubuntu bionic/main armhf libpipeline1 armhf 1.5.0-1 [21.1 kB] Get:6 http://ftpmaster.internal/ubuntu bionic/main armhf man-db armhf 2.7.6.1-4 [872 kB] Get:7 http://ftpmaster.internal/ubuntu bionic/main armhf libmagic-mgc armhf 1:5.32-1 [184 kB] Get:8 http://ftpmaster.internal/ubuntu bionic/main armhf libmagic1 armhf 1:5.32-1 [62.6 kB] Get:9 http://ftpmaster.internal/ubuntu bionic/main armhf file armhf 1:5.32-1 [21.4 kB] Get:10 http://ftpmaster.internal/ubuntu bionic/main armhf libelf1 armhf 0.170-0.2 [42.4 kB] Get:11 http://ftpmaster.internal/ubuntu bionic/main armhf libexpat1 armhf 2.2.5-3 [59.7 kB] Get:12 http://ftpmaster.internal/ubuntu bionic/main armhf libglib2.0-0 armhf 2.54.1-1ubuntu1 [1013 kB] Get:13 http://ftpmaster.internal/ubuntu bionic/main armhf libmpdec2 armhf 2.4.2-1 [66.9 kB] Get:14 http://ftpmaster.internal/ubuntu bionic/main armhf libpython3.6-minimal armhf 3.6.4-2 [523 kB] Get:15 http://ftpmaster.internal/ubuntu bionic/main armhf mime-support all 3.60ubuntu1 [30.1 kB] Get:16 http://ftpmaster.internal/ubuntu bionic/main armhf libpython3.6-stdlib armhf 3.6.4-2 [1588 kB] Get:17 http://ftpmaster.internal/ubuntu bionic/main armhf libfreetype6 armhf 2.8-0.2ubuntu2 [275 kB] Get:18 http://ftpmaster.internal/ubuntu bionic/main armhf libgraphite2-3 armhf 1.3.10-8 [65.7 kB] Get:19 http://ftpmaster.internal/ubuntu bionic/main armhf libharfbuzz0b armhf 1.7.2-1 [206 kB] Get:20 http://ftpmaster.internal/ubuntu bionic/main armhf libicu-le-hb0 armhf 1.0.3+git161113-4 [12.5 kB] Get:21 http://ftpmaster.internal/ubuntu bionic/main armhf libicu60 armhf 60.2-1ubuntu1 [7811 kB] Get:22 http://ftpmaster.internal/ubuntu bionic/main armhf libxml2 armhf 2.9.4+dfsg1-5.2ubuntu1 [574 kB] Get:23 http://ftpmaster.internal/ubuntu bionic/main armhf gettext-base armhf 0.19.8.1-4ubuntu2 [45.9 kB] Get:24 http://ftpmaster.internal/ubuntu bionic/main armhf libsigsegv2 armhf 2.11-1 [12.6 kB] Get:25 http://ftpmaster.internal/ubuntu bionic/main armhf m4 armhf 1.4.18-1 [181 kB] Get:26 http://ftpmaster.internal/ubuntu bionic/main armhf autoconf all 2.69-11 [322 kB] Get:27 http://ftpmaster.internal/ubuntu bionic/main armhf autotools-dev all 20171216.1 [39.7 kB] Get:28 http://ftpmaster.internal/ubuntu bionic/main armhf automake all 1:1.15.1-3ubuntu1 [509 kB] Get:29 http://ftpmaster.internal/ubuntu bionic/main armhf autopoint all 0.19.8.1-4ubuntu2 [412 kB] Get:30 http://ftpmaster.internal/ubuntu bionic/main armhf libtool all 2.4.6-2 [194 kB] Get:31 http://ftpmaster.internal/ubuntu bionic/main armhf dh-autoreconf all 15 [15.8 kB] Get:32 http://ftpmaster.internal/ubuntu bionic/main armhf libarchive-zip-perl all 1.60-1 [83.9 kB] Get:33 http://ftpmaster.internal/ubuntu bionic/main armhf libfile-stripnondeterminism-perl all 0.040-1 [13.9 kB] Get:34 http://ftpmaster.internal/ubuntu bionic/main armhf libtimedate-perl all 2.3000-2 [37.5 kB] Get:35 http://ftpmaster.internal/ubuntu bionic/main armhf dh-strip-nondeterminism all 0.040-1 [5196 B] Get:36 http://ftpmaster.internal/ubuntu bionic/main armhf libcroco3 armhf 0.6.12-2 [69.4 kB] Get:37 http://ftpmaster.internal/ubuntu bionic/main armhf gettext armhf 0.19.8.1-4ubuntu2 [1027 kB] Get:38 http://ftpmaster.internal/ubuntu bionic/main armhf intltool-debian all 0.35.0+20060710.4 [24.9 kB] Get:39 http://ftpmaster.internal/ubuntu bionic/main armhf po-debconf all 1.0.20 [232 kB] Get:40 http://ftpmaster.internal/ubuntu bionic/main armhf debhelper all 11ubuntu1 [887 kB] Get:41 http://ftpmaster.internal/ubuntu bionic/main armhf libdw1 armhf 0.170-0.2 [189 kB] Get:42 http://ftpmaster.internal/ubuntu bionic/main armhf libbabeltrace1 armhf 1.5.3-4 [134 kB] Get:43 http://ftpmaster.internal/ubuntu bionic/main armhf libpython3.6 armhf 3.6.4-2 [1259 kB] Get:44 http://ftpmaster.internal/ubuntu bionic/main armhf gdb armhf 8.0.1-0ubuntu3 [2379 kB] Get:45 http://ftpmaster.internal/ubuntu bionic/main armhf libjs-jquery all 3.2.1-1 [152 kB] Get:46 http://ftpmaster.internal/ubuntu bionic/main armhf dh-exec armhf 0.23build1 [23.5 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 22.9 MB in 1s (22.5 MB/s) (Reading database ... 13406 files and directories currently installed.) Removing pkg-create-dbgsym (0.73) ... Selecting previously unselected package groff-base. (Reading database ... 13397 files and directories currently installed.) Preparing to unpack .../00-groff-base_1.22.3-9_armhf.deb ... Unpacking groff-base (1.22.3-9) ... Selecting previously unselected package libbsd0:armhf. Preparing to unpack .../01-libbsd0_0.8.6-3_armhf.deb ... Unpacking libbsd0:armhf (0.8.6-3) ... Selecting previously unselected package bsdmainutils. Preparing to unpack .../02-bsdmainutils_9.0.14ubuntu1_armhf.deb ... Unpacking bsdmainutils (9.0.14ubuntu1) ... Selecting previously unselected package libpipeline1:armhf. Preparing to unpack .../03-libpipeline1_1.5.0-1_armhf.deb ... Unpacking libpipeline1:armhf (1.5.0-1) ... Selecting previously unselected package man-db. Preparing to unpack .../04-man-db_2.7.6.1-4_armhf.deb ... Unpacking man-db (2.7.6.1-4) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../05-libmagic-mgc_1%3a5.32-1_armhf.deb ... Unpacking libmagic-mgc (1:5.32-1) ... Selecting previously unselected package libmagic1:armhf. Preparing to unpack .../06-libmagic1_1%3a5.32-1_armhf.deb ... Unpacking libmagic1:armhf (1:5.32-1) ... Selecting previously unselected package file. Preparing to unpack .../07-file_1%3a5.32-1_armhf.deb ... Unpacking file (1:5.32-1) ... Selecting previously unselected package libelf1:armhf. Preparing to unpack .../08-libelf1_0.170-0.2_armhf.deb ... Unpacking libelf1:armhf (0.170-0.2) ... Selecting previously unselected package libexpat1:armhf. Preparing to unpack .../09-libexpat1_2.2.5-3_armhf.deb ... Unpacking libexpat1:armhf (2.2.5-3) ... Selecting previously unselected package libglib2.0-0:armhf. Preparing to unpack .../10-libglib2.0-0_2.54.1-1ubuntu1_armhf.deb ... Unpacking libglib2.0-0:armhf (2.54.1-1ubuntu1) ... Selecting previously unselected package libmpdec2:armhf. Preparing to unpack .../11-libmpdec2_2.4.2-1_armhf.deb ... Unpacking libmpdec2:armhf (2.4.2-1) ... Selecting previously unselected package libpython3.6-minimal:armhf. Preparing to unpack .../12-libpython3.6-minimal_3.6.4-2_armhf.deb ... Unpacking libpython3.6-minimal:armhf (3.6.4-2) ... Selecting previously unselected package mime-support. Preparing to unpack .../13-mime-support_3.60ubuntu1_all.deb ... Unpacking mime-support (3.60ubuntu1) ... Selecting previously unselected package libpython3.6-stdlib:armhf. Preparing to unpack .../14-libpython3.6-stdlib_3.6.4-2_armhf.deb ... Unpacking libpython3.6-stdlib:armhf (3.6.4-2) ... Selecting previously unselected package libfreetype6:armhf. Preparing to unpack .../15-libfreetype6_2.8-0.2ubuntu2_armhf.deb ... Unpacking libfreetype6:armhf (2.8-0.2ubuntu2) ... Selecting previously unselected package libgraphite2-3:armhf. Preparing to unpack .../16-libgraphite2-3_1.3.10-8_armhf.deb ... Unpacking libgraphite2-3:armhf (1.3.10-8) ... Selecting previously unselected package libharfbuzz0b:armhf. Preparing to unpack .../17-libharfbuzz0b_1.7.2-1_armhf.deb ... Unpacking libharfbuzz0b:armhf (1.7.2-1) ... Selecting previously unselected package libicu-le-hb0:armhf. Preparing to unpack .../18-libicu-le-hb0_1.0.3+git161113-4_armhf.deb ... Unpacking libicu-le-hb0:armhf (1.0.3+git161113-4) ... Selecting previously unselected package libicu60:armhf. Preparing to unpack .../19-libicu60_60.2-1ubuntu1_armhf.deb ... Unpacking libicu60:armhf (60.2-1ubuntu1) ... Selecting previously unselected package libxml2:armhf. Preparing to unpack .../20-libxml2_2.9.4+dfsg1-5.2ubuntu1_armhf.deb ... Unpacking libxml2:armhf (2.9.4+dfsg1-5.2ubuntu1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../21-gettext-base_0.19.8.1-4ubuntu2_armhf.deb ... Unpacking gettext-base (0.19.8.1-4ubuntu2) ... Selecting previously unselected package libsigsegv2:armhf. Preparing to unpack .../22-libsigsegv2_2.11-1_armhf.deb ... Unpacking libsigsegv2:armhf (2.11-1) ... Selecting previously unselected package m4. Preparing to unpack .../23-m4_1.4.18-1_armhf.deb ... Unpacking m4 (1.4.18-1) ... Selecting previously unselected package autoconf. Preparing to unpack .../24-autoconf_2.69-11_all.deb ... Unpacking autoconf (2.69-11) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../25-autotools-dev_20171216.1_all.deb ... Unpacking autotools-dev (20171216.1) ... Selecting previously unselected package automake. Preparing to unpack .../26-automake_1%3a1.15.1-3ubuntu1_all.deb ... Unpacking automake (1:1.15.1-3ubuntu1) ... Selecting previously unselected package autopoint. Preparing to unpack .../27-autopoint_0.19.8.1-4ubuntu2_all.deb ... Unpacking autopoint (0.19.8.1-4ubuntu2) ... Selecting previously unselected package libtool. Preparing to unpack .../28-libtool_2.4.6-2_all.deb ... Unpacking libtool (2.4.6-2) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../29-dh-autoreconf_15_all.deb ... Unpacking dh-autoreconf (15) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../30-libarchive-zip-perl_1.60-1_all.deb ... Unpacking libarchive-zip-perl (1.60-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../31-libfile-stripnondeterminism-perl_0.040-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (0.040-1) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../32-libtimedate-perl_2.3000-2_all.deb ... Unpacking libtimedate-perl (2.3000-2) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../33-dh-strip-nondeterminism_0.040-1_all.deb ... Unpacking dh-strip-nondeterminism (0.040-1) ... Selecting previously unselected package libcroco3:armhf. Preparing to unpack .../34-libcroco3_0.6.12-2_armhf.deb ... Unpacking libcroco3:armhf (0.6.12-2) ... Selecting previously unselected package gettext. Preparing to unpack .../35-gettext_0.19.8.1-4ubuntu2_armhf.deb ... Unpacking gettext (0.19.8.1-4ubuntu2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../36-intltool-debian_0.35.0+20060710.4_all.deb ... Unpacking intltool-debian (0.35.0+20060710.4) ... Selecting previously unselected package po-debconf. Preparing to unpack .../37-po-debconf_1.0.20_all.deb ... Unpacking po-debconf (1.0.20) ... Selecting previously unselected package debhelper. Preparing to unpack .../38-debhelper_11ubuntu1_all.deb ... Unpacking debhelper (11ubuntu1) ... Selecting previously unselected package libdw1:armhf. Preparing to unpack .../39-libdw1_0.170-0.2_armhf.deb ... Unpacking libdw1:armhf (0.170-0.2) ... Selecting previously unselected package libbabeltrace1:armhf. Preparing to unpack .../40-libbabeltrace1_1.5.3-4_armhf.deb ... Unpacking libbabeltrace1:armhf (1.5.3-4) ... Selecting previously unselected package libpython3.6:armhf. Preparing to unpack .../41-libpython3.6_3.6.4-2_armhf.deb ... Unpacking libpython3.6:armhf (3.6.4-2) ... Selecting previously unselected package gdb. Preparing to unpack .../42-gdb_8.0.1-0ubuntu3_armhf.deb ... Unpacking gdb (8.0.1-0ubuntu3) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../43-libjs-jquery_3.2.1-1_all.deb ... Unpacking libjs-jquery (3.2.1-1) ... Selecting previously unselected package dh-exec. Preparing to unpack .../44-dh-exec_0.23build1_armhf.deb ... Unpacking dh-exec (0.23build1) ... Selecting previously unselected package sbuild-build-depends-tbb-dummy. Preparing to unpack .../45-sbuild-build-depends-tbb-dummy_0.invalid.0_armhf.deb ... Unpacking sbuild-build-depends-tbb-dummy (0.invalid.0) ... Setting up libjs-jquery (3.2.1-1) ... Setting up libexpat1:armhf (2.2.5-3) ... Setting up libarchive-zip-perl (1.60-1) ... Setting up mime-support (3.60ubuntu1) ... Setting up libtimedate-perl (2.3000-2) ... Setting up libsigsegv2:armhf (2.11-1) ... Setting up libelf1:armhf (0.170-0.2) ... Setting up groff-base (1.22.3-9) ... Setting up libglib2.0-0:armhf (2.54.1-1ubuntu1) ... No schema files found: doing nothing. Setting up gettext-base (0.19.8.1-4ubuntu2) ... Setting up libpipeline1:armhf (1.5.0-1) ... Setting up m4 (1.4.18-1) ... Setting up libbsd0:armhf (0.8.6-3) ... Setting up libfreetype6:armhf (2.8-0.2ubuntu2) ... Setting up libmagic-mgc (1:5.32-1) ... Setting up libmagic1:armhf (1:5.32-1) ... Setting up libgraphite2-3:armhf (1.3.10-8) ... Setting up libpython3.6-minimal:armhf (3.6.4-2) ... Processing triggers for libc-bin (2.26-0ubuntu2) ... Setting up autotools-dev (20171216.1) ... Setting up bsdmainutils (9.0.14ubuntu1) ... update-alternatives: using /usr/bin/bsd-write to provide /usr/bin/write (write) in auto mode update-alternatives: using /usr/bin/bsd-from to provide /usr/bin/from (from) in auto mode Setting up autopoint (0.19.8.1-4ubuntu2) ... Setting up libmpdec2:armhf (2.4.2-1) ... Setting up libfile-stripnondeterminism-perl (0.040-1) ... Setting up libpython3.6-stdlib:armhf (3.6.4-2) ... Setting up libdw1:armhf (0.170-0.2) ... Setting up libharfbuzz0b:armhf (1.7.2-1) ... Setting up autoconf (2.69-11) ... Setting up file (1:5.32-1) ... Setting up automake (1:1.15.1-3ubuntu1) ... update-alternatives: using /usr/bin/automake-1.15 to provide /usr/bin/automake (automake) in auto mode Setting up man-db (2.7.6.1-4) ... Not building database; man-db/auto-update is not 'true'. Setting up libbabeltrace1:armhf (1.5.3-4) ... Setting up libpython3.6:armhf (3.6.4-2) ... Setting up libtool (2.4.6-2) ... Setting up gdb (8.0.1-0ubuntu3) ... Setting up libicu-le-hb0:armhf (1.0.3+git161113-4) ... Setting up libicu60:armhf (60.2-1ubuntu1) ... Setting up libxml2:armhf (2.9.4+dfsg1-5.2ubuntu1) ... Setting up libcroco3:armhf (0.6.12-2) ... Setting up gettext (0.19.8.1-4ubuntu2) ... Setting up intltool-debian (0.35.0+20060710.4) ... Setting up po-debconf (1.0.20) ... Setting up debhelper (11ubuntu1) ... Setting up dh-autoreconf (15) ... Setting up dh-strip-nondeterminism (0.040-1) ... Setting up dh-exec (0.23build1) ... Setting up sbuild-build-depends-tbb-dummy (0.invalid.0) ... (Reading database ... 16042 files and directories currently installed.) Purging configuration files for pkg-create-dbgsym (0.73) ... Processing triggers for libc-bin (2.26-0ubuntu2) ... +------------------------------------------------------------------------------+ | Build environment | +------------------------------------------------------------------------------+ Kernel: Linux 4.4.0-101-generic arm64 (armv7l) Toolchain package versions: binutils_2.29.1-12ubuntu1 dpkg-dev_1.19.0.4ubuntu1 g++-7_7.2.0-18ubuntu2 g++-8_8-20180110-1ubuntu1 gcc-7_7.2.0-18ubuntu2 gcc-8_8-20180110-1ubuntu1 libc6-dev_2.26-0ubuntu2 libstdc++-7-dev_7.2.0-18ubuntu2 libstdc++-8-dev_8-20180110-1ubuntu1 libstdc++6_8-20180110-1ubuntu1 linux-libc-dev_4.13.0-25.29 Package versions: adduser_3.116ubuntu1 advancecomp_2.0-1 apt_1.6~alpha5 apt-transport-https_1.6~alpha5 autoconf_2.69-11 automake_1:1.15.1-3ubuntu1 autopoint_0.19.8.1-4ubuntu2 autotools-dev_20171216.1 base-files_10ubuntu1 base-passwd_3.5.44 bash_4.4-5ubuntu1 binutils_2.29.1-12ubuntu1 binutils-arm-linux-gnueabihf_2.29.1-12ubuntu1 binutils-common_2.29.1-12ubuntu1 bsdmainutils_9.0.14ubuntu1 bsdutils_1:2.30.2-0.1ubuntu1 build-essential_12.4ubuntu1 bzip2_1.0.6-8.1 ca-certificates_20170717 coreutils_8.26-3ubuntu4 cpp_4:8-20121108-1ubuntu0.2 cpp-7_7.2.0-18ubuntu2 cpp-8_8-20180110-1ubuntu1 dash_0.5.8-2.3ubuntu1 debconf_1.5.65 debhelper_11ubuntu1 debianutils_4.8.4 dh-autoreconf_15 dh-exec_0.23build1 dh-strip-nondeterminism_0.040-1 diffutils_1:3.6-1 dmsetup_2:1.02.137-2ubuntu3 dpkg_1.19.0.4ubuntu1 dpkg-dev_1.19.0.4ubuntu1 e2fslibs_1.43.8-1ubuntu1 e2fsprogs_1.43.8-1ubuntu1 fakeroot_1.21-1ubuntu2 fdisk_2.30.2-0.1ubuntu1 file_1:5.32-1 findutils_4.6.0+git+20170828-2 g++_4:8-20121108-1ubuntu0.2 g++-7_7.2.0-18ubuntu2 g++-8_8-20180110-1ubuntu1 gcc_4:8-20121108-1ubuntu0.2 gcc-7_7.2.0-18ubuntu2 gcc-7-base_7.2.0-18ubuntu2 gcc-8_8-20180110-1ubuntu1 gcc-8-base_8-20180110-1ubuntu1 gdb_8.0.1-0ubuntu3 gettext_0.19.8.1-4ubuntu2 gettext-base_0.19.8.1-4ubuntu2 gnupg_2.1.15-1ubuntu8 gnupg-agent_2.1.15-1ubuntu8 gpgv_2.1.15-1ubuntu8 grep_3.1-2 groff-base_1.22.3-9 gzip_1.6-5ubuntu1 hostname_3.18 init_1.51 init-system-helpers_1.51 initscripts_2.88dsf-59.3ubuntu2 insserv_1.14.0-5ubuntu3 intltool-debian_0.35.0+20060710.4 libacl1_2.2.52-3build1 libapparmor1_2.11.0-2ubuntu18 libapt-pkg5.0_1.6~alpha5 libarchive-zip-perl_1.60-1 libasan4_7.2.0-18ubuntu2 libasan5_8-20180110-1ubuntu1 libasn1-8-heimdal_7.5.0+dfsg-1 libassuan0_2.5.1-1 libatomic1_8-20180110-1ubuntu1 libattr1_1:2.4.47-2build1 libaudit-common_1:2.7.7-1ubuntu2 libaudit1_1:2.7.7-1ubuntu2 libbabeltrace1_1.5.3-4 libbinutils_2.29.1-12ubuntu1 libblkid1_2.30.2-0.1ubuntu1 libbsd0_0.8.6-3 libbz2-1.0_1.0.6-8.1 libc-bin_2.26-0ubuntu2 libc-dev-bin_2.26-0ubuntu2 libc6_2.26-0ubuntu2 libc6-dev_2.26-0ubuntu2 libcap-ng0_0.7.7-3.1 libcap2_1:2.25-1.2 libcc1-0_8-20180110-1ubuntu1 libcilkrts5_7.2.0-18ubuntu2 libcomerr2_1.43.8-1ubuntu1 libcroco3_0.6.12-2 libcryptsetup4_2:1.7.3-4ubuntu1 libcurl3-gnutls_7.57.0-1ubuntu1 libdb5.3_5.3.28-13.1 libdebconfclient0_0.213ubuntu1 libdevmapper1.02.1_2:1.02.137-2ubuntu3 libdpkg-perl_1.19.0.4ubuntu1 libdw1_0.170-0.2 libelf1_0.170-0.2 libexpat1_2.2.5-3 libfakeroot_1.21-1ubuntu2 libfdisk1_2.30.2-0.1ubuntu1 libffi6_3.2.1-6 libfile-stripnondeterminism-perl_0.040-1 libfreetype6_2.8-0.2ubuntu2 libgcc-7-dev_7.2.0-18ubuntu2 libgcc-8-dev_8-20180110-1ubuntu1 libgcc1_1:8-20180110-1ubuntu1 libgcrypt20_1.8.1-4 libgdbm3_1.8.3-14 libglib2.0-0_2.54.1-1ubuntu1 libgmp10_2:6.1.2+dfsg-1 libgnutls30_3.5.8-6ubuntu3 libgomp1_8-20180110-1ubuntu1 libgpg-error0_1.27-5 libgraphite2-3_1.3.10-8 libgssapi-krb5-2_1.15.1-2 libgssapi3-heimdal_7.5.0+dfsg-1 libharfbuzz0b_1.7.2-1 libhcrypto4-heimdal_7.5.0+dfsg-1 libheimbase1-heimdal_7.5.0+dfsg-1 libheimntlm0-heimdal_7.5.0+dfsg-1 libhogweed4_3.3-2 libhx509-5-heimdal_7.5.0+dfsg-1 libicu-le-hb0_1.0.3+git161113-4 libicu60_60.2-1ubuntu1 libidn11_1.33-2.1 libidn2-0_2.0.4-1 libip4tc0_1.6.1-2ubuntu2 libisl15_0.18-1 libjs-jquery_3.2.1-1 libk5crypto3_1.15.1-2 libkeyutils1_1.5.9-9.2ubuntu1 libkmod2_24-1ubuntu2 libkrb5-26-heimdal_7.5.0+dfsg-1 libkrb5-3_1.15.1-2 libkrb5support0_1.15.1-2 libksba8_1.3.5-2 libldap-2.4-2_2.4.45+dfsg-1ubuntu1 libldap-common_2.4.45+dfsg-1ubuntu1 liblockfile-bin_1.14-1.1 liblockfile1_1.14-1.1 liblz4-1_0.0~r131-2ubuntu2 liblzma5_5.2.2-1.3 libmagic-mgc_1:5.32-1 libmagic1_1:5.32-1 libmount1_2.30.2-0.1ubuntu1 libmpc3_1.0.3-2 libmpdec2_2.4.2-1 libmpfr4_3.1.6-1 libncurses5_6.0+20160625-1ubuntu1 libncursesw5_6.0+20160625-1ubuntu1 libnettle6_3.3-2 libnghttp2-14_1.29.0-1 libnpth0_1.5-3 libp11-kit0_0.23.9-2 libpam-modules_1.1.8-3.2ubuntu3 libpam-modules-bin_1.1.8-3.2ubuntu3 libpam-runtime_1.1.8-3.2ubuntu3 libpam0g_1.1.8-3.2ubuntu3 libpcre3_2:8.39-8 libperl5.26_5.26.1-3 libpipeline1_1.5.0-1 libpng16-16_1.6.34-1 libprocps6_2:3.3.12-1ubuntu2 libpsl5_0.19.1-4 libpython3.6_3.6.4-2 libpython3.6-minimal_3.6.4-2 libpython3.6-stdlib_3.6.4-2 libreadline7_7.0-0ubuntu2 libroken18-heimdal_7.5.0+dfsg-1 librtmp1_2.4+20151223.gitfa8646d.1-1 libsasl2-2_2.1.27~101-g0780600+dfsg-3ubuntu1 libsasl2-modules-db_2.1.27~101-g0780600+dfsg-3ubuntu1 libseccomp2_2.3.1-2.1ubuntu3 libselinux1_2.7-2 libsemanage-common_2.7-2 libsemanage1_2.7-2 libsepol1_2.7-1 libsigsegv2_2.11-1 libslang2_2.3.1-5ubuntu1 libsmartcols1_2.30.2-0.1ubuntu1 libsqlite3-0_3.21.0-1 libss2_1.43.8-1ubuntu1 libssl1.0.0_1.0.2g-1ubuntu14 libstdc++-7-dev_7.2.0-18ubuntu2 libstdc++-8-dev_8-20180110-1ubuntu1 libstdc++6_8-20180110-1ubuntu1 libsystemd0_235-3ubuntu3 libtasn1-6_4.12-3 libtimedate-perl_2.3000-2 libtinfo5_6.0+20160625-1ubuntu1 libtool_2.4.6-2 libubsan0_7.2.0-18ubuntu2 libubsan1_8-20180110-1ubuntu1 libudev1_235-3ubuntu3 libunistring0_0.9.3-5.2ubuntu1 libusb-0.1-4_2:0.1.12-31 libustr-1.0-1_1.0.4-6 libuuid1_2.30.2-0.1ubuntu1 libwind0-heimdal_7.5.0+dfsg-1 libxml2_2.9.4+dfsg1-5.2ubuntu1 linux-libc-dev_4.13.0-25.29 lockfile-progs_0.1.17build1 login_1:4.2-3.2ubuntu4 lsb-base_9.20170808ubuntu1 m4_1.4.18-1 make_4.1-9.1 man-db_2.7.6.1-4 mawk_1.3.3-17ubuntu2 mime-support_3.60ubuntu1 mount_2.30.2-0.1ubuntu1 multiarch-support_2.26-0ubuntu2 ncurses-base_6.0+20160625-1ubuntu1 ncurses-bin_6.0+20160625-1ubuntu1 openssl_1.0.2g-1ubuntu14 optipng_0.7.6-1.1 passwd_1:4.2-3.2ubuntu4 patch_2.7.5-1build1 perl_5.26.1-3 perl-base_5.26.1-3 perl-modules-5.26_5.26.1-3 pinentry-curses_1.0.0-3 pkgbinarymangler_131 po-debconf_1.0.20 policyrcd-script-zg2_0.1-3 procps_2:3.3.12-1ubuntu2 readline-common_7.0-0ubuntu2 sbuild-build-depends-core-dummy_0.invalid.0 sbuild-build-depends-tbb-dummy_0.invalid.0 sed_4.4-1 sensible-utils_0.0.11 systemd_235-3ubuntu3 systemd-sysv_235-3ubuntu3 sysv-rc_2.88dsf-59.3ubuntu2 sysvinit-utils_2.88dsf-59.10ubuntu1 tar_1.29b-2 tzdata_2017c-1 ubuntu-keyring_2016.10.27 util-linux_2.30.2-0.1ubuntu1 xz-utils_5.2.2-1.3 zlib1g_1:1.2.11.dfsg-0ubuntu2 +------------------------------------------------------------------------------+ | Build | +------------------------------------------------------------------------------+ Unpack source ------------- gpgv: Signature made Wed Oct 4 14:33:54 2017 UTC gpgv: using RSA key gpgv: issuer "steven.capper@gmail.com" gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./tbb_2017~U7-8.dsc dpkg-source: info: extracting tbb in tbb-2017~U7 dpkg-source: info: unpacking tbb_2017~U7.orig.tar.xz dpkg-source: info: unpacking tbb_2017~U7-8.debian.tar.xz dpkg-source: info: applying adddebug.patch dpkg-source: info: applying fixnonlinux.patch dpkg-source: info: applying buildi386.patch dpkg-source: info: applying linuxreleasedetect.patch dpkg-source: info: applying tally-unit-test-fails.patch dpkg-source: info: applying gcc-atomic-detection.patch dpkg-source: info: applying gcc-atomic-always.patch dpkg-source: info: applying tweak-64bits-hppa-alpha.patch dpkg-source: info: applying removejsquery.patch dpkg-source: info: applying cross.patch dpkg-source: info: applying fix-armel.patch dpkg-source: info: applying allow-reproducible-builds.patch dpkg-source: info: applying fixup-mips-harness.patch dpkg-source: info: applying enhanced-debugging.patch dpkg-source: info: applying remove-unaligned-test.patch dpkg-source: info: applying armel-exception-ptr.patch Check disc space ---------------- Sufficient free space for build User Environment ---------------- APT_CONFIG=/var/lib/sbuild/apt.conf DEB_BUILD_OPTIONS=noautodbgsym parallel=4 HOME=/sbuild-nonexistent LANG=C.UTF-8 LC_ALL=C.UTF-8 LOGNAME=buildd PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games SCHROOT_ALIAS_NAME=build-PACKAGEBUILD-14161738 SCHROOT_CHROOT_NAME=build-PACKAGEBUILD-14161738 SCHROOT_COMMAND=env SCHROOT_GID=2501 SCHROOT_GROUP=buildd SCHROOT_SESSION_ID=build-PACKAGEBUILD-14161738 SCHROOT_UID=2001 SCHROOT_USER=buildd SHELL=/bin/sh TERM=unknown USER=buildd V=1 dpkg-buildpackage ----------------- dpkg-buildpackage: info: source package tbb dpkg-buildpackage: info: source version 2017~U7-8 dpkg-buildpackage: info: source distribution unstable dpkg-source --before-build tbb-2017~U7 dpkg-buildpackage: info: host architecture armhf fakeroot debian/rules clean dh clean --parallel --dbg-package=libtbb2-dbg debian/rules override_dh_auto_clean make[1]: Entering directory '/<>' dh_auto_clean make -j4 clean make[2]: Entering directory '/<>' build/linux.inc:43: "uname_m: " armv7l build/linux.inc:44: "uname_a: " Linux bos01-arm64-031 4.4.0-101-generic #124-Ubuntu SMP Fri Nov 10 18:30:44 UTC 2017 armv7l armv7l armv7l GNU/Linux build/linux.inc:45: "deb_host_arch: " armhf clean done make[2]: Leaving directory '/<>' touch debian/tbb.pc && rm debian/tbb.pc make[1]: Leaving directory '/<>' dh_clean -O--parallel -O--dbg-package=libtbb2-dbg debian/rules build-arch dh build-arch --parallel --dbg-package=libtbb2-dbg dh_update_autotools_config -a -O--parallel -O--dbg-package=libtbb2-dbg dh_auto_configure -a -O--parallel -O--dbg-package=libtbb2-dbg debian/rules override_dh_auto_build make[1]: Entering directory '/<>' cat /proc/cpuinfo processor : 0 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 100.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm CPU implementer : 0x50 CPU architecture: 8 CPU variant : 0x0 CPU part : 0x000 CPU revision : 1 processor : 1 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 100.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm CPU implementer : 0x50 CPU architecture: 8 CPU variant : 0x0 CPU part : 0x000 CPU revision : 1 processor : 2 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 100.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm CPU implementer : 0x50 CPU architecture: 8 CPU variant : 0x0 CPU part : 0x000 CPU revision : 1 processor : 3 model name : ARMv8 Processor rev 1 (v8l) BogoMIPS : 100.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm CPU implementer : 0x50 CPU architecture: 8 CPU variant : 0x0 CPU part : 0x000 CPU revision : 1 gcc -dM -E - < /dev/null #define __SSP_STRONG__ 3 #define __DBL_MIN_EXP__ (-1021) #define __HQ_FBIT__ 15 #define __FLT32X_MAX_EXP__ 1024 #define __UINT_LEAST16_MAX__ 0xffff #define __ARM_SIZEOF_WCHAR_T 4 #define __ATOMIC_ACQUIRE 2 #define __SFRACT_IBIT__ 0 #define __FLT_MIN__ 1.1754943508222875e-38F #define __GCC_IEC_559_COMPLEX 2 #define __UFRACT_MAX__ 0XFFFFP-16UR #define __UINT_LEAST8_TYPE__ unsigned char #define __DQ_FBIT__ 63 #define __INTMAX_C(c) c ## LL #define __ARM_FEATURE_SAT 1 #define __ULFRACT_FBIT__ 32 #define __SACCUM_EPSILON__ 0x1P-7HK #define __CHAR_BIT__ 8 #define __USQ_IBIT__ 0 #define __UINT8_MAX__ 0xff #define __ACCUM_FBIT__ 15 #define __WINT_MAX__ 0xffffffffU #define __FLT32_MIN_EXP__ (-125) #define __USFRACT_FBIT__ 8 #define __ORDER_LITTLE_ENDIAN__ 1234 #define __SIZE_MAX__ 0xffffffffU #define __ARM_ARCH_ISA_ARM 1 #define __WCHAR_MAX__ 0xffffffffU #define __LACCUM_IBIT__ 32 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.9406564584124654e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __GCC_ATOMIC_CHAR_LOCK_FREE 2 #define __GCC_IEC_559 2 #define __FLT32X_DECIMAL_DIG__ 17 #define __FLT_EVAL_METHOD__ 0 #define __unix__ 1 #define __LLACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LLK #define __FLT64_DECIMAL_DIG__ 17 #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 #define __FRACT_FBIT__ 15 #define __UINT_FAST64_MAX__ 0xffffffffffffffffULL #define __SIG_ATOMIC_TYPE__ int #define __UACCUM_FBIT__ 16 #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __ARMEL__ 1 #define __ARM_FEATURE_UNALIGNED 1 #define __LFRACT_IBIT__ 0 #define __GNUC_PATCHLEVEL__ 0 #define __FLT32_HAS_DENORM__ 1 #define __LFRACT_MAX__ 0X7FFFFFFFP-31LR #define __UINT_FAST8_MAX__ 0xff #define __has_include(STR) __has_include__(STR) #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __INT_LEAST8_WIDTH__ 8 #define __UINT_LEAST64_MAX__ 0xffffffffffffffffULL #define __SA_FBIT__ 15 #define __SHRT_MAX__ 0x7fff #define __LDBL_MAX__ 1.7976931348623157e+308L #define __FRACT_MAX__ 0X7FFFP-15R #define __thumb2__ 1 #define __UFRACT_FBIT__ 16 #define __ARM_FP 12 #define __UFRACT_MIN__ 0.0UR #define __UINT_LEAST8_MAX__ 0xff #define __GCC_ATOMIC_BOOL_LOCK_FREE 2 #define __UINTMAX_TYPE__ long long unsigned int #define __LLFRACT_EPSILON__ 0x1P-63LLR #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __FLT_EVAL_METHOD_TS_18661_3__ 0 #define __CHAR_UNSIGNED__ 1 #define __UINT32_MAX__ 0xffffffffU #define __ULFRACT_MAX__ 0XFFFFFFFFP-32ULR #define __TA_IBIT__ 64 #define __LDBL_MAX_EXP__ 1024 #define __WINT_MIN__ 0U #define __ARM_ASM_SYNTAX_UNIFIED__ 1 #define __linux__ 1 #define __INT_LEAST16_WIDTH__ 16 #define __ULLFRACT_MIN__ 0.0ULLR #define __SCHAR_MAX__ 0x7f #define __WCHAR_MIN__ 0U #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __GCC_ATOMIC_POINTER_LOCK_FREE 2 #define __LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK) #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USACCUM_IBIT__ 8 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __LFRACT_MIN__ (-0.5LR-0.5LR) #define __HA_IBIT__ 8 #define __FLT32_DIG__ 6 #define __TQ_IBIT__ 0 #define __FLT_EPSILON__ 1.1920928955078125e-7F #define __APCS_32__ 1 #define __SHRT_WIDTH__ 16 #define __USFRACT_IBIT__ 0 #define __LDBL_MIN__ 2.2250738585072014e-308L #define __STDC_UTF_16__ 1 #define __FRACT_MIN__ (-0.5R-0.5R) #define __DEC32_MAX__ 9.999999E96DF #define __DA_IBIT__ 32 #define __ARM_SIZEOF_MINIMAL_ENUM 4 #define __FLT32X_HAS_INFINITY__ 1 #define __INT32_MAX__ 0x7fffffff #define __UQQ_FBIT__ 8 #define __INT_WIDTH__ 32 #define __SIZEOF_LONG__ 4 #define __UACCUM_MAX__ 0XFFFFFFFFP-16UK #define __STDC_IEC_559__ 1 #define __STDC_ISO_10646__ 201706L #define __UINT16_C(c) c #define __PTRDIFF_WIDTH__ 32 #define __DECIMAL_DIG__ 17 #define __LFRACT_EPSILON__ 0x1P-31LR #define __FLT64_EPSILON__ 2.2204460492503131e-16F64 #define __ULFRACT_MIN__ 0.0ULR #define __gnu_linux__ 1 #define __INTMAX_WIDTH__ 64 #define __has_include_next(STR) __has_include_next__(STR) #define __ARM_PCS_VFP 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __ULACCUM_IBIT__ 32 #define __FLT64_MANT_DIG__ 53 #define __UACCUM_EPSILON__ 0x1P-16UK #define __GNUC__ 8 #define __ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK #define __pie__ 2 #define __HQ_IBIT__ 0 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 8 #define __BIGGEST_ALIGNMENT__ 8 #define __FLT64_MAX_10_EXP__ 308 #define __GNUC_STDC_INLINE__ 1 #define __DQ_IBIT__ 0 #define __DBL_MAX__ ((double)1.7976931348623157e+308L) #define __ULFRACT_IBIT__ 0 #define __INT_FAST32_MAX__ 0x7fffffff #define __DBL_HAS_INFINITY__ 1 #define __ACCUM_IBIT__ 16 #define __DEC32_MIN_EXP__ (-94) #define __THUMB_INTERWORK__ 1 #define __INTPTR_WIDTH__ 32 #define __LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK #define __FLT32X_HAS_DENORM__ 1 #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __ARM_FEATURE_LDREX 15 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 0x7fffffff #define __DEC32_MIN__ 1E-95DF #define __ACCUM_MAX__ 0X7FFFFFFFP-15K #define __DBL_MAX_EXP__ 1024 #define __USACCUM_EPSILON__ 0x1P-8UHK #define __WCHAR_WIDTH__ 32 #define __FLT32_MAX__ 3.4028234663852886e+38F32 #define __DEC128_EPSILON__ 1E-33DL #define __SFRACT_MAX__ 0X7FP-7HR #define __FRACT_IBIT__ 0 #define __PTRDIFF_MAX__ 0x7fffffff #define __UACCUM_MIN__ 0.0UK #define __STDC_NO_THREADS__ 1 #define __UACCUM_IBIT__ 16 #define __FLT32_HAS_QUIET_NAN__ 1 #define __LONG_LONG_MAX__ 0x7fffffffffffffffLL #define __SIZEOF_SIZE_T__ 4 #define __ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK #define __SIZEOF_WINT_T__ 4 #define __LONG_LONG_WIDTH__ 64 #define __FLT32_MAX_EXP__ 128 #define __SA_IBIT__ 16 #define __ULLACCUM_MIN__ 0.0ULLK #define __GXX_ABI_VERSION 1012 #define __UTA_FBIT__ 64 #define __FLT_MIN_EXP__ (-125) #define __USFRACT_MAX__ 0XFFP-8UHR #define __UFRACT_IBIT__ 0 #define __ARM_FEATURE_QBIT 1 #define __INT_FAST64_TYPE__ long long int #define __FLT64_DENORM_MIN__ 4.9406564584124654e-324F64 #define __DBL_MIN__ ((double)2.2250738585072014e-308L) #define __PIE__ 2 #define __FLT32X_EPSILON__ 2.2204460492503131e-16F32x #define __FLT64_MIN_EXP__ (-1021) #define __LACCUM_MIN__ (-0X1P31LK-0X1P31LK) #define __ULLACCUM_FBIT__ 32 #define __GXX_TYPEINFO_EQUALITY_INLINE 0 #define __FLT64_MIN_10_EXP__ (-307) #define __ULLFRACT_EPSILON__ 0x1P-64ULLR #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 0xffff #define __DBL_HAS_DENORM__ 1 #define __ACCUM_MIN__ (-0X1P15K-0X1P15K) #define __SQ_IBIT__ 0 #define __FLT32_MIN__ 1.1754943508222875e-38F32 #define __UINT8_TYPE__ unsigned char #define __UHA_FBIT__ 8 #define __NO_INLINE__ 1 #define __SFRACT_MIN__ (-0.5HR-0.5HR) #define __UTQ_FBIT__ 128 #define __FLT_MANT_DIG__ 24 #define __LDBL_DECIMAL_DIG__ 17 #define __VERSION__ "8.0.0 20180110 (experimental) [trunk revision 256425]" #define __UINT64_C(c) c ## ULL #define __ULLFRACT_FBIT__ 64 #define __FRACT_EPSILON__ 0x1P-15R #define __ULACCUM_MIN__ 0.0ULK #define _STDC_PREDEF_H 1 #define __UDA_FBIT__ 32 #define __LLACCUM_EPSILON__ 0x1P-31LLK #define __GCC_ATOMIC_INT_LOCK_FREE 2 #define __FLT32_MANT_DIG__ 24 #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __USFRACT_MIN__ 0.0UHR #define __UQQ_IBIT__ 0 #define __STDC_IEC_559_COMPLEX__ 1 #define __SCHAR_WIDTH__ 8 #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __ORDER_PDP_ENDIAN__ 3412 #define __DEC128_MIN_EXP__ (-6142) #define __UHQ_FBIT__ 16 #define __LLACCUM_FBIT__ 31 #define __FLT32_MAX_10_EXP__ 38 #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 0x7fff #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 0xffffffffffffffffULL #define __UDQ_FBIT__ 64 #define __INT8_TYPE__ signed char #define __thumb__ 1 #define __ELF__ 1 #define __ULFRACT_EPSILON__ 0x1P-32ULR #define __LLFRACT_FBIT__ 63 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __ARM_ARCH_PROFILE 65 #define __LDBL_EPSILON__ 2.2204460492503131e-16L #define __UINTMAX_C(c) c ## ULL #define __SACCUM_MAX__ 0X7FFFP-7HK #define __SIG_ATOMIC_MAX__ 0x7fffffff #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 #define __VFP_FP__ 1 #define __SIZEOF_PTRDIFF_T__ 4 #define __FLT32X_MANT_DIG__ 53 #define __LACCUM_EPSILON__ 0x1P-31LK #define __FLT32X_MIN_EXP__ (-1021) #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __INT_FAST16_MAX__ 0x7fffffff #define __FLT64_DIG__ 15 #define __UINT_FAST32_MAX__ 0xffffffffU #define __UINT_LEAST64_TYPE__ long long unsigned int #define __USACCUM_MAX__ 0XFFFFP-8UHK #define __SFRACT_EPSILON__ 0x1P-7HR #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 0x7fffffffL #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __unix 1 #define __USA_FBIT__ 16 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __ARM_32BIT_STATE 1 #define __INT_FAST32_WIDTH__ 32 #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __SIZE_WIDTH__ 32 #define __INT_LEAST16_MAX__ 0x7fff #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 0x7fffffffffffffffLL #define __UINT_LEAST32_MAX__ 0xffffffffU #define __SACCUM_FBIT__ 7 #define __FLT32_DENORM_MIN__ 1.4012984643248171e-45F32 #define __GCC_ATOMIC_LONG_LOCK_FREE 2 #define __SIG_ATOMIC_WIDTH__ 32 #define __INT_LEAST64_TYPE__ long long int #define __ARM_FEATURE_CLZ 1 #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __STDC_VERSION__ 201710L #define __SQ_FBIT__ 31 #define __DEC32_MAX_EXP__ 97 #define __ARM_ARCH_ISA_THUMB 2 #define __INT_FAST8_MAX__ 0x7f #define __ARM_ARCH 7 #define __INTPTR_MAX__ 0x7fffffff #define __QQ_FBIT__ 7 #define linux 1 #define __UTA_IBIT__ 64 #define __FLT64_HAS_QUIET_NAN__ 1 #define __FLT32_MIN_10_EXP__ (-37) #define __FLT32X_DIG__ 15 #define __LDBL_MANT_DIG__ 53 #define __SFRACT_FBIT__ 7 #define __SACCUM_MIN__ (-0X1P7HK-0X1P7HK) #define __DBL_HAS_QUIET_NAN__ 1 #define __FLT64_HAS_INFINITY__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ unsigned int #define __SIZEOF_FLOAT__ 4 #define __THUMBEL__ 1 #define __USQ_FBIT__ 32 #define __pic__ 2 #define __UINTPTR_MAX__ 0xffffffffU #define __INT_FAST64_WIDTH__ 64 #define __DEC64_MIN_EXP__ (-382) #define __ULLACCUM_IBIT__ 32 #define __FLT32_DECIMAL_DIG__ 9 #define __INT_FAST64_MAX__ 0x7fffffffffffffffLL #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 #define __FLT_DIG__ 6 #define __FLT32_HAS_INFINITY__ 1 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 0x7fffffff #define __LACCUM_FBIT__ 31 #define __USACCUM_MIN__ 0.0UHK #define __UHA_IBIT__ 8 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __UTQ_IBIT__ 0 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 0x7fffffffffffffffLL #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __ULLFRACT_IBIT__ 0 #define __LDBL_MIN_EXP__ (-1021) #define __arm__ 1 #define __FLT64_MAX__ 1.7976931348623157e+308F64 #define __UDA_IBIT__ 32 #define __WINT_WIDTH__ 32 #define __INT_LEAST8_MAX__ 0x7f #define __FLT32X_MAX_10_EXP__ 308 #define __LFRACT_FBIT__ 31 #define __ARM_ARCH_7A__ 1 #define __LDBL_MAX_10_EXP__ 308 #define __ATOMIC_RELAXED 0 #define __DBL_EPSILON__ ((double)2.2204460492503131e-16L) #define __ARM_FEATURE_SIMD32 1 #define __UINT8_C(c) c #define __FLT64_MAX_EXP__ 1024 #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR #define __TQ_FBIT__ 127 #define __INT_FAST8_TYPE__ signed char #define __ULLACCUM_EPSILON__ 0x1P-32ULLK #define __UHQ_IBIT__ 0 #define __ARM_FEATURE_COPROC 15 #define __LLACCUM_IBIT__ 32 #define __FLT64_HAS_DENORM__ 1 #define __FLT32_EPSILON__ 1.1920928955078125e-7F32 #define __DBL_DECIMAL_DIG__ 17 #define __STDC_UTF_32__ 1 #define __INT_FAST8_WIDTH__ 8 #define __DEC_EVAL_METHOD__ 2 #define __FLT32X_MAX__ 1.7976931348623157e+308F32x #define __TA_FBIT__ 63 #define __UDQ_IBIT__ 0 #define __ORDER_BIG_ENDIAN__ 4321 #define __ACCUM_EPSILON__ 0x1P-15K #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 0x7fffffffffffffffLL #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __FLT_DENORM_MIN__ 1.4012984643248171e-45F #define __LLFRACT_IBIT__ 0 #define __INT8_MAX__ 0x7f #define __LONG_WIDTH__ 32 #define __PIC__ 2 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.4028234663852886e+38F #define __USACCUM_FBIT__ 8 #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __UFRACT_EPSILON__ 0x1P-16UR #define __FLT64_MIN__ 2.2250738585072014e-308F64 #define __INT_LEAST32_WIDTH__ 32 #define __INTMAX_TYPE__ long long int #define __DEC128_MAX_EXP__ 6145 #define __FLT32X_HAS_QUIET_NAN__ 1 #define __ATOMIC_CONSUME 1 #define __GNUC_MINOR__ 0 #define __INT_FAST16_WIDTH__ 32 #define __UINTMAX_MAX__ 0xffffffffffffffffULL #define __DEC32_MANT_DIG__ 7 #define __FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x #define __HA_FBIT__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __LLFRACT_MIN__ (-0.5LLR-0.5LLR) #define __ATOMIC_SEQ_CST 5 #define __DA_FBIT__ 31 #define __UINT32_TYPE__ unsigned int #define __FLT32X_MIN_10_EXP__ (-307) #define __UINTPTR_TYPE__ unsigned int #define __USA_IBIT__ 16 #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __ARM_EABI__ 1 #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-307) #define __SIZEOF_LONG_LONG__ 8 #define __ULACCUM_EPSILON__ 0x1P-32ULK #define __SACCUM_IBIT__ 8 #define __GCC_ATOMIC_LLONG_LOCK_FREE 2 #define __FLT32X_MIN__ 2.2250738585072014e-308F32x #define __LDBL_DIG__ 15 #define __FLT_DECIMAL_DIG__ 9 #define __UINT_FAST16_MAX__ 0xffffffffU #define __GCC_ATOMIC_SHORT_LOCK_FREE 2 #define __INT_LEAST64_WIDTH__ 64 #define __ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR #define __UINT_FAST8_TYPE__ unsigned char #define __USFRACT_EPSILON__ 0x1P-8UHR #define __ULACCUM_FBIT__ 32 #define __ARM_FEATURE_DSP 1 #define __QQ_IBIT__ 0 #define __ATOMIC_ACQ_REL 4 #define __ATOMIC_RELEASE 3 echo Build system page size is $(($(getconf PAGESIZE) >> 10)) KiB Build system page size is 4 KiB sed -e"s/@VERSION@/2017~U7/g;s/@DEB_HOST_MULTIARCH@/arm-linux-gnueabihf/g" \ debian/tbb.pc.in > debian/tbb.pc dh_auto_build -- make -j4 make[2]: Entering directory '/<>' build/linux.inc:43: "uname_m: " armv7l build/linux.inc:44: "uname_a: " Linux bos01-arm64-031 4.4.0-101-generic #124-Ubuntu SMP Fri Nov 10 18:30:44 UTC 2017 armv7l armv7l armv7l GNU/Linux build/linux.inc:45: "deb_host_arch: " armhf Created ./build/linux_armv7_gcc_cc8_libc2.26_release and ..._debug directories make -C "./build/linux_armv7_gcc_cc8_libc2.26_debug" -r -f ../../build/Makefile.tbb cfg=debug make[3]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' ../../build/Makefile.tbb:32: CONFIG: cfg=debug arch=armv7 compiler=gcc target=linux runtime=cc8_libc2.26 g++ -o concurrent_hash_map.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_hash_map.cpp g++ -o concurrent_queue.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_queue.cpp g++ -o concurrent_vector.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_vector.cpp g++ -o dynamic_link.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/dynamic_link.cpp In file included from ../../src/tbb/concurrent_hash_map.cpp:21: ../../include/tbb/concurrent_hash_map.h: In static member function ‘static void tbb::interface5::internal::hash_map_base::init_buckets(tbb::interface5::internal::hash_map_base::segment_ptr_t, tbb::interface5::internal::hash_map_base::size_type, bool)’: ../../include/tbb/concurrent_hash_map.h:169:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::interface5::internal::hash_map_base::bucket’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] if( is_initial ) std::memset(ptr, 0, sz*sizeof(bucket) ); ^ ../../include/tbb/concurrent_hash_map.h:98:16: note: ‘struct tbb::interface5::internal::hash_map_base::bucket’ declared here struct bucket : tbb::internal::no_copy { ^~~~~~ ../../src/tbb/concurrent_queue.cpp: In constructor ‘tbb::internal::concurrent_queue_base_v3::concurrent_queue_base_v3(std::size_t)’: ../../src/tbb/concurrent_queue.cpp:367:49: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘class tbb::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ^ ../../src/tbb/concurrent_queue.cpp:129:7: note: ‘class tbb::internal::concurrent_queue_rep’ declared here class concurrent_queue_rep { ^~~~~~~~~~~~~~~~~~~~ g++ -o itt_notify.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/itt_notify.cpp g++ -o cache_aligned_allocator.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/cache_aligned_allocator.cpp g++ -o pipeline.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/pipeline.cpp g++ -o queuing_mutex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/queuing_mutex.cpp g++ -o queuing_rw_mutex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/queuing_rw_mutex.cpp g++ -o reader_writer_lock.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/reader_writer_lock.cpp g++ -o spin_rw_mutex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/spin_rw_mutex.cpp g++ -o x86_rtm_rw_mutex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/x86_rtm_rw_mutex.cpp g++ -o spin_mutex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/spin_mutex.cpp g++ -o critical_section.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/critical_section.cpp g++ -o mutex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/mutex.cpp g++ -o recursive_mutex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/recursive_mutex.cpp g++ -o condition_variable.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/condition_variable.cpp g++ -o tbb_thread.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/tbb_thread.cpp g++ -o concurrent_monitor.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_monitor.cpp g++ -o semaphore.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/semaphore.cpp g++ -o private_server.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/private_server.cpp g++ -o rml_tbb.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/rml/client/rml_tbb.cpp sh ../../build/version_info_linux.sh g++ -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. >version_string.ver g++ -o tbb_misc_ex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/tbb_misc_ex.cpp g++ -o task.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/task.cpp g++ -o task_group_context.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/task_group_context.cpp ../../src/tbb/private_server.cpp: In constructor ‘tbb::internal::rml::private_server::private_server(tbb::internal::rml::tbb_client&)’: ../../src/tbb/private_server.cpp:334:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘class tbb::internal::rml::padded_private_worker’ with no trivial copy-assignment [-Wclass-memaccess] memset( my_thread_array, 0, sizeof(private_worker)*my_n_thread ); ^ ../../src/tbb/private_server.cpp:113:7: note: ‘class tbb::internal::rml::padded_private_worker’ declared here class padded_private_worker: public private_worker { ^~~~~~~~~~~~~~~~~~~~~ g++ -o governor.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/governor.cpp g++ -o market.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/market.cpp g++ -o arena.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/arena.cpp g++ -o scheduler.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/scheduler.cpp g++ -o observer_proxy.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/observer_proxy.cpp g++ -o tbb_statistics.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/tbb_statistics.cpp g++ -o tbb_main.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/tbb_main.cpp g++ -o concurrent_vector_v2.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/old/concurrent_vector_v2.cpp g++ -o concurrent_queue_v2.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/old/concurrent_queue_v2.cpp ../../src/old/concurrent_vector_v2.cpp: In static member function ‘static void tbb::internal::concurrent_vector_base::helper::extend_segment(tbb::internal::concurrent_vector_base&)’: ../../src/old/concurrent_vector_v2.cpp:84:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::concurrent_vector_base::segment_t’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( s, 0, pointers_per_long_segment*sizeof(segment_t) ); ^ In file included from ../../src/old/concurrent_vector_v2.cpp:21: ../../src/old/concurrent_vector_v2.h:90:16: note: ‘struct tbb::internal::concurrent_vector_base::segment_t’ declared here struct segment_t { ^~~~~~~~~ g++ -o spin_rw_mutex_v2.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/old/spin_rw_mutex_v2.cpp ../../src/old/concurrent_queue_v2.cpp: In constructor ‘tbb::internal::concurrent_queue_base::concurrent_queue_base(std::size_t)’: ../../src/old/concurrent_queue_v2.cpp:213:49: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘class tbb::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ^ ../../src/old/concurrent_queue_v2.cpp:102:7: note: ‘class tbb::internal::concurrent_queue_rep’ declared here class concurrent_queue_rep { ^~~~~~~~~~~~~~~~~~~~ g++ -o task_v2.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/old/task_v2.cpp sh ../../build/generate_tbbvars.sh echo "INPUT (libtbb_debug.so.2)" > libtbb_debug.so g++ -E -x c++ ../../src/tbb/lin32-tbb-export.def -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include > tbb.def g++ -o tbb_misc.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. ../../src/tbb/tbb_misc.cpp g++ -fPIC -o libtbb_debug.so.2 concurrent_hash_map.o concurrent_queue.o concurrent_vector.o dynamic_link.o itt_notify.o cache_aligned_allocator.o pipeline.o queuing_mutex.o queuing_rw_mutex.o reader_writer_lock.o spin_rw_mutex.o x86_rtm_rw_mutex.o spin_mutex.o critical_section.o mutex.o recursive_mutex.o condition_variable.o tbb_thread.o concurrent_monitor.o semaphore.o private_server.o rml_tbb.o tbb_misc.o tbb_misc_ex.o task.o task_group_context.o governor.o market.o arena.o scheduler.o observer_proxy.o tbb_statistics.o tbb_main.o concurrent_vector_v2.o concurrent_queue_v2.o spin_rw_mutex_v2.o task_v2.o -ldl -lpthread -lrt -latomic -shared -Wl,-soname=libtbb_debug.so.2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -Wl,--version-script,tbb.def make[3]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' make -C "./build/linux_armv7_gcc_cc8_libc2.26_release" -r -f ../../build/Makefile.tbb cfg=release make[3]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_release' ../../build/Makefile.tbb:32: CONFIG: cfg=release arch=armv7 compiler=gcc target=linux runtime=cc8_libc2.26 g++ -o concurrent_hash_map.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_hash_map.cpp g++ -o concurrent_queue.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_queue.cpp g++ -o concurrent_vector.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_vector.cpp g++ -o dynamic_link.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/dynamic_link.cpp In file included from ../../src/tbb/concurrent_hash_map.cpp:21: ../../include/tbb/concurrent_hash_map.h: In static member function ‘static void tbb::interface5::internal::hash_map_base::init_buckets(tbb::interface5::internal::hash_map_base::segment_ptr_t, tbb::interface5::internal::hash_map_base::size_type, bool)’: ../../include/tbb/concurrent_hash_map.h:169:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::interface5::internal::hash_map_base::bucket’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] if( is_initial ) std::memset(ptr, 0, sz*sizeof(bucket) ); ^ ../../include/tbb/concurrent_hash_map.h:98:16: note: ‘struct tbb::interface5::internal::hash_map_base::bucket’ declared here struct bucket : tbb::internal::no_copy { ^~~~~~ ../../src/tbb/concurrent_queue.cpp: In constructor ‘tbb::internal::concurrent_queue_base_v3::concurrent_queue_base_v3(std::size_t)’: ../../src/tbb/concurrent_queue.cpp:367:49: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘class tbb::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ^ ../../src/tbb/concurrent_queue.cpp:129:7: note: ‘class tbb::internal::concurrent_queue_rep’ declared here class concurrent_queue_rep { ^~~~~~~~~~~~~~~~~~~~ g++ -o itt_notify.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/itt_notify.cpp g++ -o cache_aligned_allocator.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/cache_aligned_allocator.cpp g++ -o pipeline.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/pipeline.cpp g++ -o queuing_mutex.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/queuing_mutex.cpp g++ -o queuing_rw_mutex.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/queuing_rw_mutex.cpp g++ -o reader_writer_lock.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/reader_writer_lock.cpp g++ -o spin_rw_mutex.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/spin_rw_mutex.cpp g++ -o x86_rtm_rw_mutex.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/x86_rtm_rw_mutex.cpp g++ -o spin_mutex.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/spin_mutex.cpp g++ -o critical_section.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/critical_section.cpp g++ -o mutex.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/mutex.cpp g++ -o recursive_mutex.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/recursive_mutex.cpp g++ -o condition_variable.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/condition_variable.cpp g++ -o tbb_thread.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/tbb_thread.cpp g++ -o concurrent_monitor.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_monitor.cpp g++ -o semaphore.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/semaphore.cpp g++ -o private_server.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/private_server.cpp g++ -o rml_tbb.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/rml/client/rml_tbb.cpp sh ../../build/version_info_linux.sh g++ -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. >version_string.ver g++ -o tbb_misc_ex.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/tbb_misc_ex.cpp g++ -o task.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/task.cpp ../../src/tbb/private_server.cpp: In constructor ‘tbb::internal::rml::private_server::private_server(tbb::internal::rml::tbb_client&)’: ../../src/tbb/private_server.cpp:334:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘class tbb::internal::rml::padded_private_worker’ with no trivial copy-assignment [-Wclass-memaccess] memset( my_thread_array, 0, sizeof(private_worker)*my_n_thread ); ^ ../../src/tbb/private_server.cpp:113:7: note: ‘class tbb::internal::rml::padded_private_worker’ declared here class padded_private_worker: public private_worker { ^~~~~~~~~~~~~~~~~~~~~ g++ -o task_group_context.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/task_group_context.cpp g++ -o governor.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/governor.cpp g++ -o market.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/market.cpp g++ -o arena.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/arena.cpp g++ -o scheduler.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/scheduler.cpp g++ -o observer_proxy.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/observer_proxy.cpp g++ -o tbb_statistics.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/tbb_statistics.cpp g++ -o tbb_main.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/tbb/tbb_main.cpp g++ -o concurrent_vector_v2.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/old/concurrent_vector_v2.cpp g++ -o concurrent_queue_v2.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/old/concurrent_queue_v2.cpp ../../src/old/concurrent_queue_v2.cpp: In constructor ‘tbb::internal::concurrent_queue_base::concurrent_queue_base(std::size_t)’: ../../src/old/concurrent_queue_v2.cpp:213:49: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘class tbb::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ^ g++ -o spin_rw_mutex_v2.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/old/spin_rw_mutex_v2.cpp ../../src/old/concurrent_queue_v2.cpp:102:7: note: ‘class tbb::internal::concurrent_queue_rep’ declared here class concurrent_queue_rep { ^~~~~~~~~~~~~~~~~~~~ g++ -o task_v2.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/old/task_v2.cpp sh ../../build/generate_tbbvars.sh echo "INPUT (libtbb.so.2)" > libtbb.so g++ -E -x c++ ../../src/tbb/lin32-tbb-export.def -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include > tbb.def g++ -o tbb_misc.o -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -fPIC -flifetime-dse=1 -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. ../../src/tbb/tbb_misc.cpp g++ -fPIC -o libtbb.so.2 concurrent_hash_map.o concurrent_queue.o concurrent_vector.o dynamic_link.o itt_notify.o cache_aligned_allocator.o pipeline.o queuing_mutex.o queuing_rw_mutex.o reader_writer_lock.o spin_rw_mutex.o x86_rtm_rw_mutex.o spin_mutex.o critical_section.o mutex.o recursive_mutex.o condition_variable.o tbb_thread.o concurrent_monitor.o semaphore.o private_server.o rml_tbb.o tbb_misc.o tbb_misc_ex.o task.o task_group_context.o governor.o market.o arena.o scheduler.o observer_proxy.o tbb_statistics.o tbb_main.o concurrent_vector_v2.o concurrent_queue_v2.o spin_rw_mutex_v2.o task_v2.o -ldl -lpthread -lrt -latomic -shared -Wl,-soname=libtbb.so.2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -Wl,--version-script,tbb.def make[3]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_release' make -C "./build/linux_armv7_gcc_cc8_libc2.26_debug" -r -f ../../build/Makefile.tbbmalloc cfg=debug malloc make[3]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/backend.cpp g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/large_objects.cpp g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/backref.cpp g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/tbbmalloc.cpp g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -o itt_notify_malloc.o -I../../src -I../../src/rml/include -I../../include ../../src/tbb/itt_notify.cpp g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc -I. ../../src/tbbmalloc/frontend.cpp echo "INPUT (libtbbmalloc_debug.so.2)" > libtbbmalloc_debug.so g++ -E -x c++ ../../src/tbbmalloc/lin32-tbbmalloc-export.def -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -I../../src -I../../src/rml/include -I../../include > tbbmalloc.def g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/proxy.cpp g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/tbb_function_replacement.cpp echo "INPUT (libtbbmalloc_proxy_debug.so.2)" > libtbbmalloc_proxy_debug.so g++ -E -x c++ ../../src/tbbmalloc/lin32-proxy-export.def -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wno-parentheses -Wno-non-virtual-dtor -I../../src -I../../src/rml/include -I../../include > tbbmallocproxy.def ../../src/tbbmalloc/proxy.cpp:234:32: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated] void * operator new(size_t sz) throw (std::bad_alloc) { ^~~~~ ../../src/tbbmalloc/proxy.cpp:242:33: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated] void* operator new[](size_t sz) throw (std::bad_alloc) { ^~~~~ cc -fPIC -o libtbbmalloc_debug.so.2 backend.o large_objects.o backref.o tbbmalloc.o itt_notify_malloc.o frontend.o -ldl -lpthread -lrt -latomic -shared -Wl,-soname=libtbbmalloc_debug.so.2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -Wl,--version-script,tbbmalloc.def g++ -fPIC -o libtbbmalloc_proxy_debug.so.2 proxy.o tbb_function_replacement.o -ldl -lpthread -lrt -latomic libtbbmalloc_debug.so -shared -Wl,-soname=libtbbmalloc_proxy_debug.so.2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -Wl,--version-script,tbbmallocproxy.def make[3]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' make -C "./build/linux_armv7_gcc_cc8_libc2.26_release" -r -f ../../build/Makefile.tbbmalloc cfg=release malloc make[3]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_release' g++ -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/backend.cpp g++ -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/large_objects.cpp g++ -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/backref.cpp g++ -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/tbbmalloc.cpp g++ -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -o itt_notify_malloc.o -I../../src -I../../src/rml/include -I../../include ../../src/tbb/itt_notify.cpp g++ -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc -I. ../../src/tbbmalloc/frontend.cpp echo "INPUT (libtbbmalloc.so.2)" > libtbbmalloc.so g++ -E -x c++ ../../src/tbbmalloc/lin32-tbbmalloc-export.def -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -Wno-parentheses -Wno-non-virtual-dtor -I../../src -I../../src/rml/include -I../../include > tbbmalloc.def g++ -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/proxy.cpp g++ -c -MMD -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wno-parentheses -Wno-non-virtual-dtor -fPIC -flifetime-dse=1 -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/tbbmalloc/tbb_function_replacement.cpp echo "INPUT (libtbbmalloc_proxy.so.2)" > libtbbmalloc_proxy.so g++ -E -x c++ ../../src/tbbmalloc/lin32-proxy-export.def -g -O2 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wno-parentheses -Wno-non-virtual-dtor -I../../src -I../../src/rml/include -I../../include > tbbmallocproxy.def ../../src/tbbmalloc/proxy.cpp:234:32: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated] void * operator new(size_t sz) throw (std::bad_alloc) { ^~~~~ ../../src/tbbmalloc/proxy.cpp:242:33: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated] void* operator new[](size_t sz) throw (std::bad_alloc) { ^~~~~ cc -fPIC -o libtbbmalloc.so.2 backend.o large_objects.o backref.o tbbmalloc.o itt_notify_malloc.o frontend.o -ldl -lpthread -lrt -latomic -shared -Wl,-soname=libtbbmalloc.so.2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -Wl,--version-script,tbbmalloc.def g++ -fPIC -o libtbbmalloc_proxy.so.2 proxy.o tbb_function_replacement.o -ldl -lpthread -lrt -latomic libtbbmalloc.so -shared -Wl,-soname=libtbbmalloc_proxy.so.2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -Wl,--version-script,tbbmallocproxy.def make[3]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_release' make[2]: Leaving directory '/<>' make[1]: Leaving directory '/<>' dh_auto_test -a -O--parallel -O--dbg-package=libtbb2-dbg make -j4 test make[1]: Entering directory '/<>' build/linux.inc:43: "uname_m: " armv7l build/linux.inc:44: "uname_a: " Linux bos01-arm64-031 4.4.0-101-generic #124-Ubuntu SMP Fri Nov 10 18:30:44 UTC 2017 armv7l armv7l armv7l GNU/Linux build/linux.inc:45: "deb_host_arch: " armhf Created ./build/linux_armv7_gcc_cc8_libc2.26_release and ..._debug directories make -C "./build/linux_armv7_gcc_cc8_libc2.26_debug" -r -f ../../build/Makefile.tbb cfg=debug make[2]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' ../../build/Makefile.tbb:32: CONFIG: cfg=debug arch=armv7 compiler=gcc target=linux runtime=cc8_libc2.26 make[2]: Nothing to be done for 'default_tbb'. make[2]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' make -C "./build/linux_armv7_gcc_cc8_libc2.26_release" -r -f ../../build/Makefile.tbb cfg=release make[2]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_release' ../../build/Makefile.tbb:32: CONFIG: cfg=release arch=armv7 compiler=gcc target=linux runtime=cc8_libc2.26 make[2]: Nothing to be done for 'default_tbb'. make[2]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_release' make -C "./build/linux_armv7_gcc_cc8_libc2.26_debug" -r -f ../../build/Makefile.tbbmalloc cfg=debug malloc make[2]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' make[2]: Nothing to be done for 'malloc'. make[2]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' make -C "./build/linux_armv7_gcc_cc8_libc2.26_release" -r -f ../../build/Makefile.tbbmalloc cfg=release malloc make[2]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_release' make[2]: Nothing to be done for 'malloc'. make[2]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_release' make -C "./build/linux_armv7_gcc_cc8_libc2.26_debug" -r -f ../../build/Makefile.tbbmalloc cfg=debug malloc_test make[2]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' g++ -o test_ScalableAllocator.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/test/test_ScalableAllocator.cpp g++ -o test_ScalableAllocator_STL.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/test/test_ScalableAllocator_STL.cpp g++ -o test_malloc_compliance.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/test/test_malloc_compliance.cpp g++ -o test_malloc_regression.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/test/test_malloc_regression.cpp ../../src/test/test_ScalableAllocator.cpp: In function ‘void TestSmallFixedSizePool()’: ../../src/test/test_ScalableAllocator.cpp:128:23: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] } catch (std::invalid_argument) { ^~~~~~~~~~~~~~~~ ../../src/test/test_ScalableAllocator.cpp:159:19: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] } catch (std::invalid_argument) { ^~~~~~~~~~~~~~~~ In file included from ../../src/test/test_ScalableAllocator.cpp:35: ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::scalable_allocator >]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::scalable_allocator >]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::scalable_allocator]’ ../../src/test/test_ScalableAllocator.cpp:176:59: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] } catch ( std::bad_alloc ) { ^~~~~ ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::scalable_allocator >]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::scalable_allocator >]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::scalable_allocator]’ ../../src/test/test_ScalableAllocator.cpp:176:59: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::scalable_allocator >]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::scalable_allocator >]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::scalable_allocator]’ ../../src/test/test_ScalableAllocator.cpp:176:59: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::scalable_allocator >]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::scalable_allocator >]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::scalable_allocator]’ ../../src/test/test_ScalableAllocator.cpp:176:59: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::interface6::memory_pool_allocator, tbb::interface6::internal::pool_base>]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::interface6::memory_pool_allocator, tbb::interface6::internal::pool_base>]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::interface6::memory_pool_allocator]’ ../../src/test/test_ScalableAllocator.cpp:179:67: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::interface6::memory_pool_allocator, tbb::interface6::internal::pool_base>]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::interface6::memory_pool_allocator, tbb::interface6::internal::pool_base>]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::interface6::memory_pool_allocator]’ ../../src/test/test_ScalableAllocator.cpp:179:67: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::interface6::memory_pool_allocator, tbb::interface6::internal::pool_base>]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::interface6::memory_pool_allocator, tbb::interface6::internal::pool_base>]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::interface6::memory_pool_allocator]’ ../../src/test/test_ScalableAllocator.cpp:179:67: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::interface6::memory_pool_allocator, tbb::interface6::internal::pool_base>]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::interface6::memory_pool_allocator, tbb::interface6::internal::pool_base>]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::interface6::memory_pool_allocator]’ ../../src/test/test_ScalableAllocator.cpp:179:67: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = static_counting_allocator, tbb::interface6::internal::pool_base>, tbb::atomic >]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = static_counting_allocator, tbb::interface6::internal::pool_base>, tbb::atomic >]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = static_counting_allocator >]’ ../../src/test/test_ScalableAllocator.cpp:183:33: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = static_counting_allocator, tbb::interface6::internal::pool_base>, tbb::atomic >]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = static_counting_allocator, tbb::interface6::internal::pool_base>, tbb::atomic >]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = static_counting_allocator >]’ ../../src/test/test_ScalableAllocator.cpp:183:33: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = static_counting_allocator, tbb::interface6::internal::pool_base>, tbb::atomic >]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = static_counting_allocator, tbb::interface6::internal::pool_base>, tbb::atomic >]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = static_counting_allocator >]’ ../../src/test/test_ScalableAllocator.cpp:183:33: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = static_counting_allocator, tbb::interface6::internal::pool_base>, tbb::atomic >]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = static_counting_allocator, tbb::interface6::internal::pool_base>, tbb::atomic >]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = static_counting_allocator >]’ ../../src/test/test_ScalableAllocator.cpp:183:33: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] g++ -o test_malloc_init_shutdown.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/test/test_malloc_init_shutdown.cpp g++ -o test_malloc_pools.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/test/test_malloc_pools.cpp cc -c -MMD -o test_malloc_pure_c.o -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include ../../src/test/test_malloc_pure_c.c g++ -o test_malloc_whitebox.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc -I. ../../src/test/test_malloc_whitebox.cpp g++ -c -MMD -o test_malloc_used_by_lib_dll.o -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -fPIC -D_USRDLL -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/test/test_malloc_used_by_lib.cpp g++ -o test_malloc_used_by_lib.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/test/test_malloc_used_by_lib.cpp g++ -c -MMD -o test_malloc_lib_unload_dll.o -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -D_USRDLL -I../../src -I../../src/rml/include -I../../include ../../src/test/test_malloc_lib_unload.cpp g++ -o test_malloc_lib_unload.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/test/test_malloc_lib_unload.cpp g++ -o test_malloc_overload.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/test/test_malloc_overload.cpp g++ -o test_malloc_overload_proxy.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include -I../../src/tbbmalloc -I../../src/tbbmalloc ../../src/test/test_malloc_overload.cpp g++ -c -MMD -o test_malloc_atexit_dll.o -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -fPIC -D_USRDLL -I../../src -I../../src/rml/include -I../../include ../../src/test/test_malloc_atexit.cpp g++ -o test_malloc_atexit.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 -I../../src -I../../src/rml/include -I../../include ../../src/test/test_malloc_atexit.cpp g++ -o test_ScalableAllocator.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 test_ScalableAllocator.o libtbbmalloc_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed g++ -o test_ScalableAllocator_STL.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 test_ScalableAllocator_STL.o libtbbmalloc_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed g++ -o test_malloc_compliance.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 test_malloc_compliance.o libtbbmalloc_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed g++ -o test_malloc_regression.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 test_malloc_regression.o libtbbmalloc_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed g++ -o test_malloc_init_shutdown.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 test_malloc_init_shutdown.o libtbbmalloc_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed g++ -o test_malloc_pools.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 test_malloc_pools.o libtbbmalloc_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed g++ -o test_malloc_pure_c.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 test_malloc_pure_c.o libtbbmalloc_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed g++ -o test_malloc_used_by_lib_dll.so -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 test_malloc_used_by_lib_dll.o libtbbmalloc_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -fPIC -shared g++ -o test_malloc_lib_unload_dll.so -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 test_malloc_lib_unload_dll.o -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -ldl -fPIC -shared g++ -o test_malloc_overload.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 test_malloc_overload.o -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -ldl g++ -o test_malloc_overload_proxy.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 test_malloc_overload_proxy.o libtbbmalloc_proxy_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -ldl g++ -o test_malloc_atexit_dll.so -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 test_malloc_atexit_dll.o libtbbmalloc_debug.so libtbbmalloc_proxy_debug.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -ldl -fPIC -shared g++ -o test_malloc_used_by_lib.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 test_malloc_used_by_lib.o test_malloc_used_by_lib_dll.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -ldl g++ -o test_malloc_lib_unload.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 test_malloc_lib_unload.o test_malloc_lib_unload_dll.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -ldl g++ -o test_malloc_atexit.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 test_malloc_atexit.o libtbbmalloc_debug.so -Wl,--no-as-needed libtbbmalloc_proxy_debug.so test_malloc_atexit_dll.so -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -ldl g++ -o test_malloc_whitebox.exe -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -D__TBBMALLOC_BUILD=1 test_malloc_whitebox.o -lpthread -lrt -latomic -Wl,-rpath-link=. -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -ldl sh ../gdb_shell.sh ./test_malloc_pools.exe 1:4 done sh ../gdb_shell.sh ./test_malloc_atexit.exe done sh ../gdb_shell.sh sh ../../build/test_launcher.sh -l libtbbmalloc_proxy_debug.so.2 ./test_malloc_overload.exe done sh ../gdb_shell.sh sh ../../build/test_launcher.sh ./test_malloc_overload_proxy.exe done sh ../gdb_shell.sh sh ../../build/test_launcher.sh ./test_malloc_lib_unload.exe done sh ../gdb_shell.sh sh ../../build/test_launcher.sh ./test_malloc_used_by_lib.exe done sh ../gdb_shell.sh ./test_malloc_whitebox.exe 1:4 done sh ../gdb_shell.sh sh ../../build/test_launcher.sh -u ./test_malloc_compliance.exe 1:4 done sh ../gdb_shell.sh ./test_ScalableAllocator.exe done sh ../gdb_shell.sh ./test_ScalableAllocator_STL.exe done sh ../gdb_shell.sh ./test_malloc_regression.exe done sh ../gdb_shell.sh ./test_malloc_init_shutdown.exe done sh ../gdb_shell.sh ./test_malloc_pure_c.exe done make[2]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' make -C "./build/linux_armv7_gcc_cc8_libc2.26_debug" -r -f ../../build/Makefile.test cfg=debug make[2]: Entering directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' g++ -o test_assembly.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_assembly.cpp g++ -o test_global_control.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_global_control.cpp g++ -o test_tbb_fork.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_tbb_fork.cpp g++ -o test_assembly_compiler_builtins.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -D__TBB_TEST_BUILTINS=1 -DTBB_USE_ASSERT=0 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_assembly.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_global_control.cpp:45: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ g++ -o test_aligned_space.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_aligned_space.cpp g++ -o test_atomic.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_atomic.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_global_control.cpp:45: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_global_control.cpp:792:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/global_control.h:28, from ../../src/test/test_global_control.cpp:23: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_atomic_pic.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -D__TBB_TEST_PIC=1 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_atomic.cpp g++ -o test_atomic_compiler_builtins.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -D__TBB_TEST_BUILTINS=1 -DTBB_USE_ASSERT=0 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_atomic.cpp ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = bool]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = bool]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = bool]’ ../../src/test/test_atomic.cpp:691:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = Color]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = Color]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = Color]’ ../../src/test/test_atomic.cpp:712:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long long unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:1052:68: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:439:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long long int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long long int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long long int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long long int]’ ../../src/test/test_atomic.cpp:1053:50: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:438:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(__TBB_LONG_LONG) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:1060:53: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:444:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned long) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long int]’ ../../src/test/test_atomic.cpp:1061:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:443:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(long) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = unsigned int]’ ../../src/test/test_atomic.cpp:1062:51: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:470:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = int]’ ../../src/test/test_atomic.cpp:1063:33: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:471:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(int) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = short unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:1064:55: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:474:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned short) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = short int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = short int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = short int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = short int]’ ../../src/test/test_atomic.cpp:1065:37: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:475:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(short) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = signed char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = signed char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = signed char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = signed char]’ ../../src/test/test_atomic.cpp:1066:49: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:477:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(signed char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = bool]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = bool]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = bool]’ ../../src/test/test_atomic.cpp:691:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = Color]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = Color]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = Color]’ ../../src/test/test_atomic.cpp:712:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = unsigned char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = unsigned char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = unsigned char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = unsigned char]’ ../../src/test/test_atomic.cpp:1067:53: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = char]’ ../../src/test/test_atomic.cpp:1068:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:476:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = wchar_t]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = wchar_t]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = wchar_t]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = wchar_t]’ ../../src/test/test_atomic.cpp:1069:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:481:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(wchar_t) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = bool]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = bool]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = bool]’ ../../src/test/test_atomic.cpp:691:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<1>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<1>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<1>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<1>]’ ../../src/test/test_atomic.cpp:1072:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = Color]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = Color]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = Color]’ ../../src/test/test_atomic.cpp:712:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<2>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<2>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<2>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<2>]’ ../../src/test/test_atomic.cpp:1073:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<3>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<3>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<3>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<3>]’ ../../src/test/test_atomic.cpp:1074:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<4>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<4>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<4>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<4>]’ ../../src/test/test_atomic.cpp:1075:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<5>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<5>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<5>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<5>]’ ../../src/test/test_atomic.cpp:1076:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<6>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<6>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<6>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<6>]’ ../../src/test/test_atomic.cpp:1077:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<7>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<7>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<7>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<7>]’ ../../src/test/test_atomic.cpp:1078:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<8>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<8>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<8>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<8>]’ ../../src/test/test_atomic.cpp:1079:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = IncompleteType*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = IncompleteType*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = IncompleteType*]’ ../../src/test/test_atomic.cpp:685:24: required from ‘void TestAtomicPointerToTypeOfUnknownSize(const char*) [with Ptr = IncompleteType*]’ ../../src/test/test_atomic.cpp:1080:78: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long long unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:1052:68: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:439:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long long int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long long int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long long int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long long int]’ ../../src/test/test_atomic.cpp:1053:50: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:438:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(__TBB_LONG_LONG) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = void*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = void*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = void*]’ ../../src/test/test_atomic.cpp:685:24: required from ‘void TestAtomicPointerToTypeOfUnknownSize(const char*) [with Ptr = void*]’ ../../src/test/test_atomic.cpp:1081:58: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:503:19: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl { ^~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:1060:53: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:444:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned long) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long int]’ ../../src/test/test_atomic.cpp:1061:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:443:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(long) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = float]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = float]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = float]’ ../../src/test/test_atomic.cpp:759:22: required from ‘void TestAtomicFloat(const char*) [with T = float]’ ../../src/test/test_atomic.cpp:1087:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = unsigned int]’ ../../src/test/test_atomic.cpp:1062:51: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:470:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = double]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = double]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = double]’ ../../src/test/test_atomic.cpp:759:22: required from ‘void TestAtomicFloat(const char*) [with T = double]’ ../../src/test/test_atomic.cpp:1089:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = int]’ ../../src/test/test_atomic.cpp:1063:33: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:471:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(int) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = short unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:1064:55: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:474:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned short) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long long unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long long unsigned int]’ ../../src/test/test_atomic.cpp:1052:68: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:439:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = short int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = short int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = short int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = short int]’ ../../src/test/test_atomic.cpp:1065:37: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:475:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(short) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long long int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long long int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long long int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long long int]’ ../../src/test/test_atomic.cpp:1053:50: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:438:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(__TBB_LONG_LONG) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = signed char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = signed char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = signed char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = signed char]’ ../../src/test/test_atomic.cpp:1066:49: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:477:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(signed char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long unsigned int]’ ../../src/test/test_atomic.cpp:1060:53: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:444:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned long) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = unsigned char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = unsigned char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = unsigned char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = unsigned char]’ ../../src/test/test_atomic.cpp:1067:53: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = long int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = long int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = long int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = long int]’ ../../src/test/test_atomic.cpp:1061:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:443:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(long) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = char]’ ../../src/test/test_atomic.cpp:1068:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:476:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = unsigned int]’ ../../src/test/test_atomic.cpp:1062:51: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:470:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = wchar_t]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = wchar_t]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = wchar_t]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = wchar_t]’ ../../src/test/test_atomic.cpp:1069:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:481:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(wchar_t) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = int]’ ../../src/test/test_atomic.cpp:1063:33: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:471:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(int) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = short unsigned int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = short unsigned int]’ ../../src/test/test_atomic.cpp:1064:55: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:474:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned short) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<1>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<1>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<1>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<1>]’ ../../src/test/test_atomic.cpp:1072:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = short int]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = short int]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = short int]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = short int]’ ../../src/test/test_atomic.cpp:1065:37: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:475:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(short) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = signed char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = signed char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = signed char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = signed char]’ ../../src/test/test_atomic.cpp:1066:49: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:477:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(signed char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = unsigned char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = unsigned char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = unsigned char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = unsigned char]’ ../../src/test/test_atomic.cpp:1067:53: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = char]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = char]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = char]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = char]’ ../../src/test/test_atomic.cpp:1068:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:476:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<2>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<2>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<2>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<2>]’ ../../src/test/test_atomic.cpp:1073:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<3>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<3>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<3>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<3>]’ ../../src/test/test_atomic.cpp:1074:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<4>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<4>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<4>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<4>]’ ../../src/test/test_atomic.cpp:1075:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = wchar_t]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = wchar_t]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = wchar_t]’ ../../src/test/test_atomic.cpp:625:22: required from ‘void TestAtomicInteger(const char*) [with T = wchar_t]’ ../../src/test/test_atomic.cpp:1069:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:481:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(wchar_t) ^~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<5>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<5>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<5>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<5>]’ ../../src/test/test_atomic.cpp:1076:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<1>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<1>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<1>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<1>]’ ../../src/test/test_atomic.cpp:1072:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<6>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<6>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<6>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<6>]’ ../../src/test/test_atomic.cpp:1077:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<2>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<2>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<2>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<2>]’ ../../src/test/test_atomic.cpp:1073:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<7>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<7>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<7>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<7>]’ ../../src/test/test_atomic.cpp:1078:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<3>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<3>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<3>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<3>]’ ../../src/test/test_atomic.cpp:1074:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<4>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<4>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<4>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<4>]’ ../../src/test/test_atomic.cpp:1075:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<8>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<8>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<8>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<8>]’ ../../src/test/test_atomic.cpp:1079:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<5>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<5>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<5>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<5>]’ ../../src/test/test_atomic.cpp:1076:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = IncompleteType*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = IncompleteType*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = IncompleteType*]’ ../../src/test/test_atomic.cpp:685:24: required from ‘void TestAtomicPointerToTypeOfUnknownSize(const char*) [with Ptr = IncompleteType*]’ ../../src/test/test_atomic.cpp:1080:78: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<6>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<6>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<6>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<6>]’ ../../src/test/test_atomic.cpp:1077:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = void*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = void*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = void*]’ ../../src/test/test_atomic.cpp:685:24: required from ‘void TestAtomicPointerToTypeOfUnknownSize(const char*) [with Ptr = void*]’ ../../src/test/test_atomic.cpp:1081:58: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:503:19: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl { ^~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<7>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<7>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<7>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<7>]’ ../../src/test/test_atomic.cpp:1078:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = float]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = float]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = float]’ ../../src/test/test_atomic.cpp:759:22: required from ‘void TestAtomicFloat(const char*) [with T = float]’ ../../src/test/test_atomic.cpp:1087:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = ArrayElement<8>*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = ArrayElement<8>*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = ArrayElement<8>*]’ ../../src/test/test_atomic.cpp:673:23: required from ‘void TestAtomicPointer() [with T = ArrayElement<8>]’ ../../src/test/test_atomic.cpp:1079:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic*>’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = double]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = double]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = double]’ ../../src/test/test_atomic.cpp:759:22: required from ‘void TestAtomicFloat(const char*) [with T = double]’ ../../src/test/test_atomic.cpp:1089:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = IncompleteType*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = IncompleteType*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = IncompleteType*]’ ../../src/test/test_atomic.cpp:685:24: required from ‘void TestAtomicPointerToTypeOfUnknownSize(const char*) [with Ptr = IncompleteType*]’ ../../src/test/test_atomic.cpp:1080:78: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = void*]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = void*]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = void*]’ ../../src/test/test_atomic.cpp:685:24: required from ‘void TestAtomicPointerToTypeOfUnknownSize(const char*) [with Ptr = void*]’ ../../src/test/test_atomic.cpp:1081:58: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:503:19: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl { ^~~~~~~~~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = float]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = float]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = float]’ ../../src/test/test_atomic.cpp:759:22: required from ‘void TestAtomicFloat(const char*) [with T = float]’ ../../src/test/test_atomic.cpp:1087:35: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ ../../src/test/test_atomic.cpp: In instantiation of ‘initialization_tests::test_initialization_fixture::test_initialization_fixture() [with T = double]’: ../../src/test/test_atomic.cpp:312:12: required from ‘void TestValueInitialization() [with T = double]’ ../../src/test/test_atomic.cpp:537:31: required from ‘void TestOperations(T, T, T) [with T = double]’ ../../src/test/test_atomic.cpp:759:22: required from ‘void TestAtomicFloat(const char*) [with T = double]’ ../../src/test/test_atomic.cpp:1089:41: required from here ../../src/test/test_atomic.cpp:301:19: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_atomic.cpp:35: ../../include/tbb/atomic.h:407:8: note: ‘struct tbb::atomic’ declared here struct atomic: internal::atomic_impl { ^~~~~~ g++ -o test_blocked_range.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_blocked_range.cpp g++ -o test_blocked_range2d.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_blocked_range2d.cpp g++ -o test_blocked_range3d.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_blocked_range3d.cpp g++ -o test_concurrent_queue.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_concurrent_queue.cpp In file included from ../../include/tbb/concurrent_queue.h:24, from ../../src/test/test_concurrent_queue.cpp:23: ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = Foo]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = Foo; A = tbb::cache_aligned_allocator; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:903:8: required from ‘void TestIterator() [with CQ = tbb::strict_ppl::concurrent_queue]’ ../../src/test/test_concurrent_queue.cpp:1259:47: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = char]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = char; A = tbb::cache_aligned_allocator; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:1184:8: required from ‘void TestPrimitiveTypes(int, T) [with CQ = tbb::strict_ppl::concurrent_queue; T = char]’ ../../src/test/test_concurrent_queue.cpp:1280:79: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = int]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = int; A = tbb::cache_aligned_allocator; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:1184:8: required from ‘void TestPrimitiveTypes(int, T) [with CQ = tbb::strict_ppl::concurrent_queue; T = int]’ ../../src/test/test_concurrent_queue.cpp:1281:78: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = float]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = float; A = tbb::cache_aligned_allocator; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:1184:8: required from ‘void TestPrimitiveTypes(int, T) [with CQ = tbb::strict_ppl::concurrent_queue; T = float]’ ../../src/test/test_concurrent_queue.cpp:1282:86: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = double]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = double; A = tbb::cache_aligned_allocator; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:1184:8: required from ‘void TestPrimitiveTypes(int, T) [with CQ = tbb::strict_ppl::concurrent_queue; T = double]’ ../../src/test/test_concurrent_queue.cpp:1283:88: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = MoveOperationTracker]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = MoveOperationTracker; A = tbb::cache_aligned_allocator; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:1501:8: required from ‘void TestMoveSupport() [with CQ = tbb::strict_ppl::concurrent_queue; push_t push_op = (push_t)0; pop_t pop_op = (pop_t)1]’ ../../src/test/test_concurrent_queue.cpp:1525:89: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = Bar]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = Bar; A = allocator; tbb::strict_ppl::concurrent_queue::allocator_type = allocator]’ ../../src/test/test_concurrent_queue.cpp:208:71: required from ‘ConcQWithSizeWrapper::ConcQWithSizeWrapper(const A&) [with T = Bar; A = allocator]’ ../../src/test/test_concurrent_queue.cpp:789:8: required from ‘void TestMoveConstructors() [with CQ = ConcQWithSizeWrapper >; T = Bar]’ ../../src/test/test_concurrent_queue.cpp:841:78: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = FooEx]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = FooEx; A = static_counting_allocator, unsigned int>; tbb::strict_ppl::concurrent_queue::allocator_type = static_counting_allocator, unsigned int>]’ ../../src/test/test_concurrent_queue.cpp:206:28: required from ‘ConcQWithSizeWrapper::ConcQWithSizeWrapper() [with T = FooEx; A = static_counting_allocator, unsigned int>]’ ../../src/test/test_concurrent_queue.cpp:1045:18: required from ‘void TestExceptionBody() [with CQ = ConcQWithSizeWrapper; A1 = static_counting_allocator, unsigned int>; A2 = static_counting_allocator, unsigned int>; T = FooEx]’ ../../src/test/test_concurrent_queue.cpp:1155:80: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = BarEx]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = BarEx; A = tbb::cache_aligned_allocator; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:206:28: required from ‘ConcQWithSizeWrapper::ConcQWithSizeWrapper() [with T = BarEx; A = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:681:11: required from ‘void TestConstructors() [with CQ = ConcQWithSizeWrapper; T = Bar; TIter = BarIterator; CQ_EX = ConcQWithSizeWrapper; T_EX = BarEx]’ ../../src/test/test_concurrent_queue.cpp:1273:101: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = NonTrivialConstructorType]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = NonTrivialConstructorType; A = tbb::cache_aligned_allocator; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:206:28: required from ‘ConcQWithSizeWrapper::ConcQWithSizeWrapper() [with T = NonTrivialConstructorType; A = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_queue.cpp:1563:8: required from ‘void TestEmplaceInQueue() [with CQ = ConcQWithSizeWrapper; emplace_t emplace_op = (emplace_t)0]’ ../../src/test/test_concurrent_queue.cpp:1599:87: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_queue.cpp:26: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::atomic; Allocator = std::allocator; debug_allocator::pointer = tbb::atomic*; debug_allocator::size_type = unsigned int]’: ../../src/test/test_concurrent_queue.cpp:1625:17: required from ‘void Examine(Queue, const std::vector&) [with Queue = ConcQWithSizeWrapper, debug_allocator, std::allocator> >; typename Queue::value_type = tbb::atomic]’ ../../src/test/test_concurrent_queue.cpp:1644:12: required from ‘void TypeTester(const std::vector&) [with Queue = ConcQWithSizeWrapper, tbb::cache_aligned_allocator > >; QueueDebugAlloc = ConcQWithSizeWrapper, debug_allocator, std::allocator> >; typename Queue::value_type = tbb::atomic]’ ../../src/test/test_concurrent_queue.cpp:1660:115: required from ‘void TestTypes(const std::vector&) [with value_type = tbb::atomic]’ ../../src/test/test_concurrent_queue.cpp:1676:21: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_queue_impl.h:30, from ../../include/tbb/concurrent_queue.h:24, from ../../src/test/test_concurrent_queue.cpp:23: ../../include/tbb/internal/../atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:471:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(int) ^~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_queue.h:24, from ../../src/test/test_concurrent_queue.cpp:23: ../../include/tbb/internal/_concurrent_queue_impl.h: In instantiation of ‘tbb::strict_ppl::internal::concurrent_queue_base_v3::concurrent_queue_base_v3() [with T = tbb::atomic]’: ../../include/tbb/concurrent_queue.h:85:25: required from ‘tbb::strict_ppl::concurrent_queue::concurrent_queue(const allocator_type&) [with T = tbb::atomic; A = tbb::cache_aligned_allocator >; tbb::strict_ppl::concurrent_queue::allocator_type = tbb::cache_aligned_allocator >]’ ../../src/test/test_concurrent_queue.cpp:206:28: required from ‘ConcQWithSizeWrapper::ConcQWithSizeWrapper() [with T = tbb::atomic; A = tbb::cache_aligned_allocator >]’ ../../src/test/test_concurrent_queue.cpp:1635:11: required from ‘void TypeTester(const std::vector&) [with Queue = ConcQWithSizeWrapper, tbb::cache_aligned_allocator > >; QueueDebugAlloc = ConcQWithSizeWrapper, debug_allocator, std::allocator> >; typename Queue::value_type = tbb::atomic]’ ../../src/test/test_concurrent_queue.cpp:1660:115: required from ‘void TestTypes(const std::vector&) [with value_type = tbb::atomic]’ ../../src/test/test_concurrent_queue.cpp:1676:21: required from here ../../include/tbb/internal/_concurrent_queue_impl.h:528:11: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::strict_ppl::internal::concurrent_queue_rep >’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset(my_rep,0,sizeof(concurrent_queue_rep)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/tbb/internal/_concurrent_queue_impl.h:416:8: note: ‘struct tbb::strict_ppl::internal::concurrent_queue_rep >’ declared here struct concurrent_queue_rep : public concurrent_queue_rep_base { ^~~~~~~~~~~~~~~~~~~~ g++ -o test_concurrent_vector.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_concurrent_vector.cpp In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = int*; T = int; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = int*; T = int; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, int>]’ ../../src/test/test_concurrent_vector.cpp:762:5: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = std::move_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign> >; T = FooWithAssign; A = static_shared_counting_allocator, arena, unsigned int>, unsigned int>; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = std::move_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign> >; T = FooWithAssign; A = static_shared_counting_allocator, arena, unsigned int>, unsigned int>; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>]’ ../../src/test/test_concurrent_vector.cpp:921:111: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = move_semantics_helpers::move_only_type; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1147:60: required from ‘tbb::concurrent_vector::push_back_helper::element_construction_guard::~element_construction_guard() [with T = move_semantics_helpers::move_only_type; A = tbb::cache_aligned_allocator]’ ../../include/tbb/concurrent_vector.h:1139:12: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::push_back(T&&) [with T = move_semantics_helpers::move_only_type; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, move_semantics_helpers::move_only_type>]’ ../../src/test/test_concurrent_vector.cpp:831:31: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct move_semantics_helpers::move_only_type’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_concurrent_vector.cpp:818:12: note: ‘struct move_semantics_helpers::move_only_type’ declared here struct move_only_type:NoCopy{ ^~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = emplace_helpers::wrapper_type; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1147:60: required from ‘tbb::concurrent_vector::push_back_helper::element_construction_guard::~element_construction_guard() [with T = emplace_helpers::wrapper_type; A = tbb::cache_aligned_allocator]’ ../../include/tbb/concurrent_vector.h:1139:12: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::emplace_back(Args&& ...) [with Args = {int, int}; T = emplace_helpers::wrapper_type; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, emplace_helpers::wrapper_type>]’ ../../src/test/test_concurrent_vector.cpp:852:23: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct emplace_helpers::wrapper_type’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_concurrent_vector.cpp:837:12: note: ‘struct emplace_helpers::wrapper_type’ declared here struct wrapper_type:NoCopy{ ^~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:36: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = Foo; Allocator = std::allocator; debug_allocator::pointer = Foo*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:1040:81: required from ‘static void* tbb::concurrent_vector::internal_allocator(tbb::internal::concurrent_vector_base_v3&, std::size_t) [with T = Foo; A = debug_allocator; std::size_t = unsigned int]’ ../../include/tbb/concurrent_vector.h:616:32: required from ‘tbb::concurrent_vector::concurrent_vector(const allocator_type&) [with T = Foo; A = debug_allocator; tbb::concurrent_vector::allocator_type = debug_allocator]’ ../../src/test/test_concurrent_vector.cpp:1430:12: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct Foo’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:38: ../../src/test/test_container_move_support.h:120:8: note: ‘struct Foo’ declared here struct Foo : FooLimit, Harness::StateTrackable{ ^~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = Foo; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1147:60: required from ‘tbb::concurrent_vector::push_back_helper::element_construction_guard::~element_construction_guard() [with T = Foo; A = debug_allocator]’ ../../include/tbb/concurrent_vector.h:1139:12: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::push_back(T&&) [with T = Foo; A = debug_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, Foo>]’ ../../src/test/test_concurrent_vector.cpp:1453:37: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct Foo’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:38: ../../src/test/test_container_move_support.h:120:8: note: ‘struct Foo’ declared here struct Foo : FooLimit, Harness::StateTrackable{ ^~~ In file included from ../../src/test/test_concurrent_vector.cpp:36: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = push_back_exception_safety_helpers::throwing_foo; Allocator = std::allocator; debug_allocator::pointer = push_back_exception_safety_helpers::throwing_foo*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:1040:81: required from ‘static void* tbb::concurrent_vector::internal_allocator(tbb::internal::concurrent_vector_base_v3&, std::size_t) [with T = push_back_exception_safety_helpers::throwing_foo; A = debug_allocator; std::size_t = unsigned int]’ ../../include/tbb/concurrent_vector.h:616:32: required from ‘tbb::concurrent_vector::concurrent_vector(const allocator_type&) [with T = push_back_exception_safety_helpers::throwing_foo; A = debug_allocator; tbb::concurrent_vector::allocator_type = debug_allocator]’ ../../src/test/test_concurrent_vector.cpp:1430:12: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct push_back_exception_safety_helpers::throwing_foo’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_concurrent_vector.cpp:1423:12: note: ‘struct push_back_exception_safety_helpers::throwing_foo’ declared here struct throwing_foo:Foo{ ^~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = push_back_exception_safety_helpers::throwing_foo; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1147:60: required from ‘tbb::concurrent_vector::push_back_helper::element_construction_guard::~element_construction_guard() [with T = push_back_exception_safety_helpers::throwing_foo; A = debug_allocator]’ ../../include/tbb/concurrent_vector.h:1139:12: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::emplace_back(Args&& ...) [with Args = {int, int}; T = push_back_exception_safety_helpers::throwing_foo; A = debug_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, push_back_exception_safety_helpers::throwing_foo>]’ ../../src/test/test_concurrent_vector.cpp:1470:31: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct push_back_exception_safety_helpers::throwing_foo’ with no trivial copy-assignment; use assignment instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_concurrent_vector.cpp:1423:12: note: ‘struct push_back_exception_safety_helpers::throwing_foo’ declared here struct throwing_foo:Foo{ ^~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:36: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::atomic; Allocator = std::allocator; debug_allocator::pointer = tbb::atomic*; debug_allocator::size_type = unsigned int]’: ../../src/test/test_concurrent_vector.cpp:1622:5: required from ‘void Examine(tbb::concurrent_vector, const std::vector&) [with bool default_construction_present = true; Type = tbb::atomic; Allocator = debug_allocator, std::allocator>]’ ../../src/test/test_concurrent_vector.cpp:1660:42: required from ‘void TypeTester(const std::vector&) [with bool default_construction_present = true; Type = tbb::atomic]’ ../../src/test/test_concurrent_vector.cpp:1697:68: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_vector.h:26, from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:471:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(int) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:36: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::cache_aligned_allocator; debug_allocator::pointer = Foo*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:248:43: required from ‘static_counting_allocator::pointer static_counting_allocator::allocate(static_counting_allocator::size_type) [with base_alloc_t = debug_allocator; count_t = unsigned int; static_counting_allocator::pointer = Foo*; static_counting_allocator::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:1040:81: required from ‘static void* tbb::concurrent_vector::internal_allocator(tbb::internal::concurrent_vector_base_v3&, std::size_t) [with T = Foo; A = static_counting_allocator, unsigned int>; std::size_t = unsigned int]’ ../../include/tbb/concurrent_vector.h:616:32: required from ‘tbb::concurrent_vector::concurrent_vector(const allocator_type&) [with T = Foo; A = static_counting_allocator, unsigned int>; tbb::concurrent_vector::allocator_type = static_counting_allocator, unsigned int>]’ ../../src/test/test_concurrent_vector.cpp:119:26: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘tbb::cache_aligned_allocator::value_type’ {aka ‘struct Foo’} with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:38: ../../src/test/test_container_move_support.h:120:8: note: ‘tbb::cache_aligned_allocator::value_type’ {aka ‘struct Foo’} declared here struct Foo : FooLimit, Harness::StateTrackable{ ^~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = FooWithAssign; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = FooWithAssign; A = local_counting_allocator, unsigned int>]’ ../../include/tbb/concurrent_vector.h:1278:25: required from ‘static void tbb::concurrent_vector::initialize_array_by(void*, const void*, tbb::concurrent_vector::size_type) [with T = FooWithAssign; A = local_counting_allocator, unsigned int>; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:717:102: required from ‘tbb::concurrent_vector::concurrent_vector(tbb::concurrent_vector::size_type, tbb::concurrent_vector::const_reference, const allocator_type&) [with T = FooWithAssign; A = local_counting_allocator, unsigned int>; tbb::concurrent_vector::size_type = unsigned int; tbb::concurrent_vector::const_reference = const FooWithAssign&; tbb::concurrent_vector::allocator_type = local_counting_allocator, unsigned int>]’ ../../src/test/test_concurrent_vector.cpp:868:61: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct FooWithAssign’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:38: ../../src/test/test_container_move_support.h:209:8: note: ‘struct FooWithAssign’ declared here struct FooWithAssign: public Foo { ^~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = test_move_in_shrink_to_fit_helpers::dummy; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = test_move_in_shrink_to_fit_helpers::dummy; A = tbb::cache_aligned_allocator]’ ../../include/tbb/concurrent_vector.h:1300:25: required from ‘static void tbb::concurrent_vector::move_array_if_noexcept(void*, const void*, tbb::concurrent_vector::size_type) [with T = test_move_in_shrink_to_fit_helpers::dummy; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:1180:17: required from ‘void tbb::concurrent_vector::shrink_to_fit() [with T = test_move_in_shrink_to_fit_helpers::dummy; A = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_vector.cpp:967:28: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct test_move_in_shrink_to_fit_helpers::dummy’ with no trivial copy-assignment; use assignment instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_concurrent_vector.cpp:928:12: note: ‘struct test_move_in_shrink_to_fit_helpers::dummy’ declared here struct dummy : Harness::StateTrackable<>{ ^~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:36: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = FooWithAssign; Allocator = std::allocator; debug_allocator::pointer = FooWithAssign*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:248:43: required from ‘static_counting_allocator::pointer static_counting_allocator::allocate(static_counting_allocator::size_type) [with base_alloc_t = debug_allocator; count_t = unsigned int; static_counting_allocator::pointer = FooWithAssign*; static_counting_allocator::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:1040:81: required from ‘static void* tbb::concurrent_vector::internal_allocator(tbb::internal::concurrent_vector_base_v3&, std::size_t) [with T = FooWithAssign; A = static_counting_allocator, unsigned int>; std::size_t = unsigned int]’ ../../include/tbb/concurrent_vector.h:730:32: required from ‘tbb::concurrent_vector::concurrent_vector(I, I, const allocator_type&) [with I = FooIterator; T = FooWithAssign; A = static_counting_allocator, unsigned int>; tbb::concurrent_vector::allocator_type = static_counting_allocator, unsigned int>]’ ../../src/test/test_concurrent_vector.cpp:1158:52: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct FooWithAssign’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:38: ../../src/test/test_container_move_support.h:209:8: note: ‘struct FooWithAssign’ declared here struct FooWithAssign: public Foo { ^~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = tbb::internal::vector_iterator, int>; T = int; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = tbb::internal::vector_iterator, int>; T = int; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, int>]’ ../../src/test/test_concurrent_vector.cpp:1608:5: required from ‘void Examine(tbb::concurrent_vector, const std::vector&) [with bool default_construction_present = true; Type = int; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_concurrent_vector.cpp:1647:42: required from ‘void TypeTester(const std::vector&) [with bool default_construction_present = true; Type = int]’ ../../src/test/test_concurrent_vector.cpp:1684:65: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = tbb::internal::vector_iterator >, int>; T = int; A = debug_allocator; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = tbb::internal::vector_iterator >, int>; T = int; A = debug_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, int>]’ ../../src/test/test_concurrent_vector.cpp:1608:5: required from ‘void Examine(tbb::concurrent_vector, const std::vector&) [with bool default_construction_present = true; Type = int; Allocator = debug_allocator]’ ../../src/test/test_concurrent_vector.cpp:1660:42: required from ‘void TypeTester(const std::vector&) [with bool default_construction_present = true; Type = int]’ ../../src/test/test_concurrent_vector.cpp:1684:65: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = tbb::internal::vector_iterator, tbb::cache_aligned_allocator > >, tbb::atomic >; T = tbb::atomic; A = tbb::cache_aligned_allocator >; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = tbb::internal::vector_iterator, tbb::cache_aligned_allocator > >, tbb::atomic >; T = tbb::atomic; A = tbb::cache_aligned_allocator >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, tbb::cache_aligned_allocator > >, tbb::atomic >]’ ../../src/test/test_concurrent_vector.cpp:1608:5: required from ‘void Examine(tbb::concurrent_vector, const std::vector&) [with bool default_construction_present = true; Type = tbb::atomic; Allocator = tbb::cache_aligned_allocator >]’ ../../src/test/test_concurrent_vector.cpp:1647:42: required from ‘void TypeTester(const std::vector&) [with bool default_construction_present = true; Type = tbb::atomic]’ ../../src/test/test_concurrent_vector.cpp:1697:68: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = tbb::internal::vector_iterator, debug_allocator, std::allocator> >, tbb::atomic >; T = tbb::atomic; A = debug_allocator, std::allocator>; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = tbb::internal::vector_iterator, debug_allocator, std::allocator> >, tbb::atomic >; T = tbb::atomic; A = debug_allocator, std::allocator>; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, debug_allocator, std::allocator> >, tbb::atomic >]’ ../../src/test/test_concurrent_vector.cpp:1608:5: required from ‘void Examine(tbb::concurrent_vector, const std::vector&) [with bool default_construction_present = true; Type = tbb::atomic; Allocator = debug_allocator, std::allocator>]’ ../../src/test/test_concurrent_vector.cpp:1660:42: required from ‘void TypeTester(const std::vector&) [with bool default_construction_present = true; Type = tbb::atomic]’ ../../src/test/test_concurrent_vector.cpp:1697:68: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/tbb_exception.h:123, from ../../include/tbb/concurrent_vector.h:25, from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = Foo*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:248:43: required from ‘static_counting_allocator::pointer static_counting_allocator::allocate(static_counting_allocator::size_type) [with base_alloc_t = tbb::zero_allocator; count_t = tbb::atomic; static_counting_allocator::pointer = Foo*; static_counting_allocator::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:1040:81: required from ‘static void* tbb::concurrent_vector::internal_allocator(tbb::internal::concurrent_vector_base_v3&, std::size_t) [with T = Foo; A = static_counting_allocator >; std::size_t = unsigned int]’ ../../include/tbb/concurrent_vector.h:715:32: required from ‘tbb::concurrent_vector::concurrent_vector(tbb::concurrent_vector::size_type, tbb::concurrent_vector::const_reference, const allocator_type&) [with T = Foo; A = static_counting_allocator >; tbb::concurrent_vector::size_type = unsigned int; tbb::concurrent_vector::const_reference = const Foo&; tbb::concurrent_vector::allocator_type = static_counting_allocator >]’ ../../src/test/test_concurrent_vector.cpp:461:14: required from ‘void TestConcurrentGrowToAtLeastImpl() [with bool use_two_arg_form = false]’ ../../src/test/test_concurrent_vector.cpp:477:44: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘tbb::tbb_allocator::value_type’ {aka ‘struct Foo’} with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:38: ../../src/test/test_container_move_support.h:120:8: note: ‘tbb::tbb_allocator::value_type’ {aka ‘struct Foo’} declared here struct Foo : FooLimit, Harness::StateTrackable{ ^~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::atomic; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::atomic; A = tbb::cache_aligned_allocator >]’ ../../include/tbb/concurrent_vector.h:1283:25: required from ‘static void tbb::concurrent_vector::copy_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::atomic; A = tbb::cache_aligned_allocator >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:644:46: required from ‘tbb::concurrent_vector::concurrent_vector(const tbb::concurrent_vector&, const allocator_type&) [with T = tbb::atomic; A = tbb::cache_aligned_allocator >; tbb::concurrent_vector::allocator_type = tbb::cache_aligned_allocator >]’ ../../src/test/test_concurrent_vector.cpp:1647:42: required from ‘void TypeTester(const std::vector&) [with bool default_construction_present = true; Type = tbb::atomic]’ ../../src/test/test_concurrent_vector.cpp:1697:68: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_vector.h:26, from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:471:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(int) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_vector.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = const char*; T = char; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = const char*; T = char; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, char>]’ ../../include/tbb/concurrent_vector.h:812:60: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(std::initializer_list<_Tp>) [with T = char; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, char>]’ ../../src/test/test_concurrent_vector.cpp:781:9: required from ‘static void test_grow_by::do_test(const std::initializer_list&, const container_type&) [with container_type = tbb::concurrent_vector; element_type = char]’ ../../src/test/test_initializer_list.h:77:30: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::concurrent_vector; test_assign = initializer_list_support_tests::test_assign; test_special = test_grow_by; typename container_type::value_type = char]’ ../../src/test/test_initializer_list.h:82:71: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::concurrent_vector; test_special = test_grow_by; typename container_type::value_type = char]’ ../../src/test/test_concurrent_vector.cpp:789:88: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = const int*; T = int; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = const int*; T = int; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, int>]’ ../../include/tbb/concurrent_vector.h:812:60: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(std::initializer_list<_Tp>) [with T = int; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, int>]’ ../../src/test/test_concurrent_vector.cpp:781:9: required from ‘static void test_grow_by::do_test(const std::initializer_list&, const container_type&) [with container_type = tbb::concurrent_vector; element_type = int]’ ../../src/test/test_initializer_list.h:77:30: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::concurrent_vector; test_assign = initializer_list_support_tests::test_assign; test_special = test_grow_by; typename container_type::value_type = int]’ ../../src/test/test_initializer_list.h:82:71: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::concurrent_vector; test_special = test_grow_by; typename container_type::value_type = int]’ ../../src/test/test_concurrent_vector.cpp:790:72: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = FooIterator; T = Foo; A = static_counting_allocator >; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = FooIterator; T = Foo; A = static_counting_allocator >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, Foo>]’ ../../src/test/test_concurrent_vector.cpp:550:21: required from ‘void GrowBy::operator()(const tbb::blocked_range&) const [with MyVector = tbb::concurrent_vector > >]’ ../../include/tbb/parallel_for.h:102:37: required from ‘void tbb::interface9::internal::start_for::run_body(Range&) [with Range = tbb::blocked_range; Body = GrowBy > > >; Partitioner = const tbb::simple_partitioner]’ ../../include/tbb/partitioner.h:516:9: required from ‘void tbb::interface9::internal::simple_partition_type::execute(StartType&, Range&) [with StartType = tbb::interface9::internal::start_for, GrowBy > > >, const tbb::simple_partitioner>; Range = tbb::blocked_range]’ ../../include/tbb/parallel_for.h:127:9: required from ‘tbb::task* tbb::interface9::internal::start_for::execute() [with Range = tbb::blocked_range; Body = GrowBy > > >; Partitioner = const tbb::simple_partitioner]’ ../../src/test/test_concurrent_vector.cpp:1794:1: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = FooIterator; T = FooWithAssign; A = static_counting_allocator, unsigned int>; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = FooIterator; T = FooWithAssign; A = static_counting_allocator, unsigned int>; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, unsigned int> >, FooWithAssign>]’ ../../src/test/test_concurrent_vector.cpp:550:21: required from ‘void GrowBy::operator()(const tbb::blocked_range&) const [with MyVector = tbb::concurrent_vector, unsigned int> >]’ ../../include/tbb/parallel_for.h:102:37: required from ‘void tbb::interface9::internal::start_for::run_body(Range&) [with Range = tbb::blocked_range; Body = GrowBy, unsigned int> > >; Partitioner = const tbb::auto_partitioner]’ ../../include/tbb/partitioner.h:429:13: required from ‘void tbb::interface9::internal::balancing_partition_type::work_balance(StartType&, Range&) [with StartType = tbb::interface9::internal::start_for, GrowBy, unsigned int> > >, const tbb::auto_partitioner>; Range = tbb::blocked_range; Mode = tbb::interface9::internal::adaptive_mode]’ ../../include/tbb/partitioner.h:255:9: required from ‘void tbb::interface9::internal::partition_type_base::execute(StartType&, Range&) [with StartType = tbb::interface9::internal::start_for, GrowBy, unsigned int> > >, const tbb::auto_partitioner>; Range = tbb::blocked_range; Partition = tbb::interface9::internal::auto_partition_type]’ ../../include/tbb/parallel_for.h:127:9: required from ‘tbb::task* tbb::interface9::internal::start_for::execute() [with Range = tbb::blocked_range; Body = GrowBy, unsigned int> > >; Partitioner = const tbb::auto_partitioner]’ ../../src/test/test_concurrent_vector.cpp:1794:1: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = const Foo*; T = Foo; A = static_counting_allocator >; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = const Foo*; T = Foo; A = static_counting_allocator >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, Foo>]’ ../../include/tbb/concurrent_vector.h:812:60: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(std::initializer_list<_Tp>) [with T = Foo; A = static_counting_allocator >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, Foo>]’ ../../src/test/test_concurrent_vector.cpp:562:29: required from ‘void GrowBy::operator()(const tbb::blocked_range&) const [with MyVector = tbb::concurrent_vector > >]’ ../../include/tbb/parallel_for.h:102:37: required from ‘void tbb::interface9::internal::start_for::run_body(Range&) [with Range = tbb::blocked_range; Body = GrowBy > > >; Partitioner = const tbb::simple_partitioner]’ ../../include/tbb/partitioner.h:516:9: required from ‘void tbb::interface9::internal::simple_partition_type::execute(StartType&, Range&) [with StartType = tbb::interface9::internal::start_for, GrowBy > > >, const tbb::simple_partitioner>; Range = tbb::blocked_range]’ ../../include/tbb/parallel_for.h:127:9: required from ‘tbb::task* tbb::interface9::internal::start_for::execute() [with Range = tbb::blocked_range; Body = GrowBy > > >; Partitioner = const tbb::simple_partitioner]’ ../../src/test/test_concurrent_vector.cpp:1794:1: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../include/tbb/concurrent_vector.h: In instantiation of ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type) [with Iterator = const FooWithAssign*; T = FooWithAssign; A = static_counting_allocator, unsigned int>; tbb::concurrent_vector::size_type = unsigned int]’: ../../include/tbb/concurrent_vector.h:806:38: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(I, I) [with I = const FooWithAssign*; T = FooWithAssign; A = static_counting_allocator, unsigned int>; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, unsigned int> >, FooWithAssign>]’ ../../include/tbb/concurrent_vector.h:812:60: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(std::initializer_list<_Tp>) [with T = FooWithAssign; A = static_counting_allocator, unsigned int>; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, unsigned int> >, FooWithAssign>]’ ../../src/test/test_concurrent_vector.cpp:562:29: required from ‘void GrowBy::operator()(const tbb::blocked_range&) const [with MyVector = tbb::concurrent_vector, unsigned int> >]’ ../../include/tbb/parallel_for.h:102:37: required from ‘void tbb::interface9::internal::start_for::run_body(Range&) [with Range = tbb::blocked_range; Body = GrowBy, unsigned int> > >; Partitioner = const tbb::auto_partitioner]’ ../../include/tbb/partitioner.h:429:13: required from ‘void tbb::interface9::internal::balancing_partition_type::work_balance(StartType&, Range&) [with StartType = tbb::interface9::internal::start_for, GrowBy, unsigned int> > >, const tbb::auto_partitioner>; Range = tbb::blocked_range; Mode = tbb::interface9::internal::adaptive_mode]’ ../../include/tbb/partitioner.h:255:9: required from ‘void tbb::interface9::internal::partition_type_base::execute(StartType&, Range&) [with StartType = tbb::interface9::internal::start_for, GrowBy, unsigned int> > >, const tbb::auto_partitioner>; Range = tbb::blocked_range; Partition = tbb::interface9::internal::auto_partition_type]’ ../../include/tbb/parallel_for.h:127:9: required from ‘tbb::task* tbb::interface9::internal::start_for::execute() [with Range = tbb::blocked_range; Body = GrowBy, unsigned int> > >; Partitioner = const tbb::auto_partitioner]’ ../../src/test/test_concurrent_vector.cpp:1794:1: required from here ../../include/tbb/concurrent_vector.h:1307:9: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^~~~~~~~ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/atomic.h:32, from ../../src/test/test_atomic.cpp:35: ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = long long unsigned int]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ ../../src/test/test_concurrent_vector.cpp: In function ‘void TestExceptions()’: ../../src/test/test_concurrent_vector.cpp:1213:21: warning: this statement may fall through [-Wimplicit-fallthrough=] if(t) ASSERT(false, NULL); ^~ ../../src/test/test_concurrent_vector.cpp:1214:17: note: here case assign_nt: ^~~~ In file included from ../../include/tbb/atomic.h:32, from ../../src/test/test_atomic.cpp:35: ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = long long unsigned int]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = long long int]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = long long int]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ In file included from ../../include/tbb/atomic.h:32, from ../../src/test/test_atomic.cpp:35: ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = long long unsigned int]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = long long int]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ g++ -o test_concurrent_unordered_set.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_concurrent_unordered_set.cpp In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_set.cpp:165:54: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_set.cpp:166:77: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multiset, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_set.cpp:169:66: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multiset, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_set.cpp:170:85: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_set.cpp:174:116: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_set.cpp:176:90: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_set.cpp:179:131: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator]’ ../../include/tbb/concurrent_unordered_set.h:94:68: required from ‘tbb::interface5::concurrent_unordered_set::concurrent_unordered_set(tbb::interface5::concurrent_unordered_set::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator; tbb::interface5::concurrent_unordered_set::size_type = unsigned int; tbb::interface5::concurrent_unordered_set::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_set::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_set::allocator_type = tbb::tbb_allocator]’ ../../src/test/test_concurrent_unordered_set.cpp:143:40: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:165:54: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:166:77: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multiset, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:169:66: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multiset, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:170:85: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:174:116: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_set.cpp:175:113: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::atomic > >, FooWithAssign>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::atomic > >, FooWithAssign>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:347:5: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_set.cpp:175:113: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, true>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:179:131: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multiset, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multiset, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:88:133: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multiset, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multiset, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:88:133: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::tbb_allocator > >, tbb::atomic >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::tbb_allocator > >, tbb::atomic >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, debug_allocator, std::allocator> >, tbb::atomic >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, debug_allocator, std::allocator> >, tbb::atomic >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::atomic; Allocator = std::allocator; debug_allocator::pointer = tbb::atomic*; debug_allocator::size_type = unsigned int]’: ../../src/test/test_concurrent_unordered_common.h:896:17: required from ‘void Examine(Table, const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_common.h:925:28: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:471:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(int) ^~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:88:133: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::tbb_allocator > >, tbb::atomic >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::tbb_allocator > >, tbb::atomic >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:88:133: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, debug_allocator, std::allocator> >, tbb::atomic >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, debug_allocator, std::allocator> >, tbb::atomic >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator]’ ../../include/tbb/concurrent_unordered_set.h:94:68: required from ‘tbb::interface5::concurrent_unordered_set::concurrent_unordered_set(tbb::interface5::concurrent_unordered_set::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator; tbb::interface5::concurrent_unordered_set::size_type = unsigned int; tbb::interface5::concurrent_unordered_set::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_set::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_set::allocator_type = tbb::tbb_allocator]’ ../../src/test/test_concurrent_unordered_set.cpp:143:40: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:163:51: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::atomic > >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::atomic > >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:164:72: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::atomic > >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::atomic > >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_multiset, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_multiset, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:167:59: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::atomic > >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::atomic > >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_multiset, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_multiset, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:168:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::atomic > >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::atomic > >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:173:111: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:178:124: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, tbb::tbb_allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, tbb::tbb_allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, debug_allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, debug_allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, tbb::tbb_allocator, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multiset, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multiset, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:88:133: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, tbb::tbb_allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, tbb::tbb_allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multiset, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multiset, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:88:133: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, debug_allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, debug_allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, tbb::atomic >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, tbb::atomic >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, tbb::atomic >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, tbb::atomic >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:88:133: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, tbb::atomic >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, tbb::tbb_allocator >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, tbb::atomic >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multiset, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:88:133: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, tbb::atomic > >, int>, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:165:54: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, int>’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:174:116: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, tbb::atomic > >, FooWithAssign>, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:347:5: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_set.cpp:175:113: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator, tbb::atomic > >, FooWithAssign>’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:742:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TestMoveConstructorSingleArgument() [with container_traits = cu_set_type]’ ../../src/test/test_container_move_support.h:778:56: required from ‘void TestMoveConstructor() [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_common.h:813:42: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_set.cpp:194:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, arena, unsigned int>, unsigned int> >, FooWithAssign>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, arena, unsigned int>, unsigned int> >, FooWithAssign>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../include/tbb/concurrent_unordered_set.h:140:40: required from ‘tbb::interface5::concurrent_unordered_set::concurrent_unordered_set(tbb::interface5::concurrent_unordered_set&&, const Allocator&) [with Key = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../src/test/test_container_move_support.h:896:5: required from ‘void TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure() [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_common.h:816:100: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_set.cpp:194:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:742:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TestMoveConstructorSingleArgument() [with container_traits = cu_multiset_type]’ ../../src/test/test_container_move_support.h:778:56: required from ‘void TestMoveConstructor() [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_common.h:813:42: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_set.cpp:195:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, arena, unsigned int>, unsigned int> >, FooWithAssign>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, arena, unsigned int>, unsigned int> >, FooWithAssign>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../include/tbb/concurrent_unordered_set.h:240:40: required from ‘tbb::interface5::concurrent_unordered_multiset::concurrent_unordered_multiset(tbb::interface5::concurrent_unordered_multiset&&, const Allocator&) [with Key = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../src/test/test_container_move_support.h:896:5: required from ‘void TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure() [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_common.h:816:100: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_set.cpp:195:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list >::node*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:265:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t) [with T = int; Allocator = debug_allocator; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list >::node*; tbb::interface5::internal::sokey_t = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:317:17: required from ‘tbb::interface5::internal::split_ordered_list::split_ordered_list(tbb::interface5::internal::split_ordered_list::allocator_type) [with T = int; Allocator = debug_allocator; tbb::interface5::internal::split_ordered_list::allocator_type = debug_allocator]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:731:110: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator >, int>; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator >, int>*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, int>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, Harness::IsEqual>, debug_allocator, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, tbb::tbb_allocator >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, Harness::IsEqual, debug_allocator >; typename Table::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:96:53: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator >, int>’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator >, int>’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:265:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t) [with T = tbb::atomic; Allocator = debug_allocator, std::allocator>; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node*; tbb::interface5::internal::sokey_t = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:317:17: required from ‘tbb::interface5::internal::split_ordered_list::split_ordered_list(tbb::interface5::internal::split_ordered_list::allocator_type) [with T = tbb::atomic; Allocator = debug_allocator, std::allocator>; tbb::interface5::internal::split_ordered_list::allocator_type = debug_allocator, std::allocator>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:731:110: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:86:128: required from ‘void TestTypesSet(const std::__cxx11::list&) [with bool defCtorPresent = true; value_type = tbb::atomic]’ ../../src/test/test_concurrent_unordered_set.cpp:101:53: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, tbb::atomic >’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, tbb::atomic > >::node, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:274:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t, Arg&&, tbb::internal::true_type) [with Arg = FooWithAssign; T = FooWithAssign; Allocator = local_counting_allocator, tbb::atomic >; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node*; tbb::interface5::internal::sokey_t = unsigned int; tbb::internal::true_type = tbb::internal::bool_constant]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1292:27: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::internal_insert(ValueType&&, tbb::interface5::internal::concurrent_unordered_base::nodeptr_t) [with AllowCreate = tbb::internal::bool_constant; ValueType = FooWithAssign; Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, tbb::atomic > >, FooWithAssign>; tbb::interface5::internal::concurrent_unordered_base::nodeptr_t = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node*]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:979:73: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::insert(tbb::interface5::internal::concurrent_unordered_base::value_type&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, tbb::atomic > >, FooWithAssign>; tbb::interface5::internal::concurrent_unordered_base::value_type = FooWithAssign]’ ../../src/test/test_concurrent_unordered_common.h:254:43: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_set.cpp:175:113: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator]’ ../../include/tbb/concurrent_unordered_set.h:203:73: required from ‘tbb::interface5::concurrent_unordered_multiset::concurrent_unordered_multiset(Iterator, Iterator, tbb::interface5::concurrent_unordered_multiset::size_type, const hasher&, const key_equal&, const allocator_type&) [with Iterator = __gnu_cxx::__normal_iterator > >; Key = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator; tbb::interface5::concurrent_unordered_multiset::size_type = unsigned int; tbb::interface5::concurrent_unordered_multiset::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_multiset::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_multiset::allocator_type = tbb::tbb_allocator]’ ../../src/test/test_initializer_list.h:72:24: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_multiset; test_assign = initializer_list_support_tests::skip_test; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = int]’ ../../src/test/test_initializer_list.h:87:69: required from ‘void initializer_list_support_tests::TestInitListSupportWithoutAssign(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_multiset; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = int]’ ../../src/test/test_concurrent_unordered_common.h:138:70: required from ‘void TestInitList(std::initializer_list) [with Table = tbb::interface5::concurrent_unordered_set; MultiTable = tbb::interface5::concurrent_unordered_multiset; typename Traits::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:190:74: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = std::allocator]’ ../../include/tbb/concurrent_unordered_set.h:94:68: required from ‘tbb::interface5::concurrent_unordered_set::concurrent_unordered_set(tbb::interface5::concurrent_unordered_set::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = std::allocator; tbb::interface5::concurrent_unordered_set::size_type = unsigned int; tbb::interface5::concurrent_unordered_set::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_set::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_set::allocator_type = std::allocator]’ ../../src/test/test_container_move_support.h:813:17: required from ‘void TestMoveAssignOperatorPOCMANonStateful() [with container_traits = cu_set_type]’ ../../src/test/test_container_move_support.h:854:61: required from ‘void TestMoveAssignOperator() [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_set.cpp:194:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, FooWithAssign>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, FooWithAssign>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, FooWithAssign>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, false>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = std::allocator]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:808:43: required from ‘tbb::interface5::internal::concurrent_unordered_base& tbb::interface5::internal::concurrent_unordered_base::operator=(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TestMoveAssignOperatorPOCMANonStateful() [with container_traits = cu_set_type]’ ../../src/test/test_container_move_support.h:854:61: required from ‘void TestMoveAssignOperator() [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_set.cpp:194:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, std::allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, FooWithAssign>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, std::allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, FooWithAssign>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../include/tbb/concurrent_unordered_set.h:97:121: required from ‘tbb::interface5::concurrent_unordered_set::concurrent_unordered_set(const Allocator&) [with Key = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../src/test/test_container_move_support.h:790:17: required from ‘void TestMoveAssignOperatorPOCMAStateful() [with container_traits = cu_set_type]’ ../../src/test/test_container_move_support.h:855:58: required from ‘void TestMoveAssignOperator() [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_set.cpp:194:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, arena, unsigned int>, unsigned int> >, FooWithAssign>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, arena, unsigned int>, unsigned int> >, FooWithAssign>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:808:43: required from ‘tbb::interface5::internal::concurrent_unordered_base& tbb::interface5::internal::concurrent_unordered_base::operator=(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>]’ ../../include/tbb/concurrent_unordered_set.h:56:7: required from ‘void TestMoveAssignOperatorPOCMAStateful() [with container_traits = cu_set_type]’ ../../src/test/test_container_move_support.h:855:58: required from ‘void TestMoveAssignOperator() [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_set_type]’ ../../src/test/test_concurrent_unordered_set.cpp:194:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = std::allocator]’ ../../include/tbb/concurrent_unordered_set.h:193:73: required from ‘tbb::interface5::concurrent_unordered_multiset::concurrent_unordered_multiset(tbb::interface5::concurrent_unordered_multiset::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = std::allocator; tbb::interface5::concurrent_unordered_multiset::size_type = unsigned int; tbb::interface5::concurrent_unordered_multiset::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_multiset::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_multiset::allocator_type = std::allocator]’ ../../src/test/test_container_move_support.h:813:17: required from ‘void TestMoveAssignOperatorPOCMANonStateful() [with container_traits = cu_multiset_type]’ ../../src/test/test_container_move_support.h:854:61: required from ‘void TestMoveAssignOperator() [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_set.cpp:195:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, FooWithAssign>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, FooWithAssign>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, FooWithAssign>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, true>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = std::allocator]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:808:43: required from ‘tbb::interface5::internal::concurrent_unordered_base& tbb::interface5::internal::concurrent_unordered_base::operator=(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, std::allocator, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TestMoveAssignOperatorPOCMANonStateful() [with container_traits = cu_multiset_type]’ ../../src/test/test_container_move_support.h:854:61: required from ‘void TestMoveAssignOperator() [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_set.cpp:195:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, std::allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, FooWithAssign>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, std::allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, FooWithAssign>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../include/tbb/concurrent_unordered_set.h:196:126: required from ‘tbb::interface5::concurrent_unordered_multiset::concurrent_unordered_multiset(const Allocator&) [with Key = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../src/test/test_container_move_support.h:790:17: required from ‘void TestMoveAssignOperatorPOCMAStateful() [with container_traits = cu_multiset_type]’ ../../src/test/test_container_move_support.h:855:58: required from ‘void TestMoveAssignOperator() [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_set.cpp:195:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, arena, unsigned int>, unsigned int> >, FooWithAssign>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, arena, unsigned int>, unsigned int> >, FooWithAssign>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:808:43: required from ‘tbb::interface5::internal::concurrent_unordered_base& tbb::interface5::internal::concurrent_unordered_base::operator=(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>]’ ../../include/tbb/concurrent_unordered_set.h:152:7: required from ‘void TestMoveAssignOperatorPOCMAStateful() [with container_traits = cu_multiset_type]’ ../../src/test/test_container_move_support.h:855:58: required from ‘void TestMoveAssignOperator() [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multiset_type]’ ../../src/test/test_concurrent_unordered_set.cpp:195:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, arena, unsigned int>, unsigned int> >, FooWithAssign>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, tbb::atomic > >::node, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:274:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t, Arg&&, tbb::internal::true_type) [with Arg = int; T = int; Allocator = local_counting_allocator, tbb::atomic >; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node*; tbb::interface5::internal::sokey_t = unsigned int; tbb::internal::true_type = tbb::internal::bool_constant]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1292:27: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::internal_insert(ValueType&&, tbb::interface5::internal::concurrent_unordered_base::nodeptr_t) [with AllowCreate = tbb::internal::bool_constant; ValueType = int; Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, tbb::atomic > >, int>; tbb::interface5::internal::concurrent_unordered_base::nodeptr_t = tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node*]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:979:73: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::insert(tbb::interface5::internal::concurrent_unordered_base::value_type&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, tbb::atomic > >, int>; tbb::interface5::internal::concurrent_unordered_base::value_type = int]’ ../../src/test/test_concurrent_unordered_common.h:254:43: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_set, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:163:51: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list, tbb::atomic > >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_set.cpp:53: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, local_counting_allocator, std::allocator>, tbb::atomic > >::node, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:274:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t, Arg&&, tbb::internal::true_type) [with Arg = check_type; T = check_type; Allocator = local_counting_allocator, std::allocator>, tbb::atomic >; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node*; tbb::interface5::internal::sokey_t = unsigned int; tbb::internal::true_type = tbb::internal::bool_constant]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1292:27: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::internal_insert(ValueType&&, tbb::interface5::internal::concurrent_unordered_base::nodeptr_t) [with AllowCreate = tbb::internal::bool_constant; ValueType = check_type; Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >; tbb::interface5::internal::concurrent_unordered_base::nodeptr_t = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node*]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:979:73: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::insert(tbb::interface5::internal::concurrent_unordered_base::value_type&&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, tbb::interface5::internal::hash_compare, tbb::tbb_hash >, std::equal_to > >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, check_type >; tbb::interface5::internal::concurrent_unordered_base::value_type = check_type]’ ../../src/test/test_concurrent_unordered_common.h:254:43: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_set, tbb::tbb_hash >, std::equal_to >, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_set.cpp:173:111: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator]’ ../../include/tbb/concurrent_unordered_set.h:203:73: required from ‘tbb::interface5::concurrent_unordered_multiset::concurrent_unordered_multiset(Iterator, Iterator, tbb::interface5::concurrent_unordered_multiset::size_type, const hasher&, const key_equal&, const allocator_type&) [with Iterator = __gnu_cxx::__normal_iterator > >; Key = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator; tbb::interface5::concurrent_unordered_multiset::size_type = unsigned int; tbb::interface5::concurrent_unordered_multiset::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_multiset::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_multiset::allocator_type = tbb::tbb_allocator]’ ../../src/test/test_initializer_list.h:72:24: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_multiset; test_assign = initializer_list_support_tests::skip_test; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = int]’ ../../src/test/test_initializer_list.h:87:69: required from ‘void initializer_list_support_tests::TestInitListSupportWithoutAssign(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_multiset; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = int]’ ../../src/test/test_concurrent_unordered_common.h:138:70: required from ‘void TestInitList(std::initializer_list) [with Table = tbb::interface5::concurrent_unordered_set; MultiTable = tbb::interface5::concurrent_unordered_multiset; typename Traits::value_type = int]’ ../../src/test/test_concurrent_unordered_set.cpp:190:74: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = double]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = double]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ ../../include/tbb/tbb_machine.h: In function ‘void TestConst(T) [with T = double]’: ../../include/tbb/tbb_machine.h:669:17: warning: ‘*((void*)& z +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] int64_t result = (volatile int64_t&)location; ^~~~~~ g++ -o test_concurrent_unordered_set_secondary.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -D__TBB_TEST_SECONDARY=1 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_concurrent_unordered_set.cpp In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator]’ ../../include/tbb/concurrent_unordered_set.h:94:68: required from ‘tbb::interface5::concurrent_unordered_set::concurrent_unordered_set(tbb::interface5::concurrent_unordered_set::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator; tbb::interface5::concurrent_unordered_set::size_type = unsigned int; tbb::interface5::concurrent_unordered_set::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_set::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_set::allocator_type = tbb::tbb_allocator]’ ../../src/test/test_concurrent_unordered_set.cpp:143:40: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, int>*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, int>*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, int>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_set_traits, std::equal_to >, tbb::tbb_allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator]’ ../../include/tbb/concurrent_unordered_set.h:94:68: required from ‘tbb::interface5::concurrent_unordered_set::concurrent_unordered_set(tbb::interface5::concurrent_unordered_set::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator; tbb::interface5::concurrent_unordered_set::size_type = unsigned int; tbb::interface5::concurrent_unordered_set::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_set::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_set::allocator_type = tbb::tbb_allocator]’ ../../src/test/test_concurrent_unordered_set.cpp:143:40: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_set.h:27, from ../../src/test/test_concurrent_unordered_set.cpp:29: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, int>’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ g++ -o test_concurrent_unordered_map.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_concurrent_unordered_map.cpp g++ -o test_concurrent_hash_map.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_concurrent_hash_map.cpp g++ -o test_enumerable_thread_specific.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_enumerable_thread_specific.cpp In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_map.cpp:304:56: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_map.cpp:305:77: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multimap, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_map.cpp:308:66: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multimap, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_map.cpp:309:87: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_map.cpp:313:116: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_map.cpp:315:94: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h: In instantiation of ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >]’: ../../src/test/test_concurrent_unordered_map.cpp:318:131: required from here ../../src/test/test_concurrent_unordered_common.h:638:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/test_concurrent_unordered_common.h:647:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, items*sizeof(AtomicByte) ); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/internal/../atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../src/test/test_concurrent_unordered_map.cpp:161:20: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_hash_map.cpp:46: ../../include/tbb/concurrent_hash_map.h: In static member function ‘static void tbb::interface5::internal::hash_map_base::init_buckets(tbb::interface5::internal::hash_map_base::segment_ptr_t, tbb::interface5::internal::hash_map_base::size_type, bool)’: ../../include/tbb/concurrent_hash_map.h:169:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::interface5::internal::hash_map_base::bucket’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] if( is_initial ) std::memset(ptr, 0, sz*sizeof(bucket) ); ^ ../../include/tbb/concurrent_hash_map.h:98:16: note: ‘struct tbb::interface5::internal::hash_map_base::bucket’ declared here struct bucket : tbb::internal::no_copy { ^~~~~~ ../../src/test/test_concurrent_hash_map.cpp: In function ‘void ParallelTraverseTable(MyTable&, size_t, size_t)’: ../../src/test/test_concurrent_hash_map.cpp:511:44: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, n*sizeof(AtomicByte) ); ^ In file included from ../../src/test/harness_allocator.h:54, from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_hash_map.cpp:30: ../../include/tbb/atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ ../../src/test/test_concurrent_hash_map.cpp:517:44: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘AtomicByte’ {aka ‘struct tbb::atomic’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset( array, 0, n*sizeof(AtomicByte) ); ^ In file included from ../../src/test/harness_allocator.h:54, from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_hash_map.cpp:30: ../../include/tbb/atomic.h:421:27: note: ‘AtomicByte’ {aka ‘struct tbb::atomic’} declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:478:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(unsigned char) ^~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = local_counting_allocator, std::allocator> >]’ ../../include/tbb/concurrent_unordered_map.h:101:73: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(tbb::interface5::concurrent_unordered_map::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; T = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = local_counting_allocator, std::allocator> >; tbb::interface5::concurrent_unordered_map::size_type = unsigned int; tbb::interface5::concurrent_unordered_map::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_map::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_map::allocator_type = local_counting_allocator, std::allocator> >]’ ../../src/test/test_concurrent_unordered_map.cpp:55:23: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, local_counting_allocator, std::allocator> > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, local_counting_allocator, std::allocator> > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = local_counting_allocator, std::allocator> >]’ ../../include/tbb/concurrent_unordered_map.h:237:73: required from ‘tbb::interface5::concurrent_unordered_multimap::concurrent_unordered_multimap(tbb::interface5::concurrent_unordered_multimap::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; T = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = local_counting_allocator, std::allocator> >; tbb::interface5::concurrent_unordered_multimap::size_type = unsigned int; tbb::interface5::concurrent_unordered_multimap::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_multimap::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_multimap::allocator_type = local_counting_allocator, std::allocator> >]’ ../../src/test/test_concurrent_unordered_map.cpp:112:28: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, local_counting_allocator, std::allocator> > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, local_counting_allocator, std::allocator> > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:304:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:305:77: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multimap, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:309:87: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:313:116: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_map.cpp:314:117: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:347:5: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_map.cpp:314:117: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, local_counting_allocator, std::allocator> >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:318:131: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, local_counting_allocator, std::allocator> > >, std::pair >, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../src/test/test_concurrent_unordered_map.cpp:161:20: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator> > >, std::pair >’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::tbb_allocator > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::tbb_allocator > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, debug_allocator, std::allocator> >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, debug_allocator, std::allocator> >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = std::pair; Allocator = std::allocator; debug_allocator::pointer = std::pair*; debug_allocator::size_type = unsigned int]’: ../../src/test/test_concurrent_unordered_common.h:896:17: required from ‘void Examine(Table, const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_common.h:925:28: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct std::pair’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/bits/stl_algobase.h:64, from /usr/include/c++/8/memory:62, from ../../include/tbb/internal/../tbb_stddef.h:427, from ../../include/tbb/internal/_concurrent_unordered_impl.h:30, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: /usr/include/c++/8/bits/stl_pair.h:198:12: note: ‘struct std::pair’ declared here struct pair ^~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multimap, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multimap, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:242:136: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::tbb_allocator > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::tbb_allocator > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multimap, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multimap, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:242:136: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, debug_allocator, std::allocator> >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, debug_allocator, std::allocator> >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, tbb::tbb_allocator > > >, std::pair > >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, tbb::tbb_allocator > > >, std::pair > >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, debug_allocator >, std::allocator> >, std::pair > >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, debug_allocator >, std::allocator> >, std::pair > >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = std::pair >; Allocator = std::allocator; debug_allocator::pointer = std::pair >*; debug_allocator::size_type = unsigned int]’: ../../src/test/test_concurrent_unordered_common.h:896:17: required from ‘void Examine(Table, const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_common.h:925:28: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct std::pair >’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/bits/stl_algobase.h:64, from /usr/include/c++/8/memory:62, from ../../include/tbb/internal/../tbb_stddef.h:427, from ../../include/tbb/internal/_concurrent_unordered_impl.h:30, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: /usr/include/c++/8/bits/stl_pair.h:198:12: note: ‘struct std::pair >’ declared here struct pair ^~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:242:136: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, tbb::tbb_allocator > > >, std::pair > >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, tbb::tbb_allocator > > >, std::pair > >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:242:136: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, debug_allocator >, std::allocator> >, std::pair > >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, debug_allocator >, std::allocator> >, std::pair > >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:303:72: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, local_counting_allocator, std::allocator> > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, local_counting_allocator, std::allocator> > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_hash_map.cpp:30: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = std::pair; Allocator = std::allocator; debug_allocator::pointer = std::pair*; debug_allocator::size_type = unsigned int]’: ../../src/test/test_concurrent_hash_map.cpp:1197:17: required from ‘void Examine(Table, const std::__cxx11::list&) [with bool default_construction_present = true; Table = tbb::interface5::concurrent_hash_map, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_hash_map.cpp:1226:42: required from ‘void TypeTester(const std::__cxx11::list&) [with bool default_construction_present = true; Value = std::pair]’ ../../src/test/test_concurrent_hash_map.cpp:1264:68: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct std::pair’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/bits/stl_algobase.h:64, from /usr/include/c++/8/memory:62, from ../../include/tbb/tbb_stddef.h:427, from ../../src/test/test_concurrent_hash_map.cpp:28: /usr/include/c++/8/bits/stl_pair.h:198:12: note: ‘struct std::pair’ declared here struct pair ^~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_multimap, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_multimap, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:307:82: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, local_counting_allocator, std::allocator> > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, local_counting_allocator, std::allocator> > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_hash_map.cpp:30: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = std::pair >; Allocator = std::allocator; debug_allocator::pointer = std::pair >*; debug_allocator::size_type = unsigned int]’: ../../src/test/test_concurrent_hash_map.cpp:1197:17: required from ‘void Examine(Table, const std::__cxx11::list&) [with bool default_construction_present = true; Table = tbb::interface5::concurrent_hash_map, tbb::tbb_hash_compare, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_hash_map.cpp:1226:42: required from ‘void TypeTester(const std::__cxx11::list&) [with bool default_construction_present = true; Value = std::pair >]’ ../../src/test/test_concurrent_hash_map.cpp:1289:68: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct std::pair >’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/bits/stl_algobase.h:64, from /usr/include/c++/8/memory:62, from ../../include/tbb/tbb_stddef.h:427, from ../../src/test/test_concurrent_hash_map.cpp:28: /usr/include/c++/8/bits/stl_pair.h:198:12: note: ‘struct std::pair >’ declared here struct pair ^~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:312:111: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:317:126: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator> > >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator> > >::node*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, local_counting_allocator, std::allocator> > >::node, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator> > >::node*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:274:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t, Arg&&, tbb::internal::true_type) [with Arg = std::pair; T = std::pair; Allocator = local_counting_allocator, std::allocator> >; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator> > >::node*; tbb::interface5::internal::sokey_t = unsigned int; tbb::internal::true_type = tbb::internal::bool_constant]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1292:27: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::internal_insert(ValueType&&, tbb::interface5::internal::concurrent_unordered_base::nodeptr_t) [with AllowCreate = tbb::internal::bool_constant; ValueType = std::pair; Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, local_counting_allocator, std::allocator> > >, std::pair >; tbb::interface5::internal::concurrent_unordered_base::nodeptr_t = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator> > >::node*]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:979:73: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::insert(tbb::interface5::internal::concurrent_unordered_base::value_type&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, true>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, local_counting_allocator, std::allocator> > >, std::pair >; tbb::interface5::internal::concurrent_unordered_base::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:115:57: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator> > >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator> > >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, tbb::tbb_allocator >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, tbb::tbb_allocator >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, debug_allocator, std::allocator>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, debug_allocator, std::allocator>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, tbb::tbb_allocator >, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multimap, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multimap, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:242:136: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, tbb::tbb_allocator >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, tbb::tbb_allocator >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multimap, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multimap, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:242:136: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, debug_allocator, std::allocator>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, Harness::IsEqual>, debug_allocator, std::allocator>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:242:136: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, Harness::IsEqual>, tbb::tbb_allocator > >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_multimap, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:242:136: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_hash_map.cpp:30: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::concurrent_hash_map, debug_allocator, std::allocator> >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::concurrent_hash_map, debug_allocator, std::allocator> >::node*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/concurrent_hash_map.h:591:19: required from ‘static void* tbb::interface5::concurrent_hash_map::node::operator new(std::size_t, tbb::interface5::concurrent_hash_map::node_allocator_type&) [with Key = const int; T = int; HashCompare = tbb::tbb_hash_compare; Allocator = debug_allocator, std::allocator>; std::size_t = unsigned int; tbb::interface5::concurrent_hash_map::node_allocator_type = debug_allocator, debug_allocator, std::allocator> >::node, std::allocator>]’ ../../include/tbb/concurrent_hash_map.h:1457:37: required from ‘void tbb::interface5::concurrent_hash_map::internal_copy(const tbb::interface5::concurrent_hash_map&) [with Key = const int; T = int; HashCompare = tbb::tbb_hash_compare; Allocator = debug_allocator, std::allocator>]’ ../../include/tbb/concurrent_hash_map.h:784:9: required from ‘tbb::interface5::concurrent_hash_map::concurrent_hash_map(const tbb::interface5::concurrent_hash_map&, const allocator_type&) [with Key = const int; T = int; HashCompare = tbb::tbb_hash_compare; Allocator = debug_allocator, std::allocator>; tbb::interface5::concurrent_hash_map::allocator_type = debug_allocator, std::allocator>]’ ../../src/test/test_concurrent_hash_map.cpp:1226:42: required from ‘void TypeTester(const std::__cxx11::list&) [with bool default_construction_present = true; Value = std::pair]’ ../../src/test/test_concurrent_hash_map.cpp:1264:68: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::concurrent_hash_map, debug_allocator, std::allocator> >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_hash_map.cpp:46: ../../include/tbb/concurrent_hash_map.h:572:12: note: ‘struct tbb::interface5::concurrent_hash_map, debug_allocator, std::allocator> >::node’ declared here struct node : public node_base { ^~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_hash_map.cpp:30: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::concurrent_hash_map, tbb::tbb_hash_compare, debug_allocator >, std::allocator> >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::concurrent_hash_map, tbb::tbb_hash_compare, debug_allocator >, std::allocator> >::node*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/concurrent_hash_map.h:591:19: required from ‘static void* tbb::interface5::concurrent_hash_map::node::operator new(std::size_t, tbb::interface5::concurrent_hash_map::node_allocator_type&) [with Key = const int; T = tbb::atomic; HashCompare = tbb::tbb_hash_compare; Allocator = debug_allocator >, std::allocator>; std::size_t = unsigned int; tbb::interface5::concurrent_hash_map::node_allocator_type = debug_allocator, tbb::tbb_hash_compare, debug_allocator >, std::allocator> >::node, std::allocator>]’ ../../include/tbb/concurrent_hash_map.h:1457:37: required from ‘void tbb::interface5::concurrent_hash_map::internal_copy(const tbb::interface5::concurrent_hash_map&) [with Key = const int; T = tbb::atomic; HashCompare = tbb::tbb_hash_compare; Allocator = debug_allocator >, std::allocator>]’ ../../include/tbb/concurrent_hash_map.h:784:9: required from ‘tbb::interface5::concurrent_hash_map::concurrent_hash_map(const tbb::interface5::concurrent_hash_map&, const allocator_type&) [with Key = const int; T = tbb::atomic; HashCompare = tbb::tbb_hash_compare; Allocator = debug_allocator >, std::allocator>; tbb::interface5::concurrent_hash_map::allocator_type = debug_allocator >, std::allocator>]’ ../../src/test/test_concurrent_hash_map.cpp:1226:42: required from ‘void TypeTester(const std::__cxx11::list&) [with bool default_construction_present = true; Value = std::pair >]’ ../../src/test/test_concurrent_hash_map.cpp:1289:68: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::concurrent_hash_map, tbb::tbb_hash_compare, debug_allocator >, std::allocator> >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_concurrent_hash_map.cpp:46: ../../include/tbb/concurrent_hash_map.h:572:12: note: ‘struct tbb::interface5::concurrent_hash_map, tbb::tbb_hash_compare, debug_allocator >, std::allocator> >::node’ declared here struct node : public node_base { ^~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:657:5: required from ‘void test_concurrent(const char*, bool) [with T = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:313:116: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1066:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::clear() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>]’ ../../src/test/test_concurrent_unordered_common.h:347:5: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_map.cpp:314:117: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:742:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TestMoveConstructorSingleArgument() [with container_traits = cu_map_type]’ ../../src/test/test_container_move_support.h:778:56: required from ‘void TestMoveConstructor() [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_common.h:813:42: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_map.cpp:330:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int>]’ ../../include/tbb/concurrent_unordered_map.h:148:115: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(tbb::interface5::concurrent_unordered_map&&, const Allocator&) [with Key = FooWithAssign; T = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../src/test/test_container_move_support.h:896:5: required from ‘void TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure() [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_common.h:816:100: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_map.cpp:330:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:742:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TestMoveConstructorSingleArgument() [with container_traits = cu_multimap_type]’ ../../src/test/test_container_move_support.h:778:56: required from ‘void TestMoveConstructor() [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_common.h:813:42: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_map.cpp:331:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int>]’ ../../include/tbb/concurrent_unordered_map.h:284:125: required from ‘tbb::interface5::concurrent_unordered_multimap::concurrent_unordered_multimap(tbb::interface5::concurrent_unordered_multimap&&, const Allocator&) [with Key = FooWithAssign; T = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../src/test/test_container_move_support.h:896:5: required from ‘void TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure() [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_common.h:816:100: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_map.cpp:331:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:265:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t) [with T = std::pair; Allocator = debug_allocator, std::allocator>; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node*; tbb::interface5::internal::sokey_t = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:317:17: required from ‘tbb::interface5::internal::split_ordered_list::split_ordered_list(tbb::interface5::internal::split_ordered_list::allocator_type) [with T = std::pair; Allocator = debug_allocator, std::allocator>; tbb::interface5::internal::split_ordered_list::allocator_type = debug_allocator, std::allocator>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:731:110: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list, debug_allocator, std::allocator> >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, Harness::IsEqual>, debug_allocator, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, tbb::tbb_allocator > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, Harness::IsEqual, debug_allocator, std::allocator> >; typename Table::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:250:58: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator, debug_allocator, std::allocator> >, std::pair >’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list >, debug_allocator >, std::allocator> >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list >, debug_allocator >, std::allocator> >::node*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:265:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t) [with T = std::pair >; Allocator = debug_allocator >, std::allocator>; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list >, debug_allocator >, std::allocator> >::node*; tbb::interface5::internal::sokey_t = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:317:17: required from ‘tbb::interface5::internal::split_ordered_list::split_ordered_list(tbb::interface5::internal::split_ordered_list::allocator_type) [with T = std::pair >; Allocator = debug_allocator >, std::allocator>; tbb::interface5::internal::split_ordered_list::allocator_type = debug_allocator >, std::allocator>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:731:110: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list >, debug_allocator >, std::allocator> >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list >, debug_allocator >, std::allocator> >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >*; debug_allocator::size_type = unsigned int]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1480:28: required from ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:734:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(const tbb::interface5::internal::concurrent_unordered_base&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, Harness::IsEqual>, debug_allocator >, std::allocator>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TypeTester(const std::__cxx11::list&) [with bool defCtorPresent = true; Table = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, tbb::tbb_allocator > > >; TableDebugAlloc = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, Harness::IsEqual, debug_allocator >, std::allocator> >; typename Table::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:240:131: required from ‘void TestTypesMap(const std::__cxx11::list&) [with bool defCtorPresent = true; ValueType = std::pair >]’ ../../src/test/test_concurrent_unordered_map.cpp:258:56: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >’; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘class tbb::interface5::internal::flist_iterator >, debug_allocator >, std::allocator> >, std::pair > >’ declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator, local_counting_allocator, std::allocator>, tbb::atomic > >::node, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:274:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t, Arg&&, tbb::internal::true_type) [with Arg = std::pair; T = std::pair; Allocator = local_counting_allocator, std::allocator>, tbb::atomic >; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node*; tbb::interface5::internal::sokey_t = unsigned int; tbb::internal::true_type = tbb::internal::bool_constant]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1292:27: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::internal_insert(ValueType&&, tbb::interface5::internal::concurrent_unordered_base::nodeptr_t) [with AllowCreate = tbb::internal::bool_constant; ValueType = std::pair; Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >; tbb::interface5::internal::concurrent_unordered_base::nodeptr_t = tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node*]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:979:73: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::insert(tbb::interface5::internal::concurrent_unordered_base::value_type&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator, local_counting_allocator, std::allocator>, tbb::atomic > >, std::pair >; tbb::interface5::internal::concurrent_unordered_base::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_common.h:254:43: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_map, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_map.cpp:314:117: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list, local_counting_allocator, std::allocator>, tbb::atomic > >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator >]’ ../../include/tbb/concurrent_unordered_map.h:111:73: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(Iterator, Iterator, tbb::interface5::concurrent_unordered_map::size_type, const hasher&, const key_equal&, const allocator_type&) [with Iterator = __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >; Key = int; T = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator >; tbb::interface5::concurrent_unordered_map::size_type = unsigned int; tbb::interface5::concurrent_unordered_map::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_map::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_map::allocator_type = tbb::tbb_allocator >]’ ../../src/test/test_initializer_list.h:72:24: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_map; test_assign = initializer_list_support_tests::skip_test; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = std::pair]’ ../../src/test/test_initializer_list.h:87:69: required from ‘void initializer_list_support_tests::TestInitListSupportWithoutAssign(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_map; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_common.h:137:64: required from ‘void TestInitList(std::initializer_list) [with Table = tbb::interface5::concurrent_unordered_map; MultiTable = tbb::interface5::concurrent_unordered_multimap; typename Traits::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:322:99: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::tbb_allocator > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::tbb_allocator > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator >]’ ../../include/tbb/concurrent_unordered_map.h:247:71: required from ‘tbb::interface5::concurrent_unordered_multimap::concurrent_unordered_multimap(Iterator, Iterator, tbb::interface5::concurrent_unordered_multimap::size_type, const hasher&, const key_equal&, const allocator_type&) [with Iterator = __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >; Key = int; T = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator >; tbb::interface5::concurrent_unordered_multimap::size_type = unsigned int; tbb::interface5::concurrent_unordered_multimap::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_multimap::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_multimap::allocator_type = tbb::tbb_allocator >]’ ../../src/test/test_initializer_list.h:72:24: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_multimap; test_assign = initializer_list_support_tests::skip_test; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = std::pair]’ ../../src/test/test_initializer_list.h:87:69: required from ‘void initializer_list_support_tests::TestInitListSupportWithoutAssign(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_multimap; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_common.h:138:70: required from ‘void TestInitList(std::initializer_list) [with Table = tbb::interface5::concurrent_unordered_map; MultiTable = tbb::interface5::concurrent_unordered_multimap; typename Traits::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:322:99: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, tbb::tbb_allocator > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, tbb::tbb_allocator > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = std::allocator >]’ ../../include/tbb/concurrent_unordered_map.h:101:73: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(tbb::interface5::concurrent_unordered_map::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = FooWithAssign; T = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = std::allocator; tbb::interface5::concurrent_unordered_map::size_type = unsigned int; tbb::interface5::concurrent_unordered_map::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_map::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_map::allocator_type = std::allocator >]’ ../../src/test/test_container_move_support.h:813:17: required from ‘void TestMoveAssignOperatorPOCMANonStateful() [with container_traits = cu_map_type]’ ../../src/test/test_container_move_support.h:854:61: required from ‘void TestMoveAssignOperator() [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_map.cpp:330:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, std::allocator > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, std::allocator > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, std::allocator > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, false>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = std::allocator >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:808:43: required from ‘tbb::interface5::internal::concurrent_unordered_base& tbb::interface5::internal::concurrent_unordered_base::operator=(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TestMoveAssignOperatorPOCMANonStateful() [with container_traits = cu_map_type]’ ../../src/test/test_container_move_support.h:854:61: required from ‘void TestMoveAssignOperator() [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_map.cpp:330:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, std::allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, std::allocator > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, std::allocator, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, std::allocator > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int>]’ ../../include/tbb/concurrent_unordered_map.h:104:121: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(const Allocator&) [with Key = FooWithAssign; T = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../src/test/test_container_move_support.h:790:17: required from ‘void TestMoveAssignOperatorPOCMAStateful() [with container_traits = cu_map_type]’ ../../src/test/test_container_move_support.h:855:58: required from ‘void TestMoveAssignOperator() [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_map.cpp:330:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:808:43: required from ‘tbb::interface5::internal::concurrent_unordered_base& tbb::interface5::internal::concurrent_unordered_base::operator=(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false>]’ ../../include/tbb/concurrent_unordered_map.h:58:7: required from ‘void TestMoveAssignOperatorPOCMAStateful() [with container_traits = cu_map_type]’ ../../src/test/test_container_move_support.h:855:58: required from ‘void TestMoveAssignOperator() [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_map_type]’ ../../src/test/test_concurrent_unordered_map.cpp:330:70: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = std::allocator >]’ ../../include/tbb/concurrent_unordered_map.h:237:73: required from ‘tbb::interface5::concurrent_unordered_multimap::concurrent_unordered_multimap(tbb::interface5::concurrent_unordered_multimap::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = FooWithAssign; T = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = std::allocator; tbb::interface5::concurrent_unordered_multimap::size_type = unsigned int; tbb::interface5::concurrent_unordered_multimap::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_multimap::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_multimap::allocator_type = std::allocator >]’ ../../src/test/test_container_move_support.h:813:17: required from ‘void TestMoveAssignOperatorPOCMANonStateful() [with container_traits = cu_multimap_type]’ ../../src/test/test_container_move_support.h:854:61: required from ‘void TestMoveAssignOperator() [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_map.cpp:331:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, std::allocator > >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, std::allocator > >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, std::allocator > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, true>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = std::allocator >]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:808:43: required from ‘tbb::interface5::internal::concurrent_unordered_base& tbb::interface5::internal::concurrent_unordered_base::operator=(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, std::allocator, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TestMoveAssignOperatorPOCMANonStateful() [with container_traits = cu_multimap_type]’ ../../src/test/test_container_move_support.h:854:61: required from ‘void TestMoveAssignOperator() [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_map.cpp:331:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, std::allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, std::allocator > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, std::allocator, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, std::allocator > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int>]’ ../../include/tbb/concurrent_unordered_map.h:240:126: required from ‘tbb::interface5::concurrent_unordered_multimap::concurrent_unordered_multimap(const Allocator&) [with Key = FooWithAssign; T = FooWithAssign; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = static_shared_counting_allocator, arena, unsigned int>, unsigned int>]’ ../../src/test/test_container_move_support.h:790:17: required from ‘void TestMoveAssignOperatorPOCMAStateful() [with container_traits = cu_multimap_type]’ ../../src/test/test_container_move_support.h:855:58: required from ‘void TestMoveAssignOperator() [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_map.cpp:331:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_concurrent_unordered_impl.h:49, from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/../atomic.h:485:29: note: ‘struct tbb::atomic, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:770:25: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base&&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>; tbb::interface5::internal::concurrent_unordered_base::allocator_type = static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:808:43: required from ‘tbb::interface5::internal::concurrent_unordered_base& tbb::interface5::internal::concurrent_unordered_base::operator=(tbb::interface5::internal::concurrent_unordered_base&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true>]’ ../../include/tbb/concurrent_unordered_map.h:196:7: required from ‘void TestMoveAssignOperatorPOCMAStateful() [with container_traits = cu_multimap_type]’ ../../src/test/test_container_move_support.h:855:58: required from ‘void TestMoveAssignOperator() [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_common.h:814:45: required from ‘void test_rvalue_ref_support(const char*) [with container_traits = cu_multimap_type]’ ../../src/test/test_concurrent_unordered_map.cpp:331:80: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, static_shared_counting_allocator, arena, unsigned int>, unsigned int>, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, static_shared_counting_allocator, arena, std::integral_constant, unsigned int>, unsigned int> >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../src/test/test_container_move_support.h:26, from ../../src/test/test_concurrent_unordered_common.h:25, from ../../src/test/test_concurrent_unordered_map.cpp:42: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::interface5::internal::split_ordered_list >, local_counting_allocator >, std::allocator>, tbb::atomic > >::node; Allocator = std::allocator; debug_allocator::pointer = tbb::interface5::internal::split_ordered_list >, local_counting_allocator >, std::allocator>, tbb::atomic > >::node*; debug_allocator::size_type = unsigned int]’: ../../src/test/harness_allocator.h:485:43: required from ‘local_counting_allocator::pointer local_counting_allocator::allocate(local_counting_allocator::size_type) [with base_alloc_t = debug_allocator >, local_counting_allocator >, std::allocator>, tbb::atomic > >::node, std::allocator>; count_t = tbb::atomic; local_counting_allocator::pointer = tbb::interface5::internal::split_ordered_list >, local_counting_allocator >, std::allocator>, tbb::atomic > >::node*; local_counting_allocator::size_type = unsigned int]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:274:19: required from ‘tbb::interface5::internal::split_ordered_list::node* tbb::interface5::internal::split_ordered_list::create_node(tbb::interface5::internal::sokey_t, Arg&&, tbb::internal::true_type) [with Arg = std::pair >; T = std::pair >; Allocator = local_counting_allocator >, std::allocator>, tbb::atomic >; tbb::interface5::internal::split_ordered_list::nodeptr_t = tbb::interface5::internal::split_ordered_list >, local_counting_allocator >, std::allocator>, tbb::atomic > >::node*; tbb::interface5::internal::sokey_t = unsigned int; tbb::internal::true_type = tbb::internal::bool_constant]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:1292:27: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::internal_insert(ValueType&&, tbb::interface5::internal::concurrent_unordered_base::nodeptr_t) [with AllowCreate = tbb::internal::bool_constant; ValueType = std::pair >; Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >; tbb::interface5::internal::concurrent_unordered_base::nodeptr_t = tbb::interface5::internal::split_ordered_list >, local_counting_allocator >, std::allocator>, tbb::atomic > >::node*]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:979:73: required from ‘std::pair::iterator, bool> tbb::interface5::internal::concurrent_unordered_base::insert(tbb::interface5::internal::concurrent_unordered_base::value_type&&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, local_counting_allocator, std::allocator> >, false>; typename tbb::interface5::internal::split_ordered_list::iterator = tbb::interface5::internal::solist_iterator >, local_counting_allocator >, std::allocator>, tbb::atomic > >, std::pair > >; tbb::interface5::internal::concurrent_unordered_base::value_type = std::pair >]’ ../../src/test/test_concurrent_unordered_common.h:254:43: required from ‘void test_basic(const char*, do_check_element_state) [with T = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >; do_check_element_state = tbb::internal::bool_constant]’ ../../src/test/test_concurrent_unordered_common.h:473:18: required from ‘void test_basic(const char*) [with T = tbb::interface5::concurrent_unordered_map, tbb::tbb_hash, std::equal_to, local_counting_allocator, std::allocator> > >]’ ../../src/test/test_concurrent_unordered_map.cpp:312:111: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::interface5::internal::split_ordered_list >, local_counting_allocator >, std::allocator>, tbb::atomic > >::node’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:216:12: note: ‘struct tbb::interface5::internal::split_ordered_list >, local_counting_allocator >, std::allocator>, tbb::atomic > >::node’ declared here struct node : tbb::internal::no_assign ^~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator >]’ ../../include/tbb/concurrent_unordered_map.h:111:73: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(Iterator, Iterator, tbb::interface5::concurrent_unordered_map::size_type, const hasher&, const key_equal&, const allocator_type&) [with Iterator = __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >; Key = int; T = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator >; tbb::interface5::concurrent_unordered_map::size_type = unsigned int; tbb::interface5::concurrent_unordered_map::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_map::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_map::allocator_type = tbb::tbb_allocator >]’ ../../src/test/test_initializer_list.h:72:24: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_map; test_assign = initializer_list_support_tests::skip_test; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = std::pair]’ ../../src/test/test_initializer_list.h:87:69: required from ‘void initializer_list_support_tests::TestInitListSupportWithoutAssign(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_map; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_common.h:137:64: required from ‘void TestInitList(std::initializer_list) [with Table = tbb::interface5::concurrent_unordered_map; MultiTable = tbb::interface5::concurrent_unordered_multimap; typename Traits::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:322:99: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, true>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, std::equal_to >, tbb::tbb_allocator >, true>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator >]’ ../../include/tbb/concurrent_unordered_map.h:247:71: required from ‘tbb::interface5::concurrent_unordered_multimap::concurrent_unordered_multimap(Iterator, Iterator, tbb::interface5::concurrent_unordered_multimap::size_type, const hasher&, const key_equal&, const allocator_type&) [with Iterator = __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >; Key = int; T = int; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator >; tbb::interface5::concurrent_unordered_multimap::size_type = unsigned int; tbb::interface5::concurrent_unordered_multimap::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_multimap::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_multimap::allocator_type = tbb::tbb_allocator >]’ ../../src/test/test_initializer_list.h:72:24: required from ‘void initializer_list_support_tests::TestInitListSupport(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_multimap; test_assign = initializer_list_support_tests::skip_test; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = std::pair]’ ../../src/test/test_initializer_list.h:87:69: required from ‘void initializer_list_support_tests::TestInitListSupportWithoutAssign(std::initializer_list) [with container_type = tbb::interface5::concurrent_unordered_multimap; test_special = initializer_list_support_tests::test_special_insert; typename Traits::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_common.h:138:70: required from ‘void TestInitList(std::initializer_list) [with Table = tbb::interface5::concurrent_unordered_map; MultiTable = tbb::interface5::concurrent_unordered_multimap; typename Traits::value_type = std::pair]’ ../../src/test/test_concurrent_unordered_map.cpp:322:99: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/test_concurrent_unordered_map.cpp:26: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, std::equal_to >, tbb::tbb_allocator >, true> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator, tbb::tbb_allocator > >, std::pair >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ ../../src/test/test_concurrent_hash_map.cpp: In function ‘void TestExceptions()’: ../../src/test/test_concurrent_hash_map.cpp:932:35: warning: this statement may fall through [-Wimplicit-fallthrough=] CheckAllocator(victim, 100+t, t); ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ ../../src/test/test_concurrent_hash_map.cpp:933:17: note: here case ctor_copy: ^~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded > >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded > >, 128>; A = tbb::tbb_allocator > >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::tbb_allocator > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::tbb_allocator > >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, 128>, tbb::tbb_allocator > >, 128> > >, tbb::internal::padded > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::vector >; Allocator = tbb::tbb_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::tbb_allocator > >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::vector >; Allocator = tbb::tbb_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../include/tbb/enumerable_thread_specific.h:987:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with Alloc = tbb::tbb_allocator > >; tbb::ets_key_usage_type Cachetype = (tbb::ets_key_usage_type)1; T = std::vector >; Allocator = tbb::tbb_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../src/test/test_enumerable_thread_specific.cpp:745:29: required from ‘void run_cross_type_vector_tests(const char*) [with T = int; Allocator = tbb::tbb_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:825:102: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded > >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded > >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded > >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded > >, 128>; A = tbb::tbb_allocator > >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::tbb_allocator > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::tbb_allocator > >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, 128>, tbb::tbb_allocator > >, 128> > >, tbb::internal::padded > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::vector >; Allocator = tbb::tbb_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::tbb_allocator > >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::vector >; Allocator = tbb::tbb_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../include/tbb/enumerable_thread_specific.h:987:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with Alloc = tbb::tbb_allocator > >; tbb::ets_key_usage_type Cachetype = (tbb::ets_key_usage_type)1; T = std::vector >; Allocator = tbb::tbb_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../src/test/test_enumerable_thread_specific.cpp:745:29: required from ‘void run_cross_type_vector_tests(const char*) [with T = double; Allocator = tbb::tbb_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:826:111: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded > >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded > >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:812:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_move(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = HasSpecialAndMoveCtor; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:972:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_move(tbb::interface6::enumerable_thread_specific&&) [with A2 = tbb::tbb_allocator; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = HasSpecialAndMoveCtor; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:999:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(tbb::interface6::enumerable_thread_specific&&) [with Alloc = tbb::tbb_allocator; tbb::ets_key_usage_type Cachetype = (tbb::ets_key_usage_type)1; T = HasSpecialAndMoveCtor; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1317:60: required from ‘void TestInstantiation(const char*) [with Allocator = tbb::tbb_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1361:63: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = BigType; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = BigType; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = BigType; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1339:20: required from ‘void TestConstructorWithBigType(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1382:92: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, 128>, tbb::cache_aligned_allocator >, 128> > >, tbb::internal::padded >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = minimal<>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = minimal<>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../include/tbb/enumerable_thread_specific.h:987:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with Alloc = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type Cachetype = (tbb::ets_key_usage_type)1; T = minimal<>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../src/test/test_enumerable_thread_specific.cpp:425:33: required from ‘void run_parallel_scalar_tests_nocombine(const char*, const char*) [with T = minimal<>; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:817:61: required from ‘void run_parallel_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1375:88: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = int; Allocator = tbb::cache_aligned_allocator; InitSrc = int; InitDst = int; Validator = Validator]’ ../../src/test/test_enumerable_thread_specific.cpp:1175:39: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = int; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1194:57: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, 128>, tbb::cache_aligned_allocator >, 128> > >, tbb::internal::padded >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::pair; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::pair; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = std::pair; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = std::pair; Allocator = tbb::cache_aligned_allocator; InitSrc = tbb::internal::stored_pack; InitDst = std::pair; Validator = Validator]’ ../../src/test/test_enumerable_thread_specific.cpp:1186:55: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = int; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1194:57: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = double; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = double; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = double; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = double; Allocator = tbb::cache_aligned_allocator; InitSrc = double; InitDst = double; Validator = Validator]’ ../../src/test/test_enumerable_thread_specific.cpp:1175:39: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = double; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1195:60: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, 128>, tbb::cache_aligned_allocator >, 128> > >, tbb::internal::padded >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::pair; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::pair; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = std::pair; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = std::pair; Allocator = tbb::cache_aligned_allocator; InitSrc = tbb::internal::stored_pack; InitDst = std::pair; Validator = Validator]’ ../../src/test/test_enumerable_thread_specific.cpp:1186:55: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = double; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1195:60: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, 128>, tbb::cache_aligned_allocator >, 128> > >, tbb::internal::padded >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = minimal<127>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = minimal<127>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = minimal<127>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = minimal<127>; Allocator = tbb::cache_aligned_allocator; InitSrc = minimal<127>; InitDst = minimal<127>; Validator = Validator, 3142>]’ ../../src/test/test_enumerable_thread_specific.cpp:1175:39: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = minimal<127>; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1197:75: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded > >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, 128>, tbb::cache_aligned_allocator > >, 128> > >, tbb::internal::padded > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator; InitSrc = tbb::internal::stored_pack&>; InitDst = std::pair >; Validator = Validator, 3142>]’ ../../src/test/test_enumerable_thread_specific.cpp:1186:55: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = minimal<127>; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1197:75: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded > >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded > >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded > >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, 128>, tbb::cache_aligned_allocator > >, 128> > >, tbb::internal::padded > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator; InitSrc = tbb::internal::stored_pack&>; InitDst = std::pair >; Validator = Validator, 3142>]’ ../../src/test/test_enumerable_thread_specific.cpp:1186:55: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = minimal<>; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1198:73: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded > >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded > >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, 128>, tbb::cache_aligned_allocator >, 128> > >, tbb::internal::padded >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = minimal<129>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = minimal<129>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = minimal<129>; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = minimal<129>; Allocator = tbb::cache_aligned_allocator; InitSrc = minimal<129>; InitDst = minimal<129>; Validator = Validator, 3142>]’ ../../src/test/test_enumerable_thread_specific.cpp:1175:39: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = minimal<129>; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1199:75: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded > >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, 128>, tbb::cache_aligned_allocator > >, 128> > >, tbb::internal::padded > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1115:14: required from ‘void ets_copy_assign_test(InitSrc, InitDst, Validator, const char*) [with T = std::pair >; Allocator = tbb::cache_aligned_allocator; InitSrc = tbb::internal::stored_pack&>; InitDst = std::pair >; Validator = Validator, 3142>]’ ../../src/test/test_enumerable_thread_specific.cpp:1186:55: required from ‘void run_assign_and_copy_constructor_test(const char*, const char*) [with T = minimal<129>; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1199:75: required from ‘void run_assignment_and_copy_constructor_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1363:107: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded > >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded > >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = ThrowingConstructor; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = ThrowingConstructor; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../include/tbb/enumerable_thread_specific.h:987:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with Alloc = tbb::cache_aligned_allocator; tbb::ets_key_usage_type Cachetype = (tbb::ets_key_usage_type)1; T = ThrowingConstructor; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)0]’ ../../src/test/test_enumerable_thread_specific.cpp:425:33: required from ‘void run_parallel_scalar_tests_nocombine(const char*, const char*) [with T = ThrowingConstructor; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:504:61: required from ‘void run_parallel_scalar_tests(const char*, const char*) [with T = ThrowingConstructor; Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:818:62: required from ‘void run_parallel_tests(const char*) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_enumerable_thread_specific.cpp:1375:88: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::tbb_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::tbb_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::tbb_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::tbb_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = HasNoDefaultConstructor; Allocator = tbb::tbb_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1394:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::tbb_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::tbb_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::tbb_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::tbb_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = NoCopy; Allocator = tbb::tbb_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_enumerable_thread_specific.cpp:1394:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../src/test/test_enumerable_thread_specific.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from /usr/include/c++/8/vector:69, from ../../src/test/test_enumerable_thread_specific.cpp:41: /usr/include/c++/8/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const double&}; _Tp = double; _Alloc = tbb::tbb_allocator]’: /usr/include/c++/8/bits/vector.tcc:413:7: note: parameter passing for argument of type ‘std::vector >::iterator’ {aka ‘__gnu_cxx::__normal_iterator > >’} changed in GCC 7.1 vector<_Tp, _Alloc>:: ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/vector:64, from ../../src/test/test_enumerable_thread_specific.cpp:41: /usr/include/c++/8/bits/stl_vector.h: In function ‘void run_serial_vector_tests(const char*) [with T = double]’: /usr/include/c++/8/bits/stl_vector.h:1085:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator > >’ changed in GCC 7.1 _M_realloc_insert(end(), __x); ^~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/vector:69, from ../../src/test/test_enumerable_thread_specific.cpp:41: /usr/include/c++/8/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator]’: /usr/include/c++/8/bits/vector.tcc:413:7: note: parameter passing for argument of type ‘std::vector::iterator’ {aka ‘__gnu_cxx::__normal_iterator >’} changed in GCC 7.1 vector<_Tp, _Alloc>:: ^~~~~~~~~~~~~~~~~~~ /usr/include/c++/8/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator]’: /usr/include/c++/8/bits/vector.tcc:109:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator >’ changed in GCC 7.1 _M_realloc_insert(end(), std::forward<_Args>(__args)...); ^~~~~~~~~~~~~~~~~ g++ -o test_handle_perror.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_handle_perror.cpp g++ -o test_halt.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_halt.cpp g++ -o test_mutex.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_mutex.cpp g++ -o test_mutex_native_threads.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_mutex_native_threads.cpp g++ -o test_rwm_upgrade_downgrade.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_rwm_upgrade_downgrade.cpp g++ -o test_cache_aligned_allocator.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_cache_aligned_allocator.cpp ../../src/test/test_cache_aligned_allocator.cpp: In function ‘void Test_NFS_Allocate_Throws()’: ../../src/test/test_cache_aligned_allocator.cpp:57:19: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] } catch( std::bad_alloc ) { ^~~~~~~~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:28: ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::cache_aligned_allocator >]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::cache_aligned_allocator >]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:74:64: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] } catch ( std::bad_alloc ) { ^~~~~ ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::cache_aligned_allocator >]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::cache_aligned_allocator >]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:74:64: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::cache_aligned_allocator >]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::cache_aligned_allocator >]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:74:64: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::cache_aligned_allocator >]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::cache_aligned_allocator >]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::cache_aligned_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:74:64: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::tbb_allocator >]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::tbb_allocator >]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::tbb_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:75:51: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::tbb_allocator >]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::tbb_allocator >]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::tbb_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:75:51: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::tbb_allocator >]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::tbb_allocator >]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::tbb_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:75:51: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::tbb_allocator >]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::tbb_allocator >]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::tbb_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:75:51: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’: ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] ../../src/test/test_allocator.h: In instantiation of ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’: ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../src/test/test_allocator.h:174:7: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=] In file included from ../../src/test/test_cache_aligned_allocator.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = Foo*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/test_allocator.h:126:24: required from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::tbb_allocator >::value_type’ {aka ‘struct Foo’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:28: ../../src/test/test_allocator.h:43:8: note: ‘tbb::tbb_allocator >::value_type’ {aka ‘struct Foo’} declared here struct Foo { ^~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = std::pair, Foo >; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = std::pair, Foo >*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/test_allocator.h:186:47: required from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘tbb::tbb_allocator, Foo > >::value_type’ {aka ‘struct std::pair, Foo >’} with no trivial copy-assignment; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/bits/stl_algobase.h:64, from /usr/include/c++/8/memory:62, from ../../include/tbb/tbb_stddef.h:427, from ../../include/tbb/cache_aligned_allocator.h:25, from ../../src/test/test_cache_aligned_allocator.cpp:23: /usr/include/c++/8/bits/stl_pair.h:198:12: note: ‘tbb::tbb_allocator, Foo > >::value_type’ {aka ‘struct std::pair, Foo >’} declared here struct pair ^~~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = Foo*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/test_allocator.h:126:24: required from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::tbb_allocator >::value_type’ {aka ‘struct Foo’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:28: ../../src/test/test_allocator.h:43:8: note: ‘tbb::tbb_allocator >::value_type’ {aka ‘struct Foo’} declared here struct Foo { ^~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = std::pair, Foo >; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = std::pair, Foo >*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/test_allocator.h:186:47: required from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:272:23: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘tbb::tbb_allocator, Foo > >::value_type’ {aka ‘struct std::pair, Foo >’} with no trivial copy-assignment; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/bits/stl_algobase.h:64, from /usr/include/c++/8/memory:62, from ../../include/tbb/tbb_stddef.h:427, from ../../include/tbb/cache_aligned_allocator.h:25, from ../../src/test/test_cache_aligned_allocator.cpp:23: /usr/include/c++/8/bits/stl_pair.h:198:12: note: ‘tbb::tbb_allocator, Foo > >::value_type’ {aka ‘struct std::pair, Foo >’} declared here struct pair ^~~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = Foo*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/test_allocator.h:126:24: required from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::tbb_allocator >::value_type’ {aka ‘struct Foo’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:28: ../../src/test/test_allocator.h:43:8: note: ‘tbb::tbb_allocator >::value_type’ {aka ‘struct Foo’} declared here struct Foo { ^~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = std::pair, Foo >; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = std::pair, Foo >*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/test_allocator.h:186:47: required from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:256:17: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘tbb::tbb_allocator, Foo > >::value_type’ {aka ‘struct std::pair, Foo >’} with no trivial copy-assignment; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/bits/stl_algobase.h:64, from /usr/include/c++/8/memory:62, from ../../include/tbb/tbb_stddef.h:427, from ../../include/tbb/cache_aligned_allocator.h:25, from ../../src/test/test_cache_aligned_allocator.cpp:23: /usr/include/c++/8/bits/stl_pair.h:198:12: note: ‘tbb::tbb_allocator, Foo > >::value_type’ {aka ‘struct std::pair, Foo >’} declared here struct pair ^~~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = Foo*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/test_allocator.h:126:24: required from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::tbb_allocator >::value_type’ {aka ‘struct Foo’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:28: ../../src/test/test_allocator.h:43:8: note: ‘tbb::tbb_allocator >::value_type’ {aka ‘struct Foo’} declared here struct Foo { ^~~ In file included from ../../src/test/test_cache_aligned_allocator.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = std::pair, Foo >; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = std::pair, Foo >*; tbb::zero_allocator::size_type = unsigned int]’: ../../src/test/test_allocator.h:186:47: required from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:257:38: required from ‘void Test(A&) [with U = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ ../../src/test/test_allocator.h:273:25: required from ‘int TestMain(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator.cpp:76:52: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘tbb::tbb_allocator, Foo > >::value_type’ {aka ‘struct std::pair, Foo >’} with no trivial copy-assignment; use assignment instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/bits/stl_algobase.h:64, from /usr/include/c++/8/memory:62, from ../../include/tbb/tbb_stddef.h:427, from ../../include/tbb/cache_aligned_allocator.h:25, from ../../src/test/test_cache_aligned_allocator.cpp:23: /usr/include/c++/8/bits/stl_pair.h:198:12: note: ‘tbb::tbb_allocator, Foo > >::value_type’ {aka ‘struct std::pair, Foo >’} declared here struct pair ^~~~ In file included from /usr/include/c++/8/vector:64, from ../../src/test/test_enumerable_thread_specific.cpp:41: /usr/include/c++/8/bits/stl_vector.h: In member function ‘tbb::task* tbb::interface9::internal::start_for::execute() [with Range = tbb::blocked_range; Body = parallel_vector_for_body; Partitioner = const tbb::auto_partitioner]’: /usr/include/c++/8/bits/stl_vector.h:1085:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator > >’ changed in GCC 7.1 _M_realloc_insert(end(), __x); ^~~~~~~~~~~~~~~~~ /usr/include/c++/8/bits/stl_vector.h:1085:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator > >’ changed in GCC 7.1 _M_realloc_insert(end(), __x); ^~~~~~~~~~~~~~~~~ /usr/include/c++/8/bits/stl_vector.h: In member function ‘tbb::task* tbb::interface9::internal::start_for::execute() [with Range = tbb::blocked_range; Body = parallel_vector_for_body; Partitioner = const tbb::auto_partitioner]’: /usr/include/c++/8/bits/stl_vector.h:1085:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator > >’ changed in GCC 7.1 _M_realloc_insert(end(), __x); ^~~~~~~~~~~~~~~~~ /usr/include/c++/8/bits/stl_vector.h:1085:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator > >’ changed in GCC 7.1 _M_realloc_insert(end(), __x); ^~~~~~~~~~~~~~~~~ g++ -o test_cache_aligned_allocator_STL.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_cache_aligned_allocator_STL.cpp In file included from /usr/include/string.h:494, from /usr/include/c++/8/cstring:42, from ../../include/tbb/tbb_allocator.h:36, from ../../src/test/test_cache_aligned_allocator.cpp:24: In function ‘void* memset(void*, int, size_t)’, inlined from ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator]’ at ../../include/tbb/tbb_allocator.h:188:20, inlined from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ at ../../src/test/test_allocator.h:173:12: /usr/include/arm-linux-gnueabihf/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, unsigned int)’ specified size 4293918684 exceeds maximum object size 2147483647 [-Wstringop-overflow=] return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest)); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In function ‘void* memset(void*, int, size_t)’, inlined from ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator]’ at ../../include/tbb/tbb_allocator.h:188:20, inlined from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ at ../../src/test/test_allocator.h:173:12: /usr/include/arm-linux-gnueabihf/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, unsigned int)’ specified size 4293918719 exceeds maximum object size 2147483647 [-Wstringop-overflow=] return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest)); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In function ‘void* memset(void*, int, size_t)’, inlined from ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator]’ at ../../include/tbb/tbb_allocator.h:188:20, inlined from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ at ../../src/test/test_allocator.h:173:12: /usr/include/arm-linux-gnueabihf/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, unsigned int)’ specified size 4293918668 exceeds maximum object size 2147483647 [-Wstringop-overflow=] return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest)); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In function ‘void* memset(void*, int, size_t)’, inlined from ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = Foo; Allocator = tbb::tbb_allocator]’ at ../../include/tbb/tbb_allocator.h:188:20, inlined from ‘void TestBasic(A&) [with T = Foo; A = tbb::zero_allocator, tbb::tbb_allocator>]’ at ../../src/test/test_allocator.h:173:12: /usr/include/arm-linux-gnueabihf/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, unsigned int)’ specified size 4293918712 exceeds maximum object size 2147483647 [-Wstringop-overflow=] return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest)); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ g++ -o test_parallel_for.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_for.cpp In file included from ../../src/test/test_cache_aligned_allocator_STL.cpp:24: ../../include/tbb/tbb_allocator.h: In instantiation of ‘tbb::zero_allocator::pointer tbb::zero_allocator::allocate(tbb::zero_allocator::size_type, const void*) [with T = MoveOperationTracker; Allocator = tbb::tbb_allocator; tbb::zero_allocator::pointer = MoveOperationTracker*; tbb::zero_allocator::size_type = unsigned int]’: /usr/include/c++/8/bits/alloc_traits.h:301:32: required from ‘static std::allocator_traits<_Alloc>::pointer std::allocator_traits<_Alloc>::allocate(_Alloc&, std::allocator_traits<_Alloc>::size_type) [with _Alloc = tbb::zero_allocator; std::allocator_traits<_Alloc>::pointer = MoveOperationTracker*; std::allocator_traits<_Alloc>::size_type = unsigned int]’ /usr/include/c++/8/bits/stl_vector.h:296:33: required from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = MoveOperationTracker; _Alloc = tbb::zero_allocator; std::_Vector_base<_Tp, _Alloc>::pointer = MoveOperationTracker*; std::size_t = unsigned int]’ /usr/include/c++/8/bits/vector.tcc:605:16: required from ‘void std::vector<_Tp, _Alloc>::_M_default_append(std::vector<_Tp, _Alloc>::size_type) [with _Tp = MoveOperationTracker; _Alloc = tbb::zero_allocator; std::vector<_Tp, _Alloc>::size_type = unsigned int]’ /usr/include/c++/8/bits/stl_vector.h:827:4: required from ‘void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = MoveOperationTracker; _Alloc = tbb::zero_allocator; std::vector<_Tp, _Alloc>::size_type = unsigned int]’ ../../src/test/test_allocator_STL.h:36:5: required from ‘void TestSequence(const typename Container::allocator_type&) [with Container = std::vector >; typename Container::allocator_type = tbb::zero_allocator]’ ../../src/test/test_allocator_STL.h:123:59: required from ‘void TestAllocatorWithSTL(const Allocator&) [with Allocator = tbb::zero_allocator]’ ../../src/test/test_cache_aligned_allocator_STL.cpp:32:54: required from here ../../include/tbb/tbb_allocator.h:188:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘tbb::tbb_allocator::value_type’ {aka ‘struct MoveOperationTracker’} with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( ptr, 0, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_cache_aligned_allocator_STL.cpp:27: ../../src/test/test_allocator_STL.h:77:8: note: ‘tbb::tbb_allocator::value_type’ {aka ‘struct MoveOperationTracker’} declared here struct MoveOperationTracker { ^~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_parallel_for.cpp:324: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = parallel_tag; T = short int]’: ../../src/test/test_parallel_for.cpp:710:64: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] }catch(std::invalid_argument){ ^~~~~ ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = parallel_tag; T = short unsigned int]’: ../../src/test/test_parallel_for.cpp:711:73: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = parallel_tag; T = int]’: ../../src/test/test_parallel_for.cpp:712:62: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = parallel_tag; T = unsigned int]’: ../../src/test/test_parallel_for.cpp:713:71: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = parallel_tag; T = long int]’: ../../src/test/test_parallel_for.cpp:714:63: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = parallel_tag; T = long unsigned int]’: ../../src/test/test_parallel_for.cpp:715:72: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = parallel_tag; T = long long int]’: ../../src/test/test_parallel_for.cpp:716:68: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = parallel_tag; T = long long unsigned int]’: ../../src/test/test_parallel_for.cpp:717:77: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = serial_tag; T = short int]’: ../../src/test/test_parallel_for.cpp:726:66: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = serial_tag; T = short unsigned int]’: ../../src/test/test_parallel_for.cpp:727:75: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = serial_tag; T = int]’: ../../src/test/test_parallel_for.cpp:728:64: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = serial_tag; T = unsigned int]’: ../../src/test/test_parallel_for.cpp:729:73: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = serial_tag; T = long int]’: ../../src/test/test_parallel_for.cpp:730:65: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = serial_tag; T = long unsigned int]’: ../../src/test/test_parallel_for.cpp:731:74: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = serial_tag; T = long long int]’: ../../src/test/test_parallel_for.cpp:732:70: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] ../../src/test/test_parallel_for.cpp: In instantiation of ‘void TestParallelForWithStepSupport() [with Flavor = serial_tag; T = long long unsigned int]’: ../../src/test/test_parallel_for.cpp:733:79: required from here ../../src/test/test_parallel_for.cpp:311:6: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=] g++ -o test_parallel_reduce.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_reduce.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_parallel_for.cpp:324: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded > >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, 128>, tbb::cache_aligned_allocator > >, 128> > >, tbb::internal::padded > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = std::multimap >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_parallel_for.cpp:769:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded > >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/task.h:24, from ../../include/tbb/parallel_for.h:25, from ../../src/test/test_parallel_for.cpp:42: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded > >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_parallel_for.cpp:324: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_parallel_for.cpp:769:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/task.h:24, from ../../include/tbb/parallel_for.h:25, from ../../src/test/test_parallel_for.cpp:42: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_parallel_reduce.cpp:233: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_parallel_reduce.cpp:233: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_parallel_reduce.cpp:362:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/task.h:24, from ../../include/tbb/parallel_reduce.h:25, from ../../src/test/test_parallel_reduce.cpp:22: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_parallel_sort.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_sort.cpp In file included from ../../src/test/test_parallel_sort.cpp:24: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../src/test/test_parallel_sort.cpp:24: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = Minimal; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = Minimal; A = tbb::cache_aligned_allocator]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = Minimal; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:824:70: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_to_at_least(tbb::concurrent_vector::size_type) [with T = Minimal; A = tbb::cache_aligned_allocator; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, Minimal>; tbb::concurrent_vector::size_type = unsigned int]’ ../../src/test/test_parallel_sort.cpp:438:35: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class Minimal’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/test/test_parallel_sort.cpp:48:7: note: ‘class Minimal’ declared here class Minimal { ^~~~~~~ g++ -o test_parallel_scan.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_scan.cpp In file included from ../../src/test/test_parallel_scan.cpp:21: ../../include/tbb/parallel_scan.h: In static member function ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&)’: ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h: In instantiation of ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&) [with Range = tbb::blocked_range; Body = Accumulator; Partitioner = tbb::auto_partitioner]’: ../../include/tbb/parallel_scan.h:327:68: required from ‘void tbb::parallel_scan(const Range&, Body&) [with Range = tbb::blocked_range; Body = Accumulator]’ ../../src/test/test_parallel_scan.cpp:231:59: required from here ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h: In instantiation of ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&) [with Range = tbb::blocked_range; Body = Accumulator; Partitioner = tbb::simple_partitioner]’: ../../include/tbb/parallel_scan.h:334:61: required from ‘void tbb::parallel_scan(const Range&, Body&, const tbb::simple_partitioner&) [with Range = tbb::blocked_range; Body = Accumulator]’ ../../src/test/test_parallel_scan.cpp:234:86: required from here ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ g++ -o test_parallel_while.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_while.cpp g++ -o test_parallel_do.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_do.cpp g++ -o test_pipeline.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_pipeline.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_pipeline.cpp:63: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_pipeline.cpp:63: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_pipeline.cpp:313:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/test_pipeline.cpp:21: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_pipeline_with_tbf.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_pipeline_with_tbf.cpp g++ -o test_parallel_pipeline.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_pipeline.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_pipeline_with_tbf.cpp:70: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_pipeline_with_tbf.cpp:70: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_pipeline_with_tbf.cpp:527:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/pipeline.h:24, from ../../src/test/test_pipeline_with_tbf.cpp:21: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_lambda.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_lambda.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../include/tbb/tbb.h:41, from ../../src/test/test_lambda.cpp:33: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/tbb.h:42, from ../../src/test/test_lambda.cpp:33: ../../include/tbb/concurrent_hash_map.h: In static member function ‘static void tbb::interface5::internal::hash_map_base::init_buckets(tbb::interface5::internal::hash_map_base::segment_ptr_t, tbb::interface5::internal::hash_map_base::size_type, bool)’: ../../include/tbb/concurrent_hash_map.h:169:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::interface5::internal::hash_map_base::bucket’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] if( is_initial ) std::memset(ptr, 0, sz*sizeof(bucket) ); ^ ../../include/tbb/concurrent_hash_map.h:98:16: note: ‘struct tbb::interface5::internal::hash_map_base::bucket’ declared here struct bucket : tbb::internal::no_copy { ^~~~~~ In file included from ../../include/tbb/tbb.h:65, from ../../src/test/test_lambda.cpp:33: ../../include/tbb/parallel_scan.h: In static member function ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&)’: ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../include/tbb/tbb.h:41, from ../../src/test/test_lambda.cpp:33: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, 128>, tbb::cache_aligned_allocator >, 128> > >, tbb::internal::padded >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = std::pair; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_lambda.cpp:248:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/aligned_space.h:24, from ../../include/tbb/tbb.h:35, from ../../src/test/test_lambda.cpp:33: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_task_scheduler_init.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task_scheduler_init.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_task_scheduler_init.cpp:58: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/test_task_scheduler_init.cpp:58: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_task_scheduler_init.cpp:383:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/task_scheduler_init.h:24, from ../../src/test/test_task_scheduler_init.cpp:27: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_task_scheduler_observer.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task_scheduler_observer.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_task_scheduler_observer.cpp:38: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_task_scheduler_observer.cpp:38: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = ThreadState; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_task_scheduler_observer.cpp:417:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/harness.h:197, from ../../src/test/test_task_scheduler_observer.cpp:31: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_task.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task.cpp g++ -o test_tbb_thread.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_tbb_thread.cpp g++ -o test_std_thread.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_std_thread.cpp g++ -o test_tick_count.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_tick_count.cpp g++ -o test_inits_loop.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_inits_loop.cpp g++ -o test_yield.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_yield.cpp g++ -o test_eh_tasks.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_eh_tasks.cpp g++ -o test_eh_algorithms.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_eh_algorithms.cpp In file included from ../../src/test/test_eh_algorithms.cpp:37: ../../include/tbb/parallel_scan.h: In static member function ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&)’: ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_eh_tasks.cpp:90: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_eh_algorithms.cpp:54: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ ../../src/test/test_eh_tasks.cpp: In member function ‘void CtxConcurrentDestroyer::operator()(int) const’: ../../src/test/test_eh_tasks.cpp:726:71: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘class tbb::task_group_context’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] memset( s_Contexts[i], 0, sizeof(tbb::task_group_context) ); ^ In file included from ../../src/test/test_eh_tasks.cpp:31: ../../include/tbb/task.h:316:7: note: ‘class tbb::task_group_context’ declared here class task_group_context : internal::no_copy { ^~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_eh_tasks.cpp:90: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_eh_tasks.cpp:782:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/harness.h:197, from ../../src/test/test_eh_tasks.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_eh_algorithms.cpp:54: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_eh_algorithms.cpp:1575:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/harness.h:197, from ../../src/test/test_eh_algorithms.cpp:24: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_eh_flow_graph.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_eh_flow_graph.cpp g++ -o test_parallel_invoke.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_invoke.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_eh_flow_graph.cpp:64: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_parallel_invoke.cpp:209: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_parallel_invoke.cpp:209: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_parallel_invoke.cpp:321:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/task.h:24, from ../../include/tbb/parallel_invoke.h:24, from ../../src/test/test_parallel_invoke.cpp:29: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../src/test/harness.h:195, from ../../src/test/test_parallel_invoke.cpp:33: ../../src/test/test_parallel_invoke.cpp: In function ‘void call_parallel_invoke(size_t, F0&, F1&, F2&, F3&, F4&, F5&, F6&, F7&, F8&, F9&, tbb::task_group_context*) [with F0 = void (*)(); F1 = void (*)(); F2 = void (*)(); F3 = void (*)(); F4 = void (*)(); F5 = void (*)(); F6 = void (*)(); F7 = void (*)(); F8 = void (*)(); F9 = void (*)()]’: ../../src/test/harness_assert.h:33:45: warning: this statement may fall through [-Wimplicit-fallthrough=] #define ASSERT_CUSTOM(p,message,file,line) ((p)?(void)0:ReportError(file,line,#p,message)) ^ ../../src/test/harness_assert.h:34:45: note: in expansion of macro ‘ASSERT_CUSTOM’ #define ASSERT(p,message) ASSERT_CUSTOM(p,message,__FILE__,__LINE__) ^~~~~~~~~~~~~ ../../src/test/test_parallel_invoke.cpp:97:9: note: in expansion of macro ‘ASSERT’ ASSERT(false, "number of arguments must be between 2 and 10"); ^~~~~~ ../../src/test/test_parallel_invoke.cpp:98:5: note: here case 2: ^~~~ In file included from ../../src/test/harness.h:195, from ../../src/test/test_parallel_invoke.cpp:33: ../../src/test/test_parallel_invoke.cpp: In function ‘void call_parallel_invoke(size_t, F0&, F1&, F2&, F3&, F4&, F5&, F6&, F7&, F8&, F9&, tbb::task_group_context*) [with F0 = test_functor0; F1 = test_functor1; F2 = test_functor2; F3 = test_functor3; F4 = test_functor4; F5 = test_functor5; F6 = test_functor6; F7 = test_functor7; F8 = test_functor8; F9 = test_functor9]’: ../../src/test/harness_assert.h:33:45: warning: this statement may fall through [-Wimplicit-fallthrough=] #define ASSERT_CUSTOM(p,message,file,line) ((p)?(void)0:ReportError(file,line,#p,message)) ^ ../../src/test/harness_assert.h:34:45: note: in expansion of macro ‘ASSERT_CUSTOM’ #define ASSERT(p,message) ASSERT_CUSTOM(p,message,__FILE__,__LINE__) ^~~~~~~~~~~~~ ../../src/test/test_parallel_invoke.cpp:97:9: note: in expansion of macro ‘ASSERT’ ASSERT(false, "number of arguments must be between 2 and 10"); ^~~~~~ ../../src/test/test_parallel_invoke.cpp:98:5: note: here case 2: ^~~~ In file included from ../../src/test/harness.h:195, from ../../src/test/test_parallel_invoke.cpp:33: ../../src/test/test_parallel_invoke.cpp: In function ‘void call_parallel_invoke(size_t, F0&, F1&, F2&, F3&, F4&, F5&, F6&, F7&, F8&, F9&, tbb::task_group_context*) [with F0 = void(); F1 = void(); F2 = void(); F3 = void(); F4 = void(); F5 = void(); F6 = void(); F7 = void(); F8 = void(); F9 = void()]’: ../../src/test/harness_assert.h:33:45: warning: this statement may fall through [-Wimplicit-fallthrough=] #define ASSERT_CUSTOM(p,message,file,line) ((p)?(void)0:ReportError(file,line,#p,message)) ^ ../../src/test/harness_assert.h:34:45: note: in expansion of macro ‘ASSERT_CUSTOM’ #define ASSERT(p,message) ASSERT_CUSTOM(p,message,__FILE__,__LINE__) ^~~~~~~~~~~~~ ../../src/test/test_parallel_invoke.cpp:97:9: note: in expansion of macro ‘ASSERT’ ASSERT(false, "number of arguments must be between 2 and 10"); ^~~~~~ ../../src/test/test_parallel_invoke.cpp:98:5: note: here case 2: ^~~~ In file included from ../../src/test/harness.h:195, from ../../src/test/test_parallel_invoke.cpp:33: ../../src/test/test_parallel_invoke.cpp: In function ‘void call_parallel_invoke(size_t, F0&, F1&, F2&, F3&, F4&, F5&, F6&, F7&, F8&, F9&, tbb::task_group_context*) [with F0 = throwing_functor0; F1 = throwing_functor1; F2 = throwing_functor2; F3 = throwing_functor3; F4 = throwing_functor4; F5 = throwing_functor5; F6 = throwing_functor6; F7 = throwing_functor7; F8 = throwing_functor8; F9 = throwing_functor9]’: ../../src/test/harness_assert.h:33:45: warning: this statement may fall through [-Wimplicit-fallthrough=] #define ASSERT_CUSTOM(p,message,file,line) ((p)?(void)0:ReportError(file,line,#p,message)) ^ ../../src/test/harness_assert.h:34:45: note: in expansion of macro ‘ASSERT_CUSTOM’ #define ASSERT(p,message) ASSERT_CUSTOM(p,message,__FILE__,__LINE__) ^~~~~~~~~~~~~ ../../src/test/test_parallel_invoke.cpp:97:9: note: in expansion of macro ‘ASSERT’ ASSERT(false, "number of arguments must be between 2 and 10"); ^~~~~~ ../../src/test/test_parallel_invoke.cpp:98:5: note: here case 2: ^~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_eh_flow_graph.cpp:64: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_eh_flow_graph.cpp:2043:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/harness.h:197, from ../../src/test/test_eh_flow_graph.cpp:38: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ during GIMPLE pass: forwprop ../../src/test/test_eh_algorithms.cpp: In function ‘void TestParallelLoopAux() [with ParForBody = SimpleParForBody; Partitioner = const tbb::simple_partitioner]’: ../../src/test/test_eh_algorithms.cpp:162:6: internal compiler error: Segmentation fault void TestParallelLoopAux() { ^~~~~~~~~~~~~~~~~~~ g++ -o test_task_group.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task_group.cpp In file included from ../../include/tbb/compat/../enumerable_thread_specific.h:25, from ../../include/tbb/compat/../combinable.h:24, from ../../include/tbb/compat/ppl.h:31, from ../../src/test/test_task_group.cpp:47: ../../include/tbb/compat/../concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/compat/../concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/compat/../concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/compat/../enumerable_thread_specific.h:25, from ../../include/tbb/compat/../combinable.h:24, from ../../include/tbb/compat/ppl.h:31, from ../../src/test/test_task_group.cpp:47: ../../include/tbb/compat/../concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/compat/../concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/compat/../concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/compat/../concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/compat/../enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_task_group.cpp:875:1: required from here ../../include/tbb/compat/../concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/compat/../task.h:24, from ../../include/tbb/compat/../task_group.h:24, from ../../include/tbb/compat/ppl.h:24, from ../../src/test/test_task_group.cpp:47: ../../include/tbb/compat/../tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ 0x514d17 crash_signal ../../src/gcc/toplev.c:325 0x5c1859 gimple_assign_rhs_code ../../src/gcc/gimple.h:2685 0x5c1859 gimple_assign_rhs_code ../../src/gcc/gimple.h:2694 0x5c1859 execute ../../src/gcc/tree-ssa-forwprop.c:2262 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See for instructions. g++ -o test_ittnotify.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_ittnotify.cpp g++ -o test_parallel_for_each.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_parallel_for_each.cpp g++ -o test_tbb_header.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_tbb_header.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_parallel_for_each.cpp:92: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/harness_concurrency_tracker.h:33, from ../../src/test/harness_eh.h:28, from ../../src/test/test_parallel_for_each.cpp:92: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_parallel_for_each.cpp:248:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/internal/_range_iterator.h:24, from ../../include/tbb/parallel_do.h:24, from ../../include/tbb/parallel_for_each.h:24, from ../../src/test/test_parallel_for_each.cpp:25: ../../include/tbb/internal/../tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../include/tbb/tbb.h:41, from ../../src/test/test_tbb_header.cpp:87: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/tbb.h:42, from ../../src/test/test_tbb_header.cpp:87: ../../include/tbb/concurrent_hash_map.h: In static member function ‘static void tbb::interface5::internal::hash_map_base::init_buckets(tbb::interface5::internal::hash_map_base::segment_ptr_t, tbb::interface5::internal::hash_map_base::size_type, bool)’: ../../include/tbb/concurrent_hash_map.h:169:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::interface5::internal::hash_map_base::bucket’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] if( is_initial ) std::memset(ptr, 0, sz*sizeof(bucket) ); ^ ../../include/tbb/concurrent_hash_map.h:98:16: note: ‘struct tbb::interface5::internal::hash_map_base::bucket’ declared here struct bucket : tbb::internal::no_copy { ^~~~~~ In file included from ../../include/tbb/tbb.h:65, from ../../src/test/test_tbb_header.cpp:87: ../../include/tbb/parallel_scan.h: In static member function ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&)’: ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h: In instantiation of ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&) [with Range = tbb::blocked_range2d; Body = Body3; Partitioner = tbb::auto_partitioner]’: ../../include/tbb/parallel_scan.h:341:59: required from ‘void tbb::parallel_scan(const Range&, Body&, const tbb::auto_partitioner&) [with Range = tbb::blocked_range2d; Body = Body3]’ ../../src/test/test_tbb_header.cpp:289:5: required from here ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ g++ -o test_tbb_header_secondary.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -D__TBB_TEST_SECONDARY=1 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_tbb_header.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../include/tbb/tbb.h:41, from ../../src/test/test_tbb_header.cpp:87: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/tbb.h:42, from ../../src/test/test_tbb_header.cpp:87: ../../include/tbb/concurrent_hash_map.h: In static member function ‘static void tbb::interface5::internal::hash_map_base::init_buckets(tbb::interface5::internal::hash_map_base::segment_ptr_t, tbb::interface5::internal::hash_map_base::size_type, bool)’: ../../include/tbb/concurrent_hash_map.h:169:68: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::interface5::internal::hash_map_base::bucket’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] if( is_initial ) std::memset(ptr, 0, sz*sizeof(bucket) ); ^ ../../include/tbb/concurrent_hash_map.h:98:16: note: ‘struct tbb::interface5::internal::hash_map_base::bucket’ declared here struct bucket : tbb::internal::no_copy { ^~~~~~ g++ -o test_combinable.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_combinable.cpp In file included from ../../include/tbb/tbb.h:65, from ../../src/test/test_tbb_header.cpp:87: ../../include/tbb/parallel_scan.h: In static member function ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&)’: ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h: In instantiation of ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&) [with Range = tbb::blocked_range2d; Body = Body3; Partitioner = tbb::auto_partitioner]’: ../../include/tbb/parallel_scan.h:341:59: required from ‘void tbb::parallel_scan(const Range&, Body&, const tbb::auto_partitioner&) [with Range = tbb::blocked_range2d; Body = Body3]’ ../../src/test/test_tbb_header.cpp:289:5: required from here ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] typedef internal::final_sum final_sum_type; ^~~~~~~~~~~~~~ ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here typedef final_sum final_sum_type; ^~~~~~~~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ g++ -o test_task_auto_init.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task_auto_init.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded >, 128>; A = tbb::cache_aligned_allocator >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator >, 128>, tbb::cache_aligned_allocator >, 128> > >, tbb::internal::padded >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = Harness::StateTrackable; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = Harness::StateTrackable; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = Harness::StateTrackable; Allocator = tbb::cache_aligned_allocator >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/combinable.h:51:67: required from ‘tbb::combinable::combinable(const tbb::combinable&) [with T = Harness::StateTrackable]’ ../../src/test/test_combinable.cpp:434:67: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/combinable.h:51:67: required from ‘tbb::combinable::combinable(const tbb::combinable&) [with T = int]’ ../../src/test/test_combinable.cpp:243:32: required from ‘void RunParallelScalarTests(const char*) [with T = int]’ ../../src/test/test_combinable.cpp:375:38: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = double; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = double; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = double; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/combinable.h:51:67: required from ‘tbb::combinable::combinable(const tbb::combinable&) [with T = double]’ ../../src/test/test_combinable.cpp:243:32: required from ‘void RunParallelScalarTests(const char*) [with T = double]’ ../../src/test/test_combinable.cpp:376:44: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = minimal; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = minimal; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = minimal; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/combinable.h:51:67: required from ‘tbb::combinable::combinable(const tbb::combinable&) [with T = minimal]’ ../../src/test/test_combinable.cpp:243:32: required from ‘void RunParallelScalarTests(const char*) [with T = minimal]’ ../../src/test/test_combinable.cpp:377:46: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded > >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, 128>, tbb::cache_aligned_allocator > >, 128> > >, tbb::internal::padded > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::vector >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::vector >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = std::vector >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/combinable.h:51:67: required from ‘tbb::combinable::combinable(const tbb::combinable&) [with T = std::vector >]’ ../../src/test/test_combinable.cpp:332:28: required from ‘void RunParallelVectorTests(const char*) [with T = int]’ ../../src/test/test_combinable.cpp:378:77: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded > >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded > >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded > >, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded > >, 128>; A = tbb::cache_aligned_allocator > >, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator > >, 128>, tbb::cache_aligned_allocator > >, 128> > >, tbb::internal::padded > >, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:804:36: required from ‘static void* tbb::interface6::enumerable_thread_specific::create_local_by_copy(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>&, void*) [with T = std::vector >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:948:13: required from ‘void tbb::interface6::enumerable_thread_specific::internal_copy(const tbb::interface6::enumerable_thread_specific&) [with A2 = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type C2 = (tbb::ets_key_usage_type)1; T = std::vector >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/enumerable_thread_specific.h:981:13: required from ‘tbb::interface6::enumerable_thread_specific::enumerable_thread_specific(const tbb::interface6::enumerable_thread_specific&) [with T = std::vector >; Allocator = tbb::cache_aligned_allocator > >; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../include/tbb/combinable.h:51:67: required from ‘tbb::combinable::combinable(const tbb::combinable&) [with T = std::vector >]’ ../../src/test/test_combinable.cpp:332:28: required from ‘void RunParallelVectorTests(const char*) [with T = double]’ ../../src/test/test_combinable.cpp:379:86: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded > >, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../include/tbb/atomic.h:32, from ../../include/tbb/enumerable_thread_specific.h:24, from ../../include/tbb/combinable.h:24, from ../../src/test/test_combinable.cpp:25: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded > >, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_task_arena.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task_arena.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_task_arena.cpp:60: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_task_arena.cpp:60: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_task_arena.cpp:1163:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/tbb_machine.h:117, from ../../src/test/harness_fp.h:24, from ../../src/test/test_task_arena.cpp:45: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ In file included from /usr/include/c++/8/vector:69, from ../../src/test/test_combinable.cpp:40: /usr/include/c++/8/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const double&}; _Tp = double; _Alloc = tbb::tbb_allocator]’: /usr/include/c++/8/bits/vector.tcc:413:7: note: parameter passing for argument of type ‘std::vector >::iterator’ {aka ‘__gnu_cxx::__normal_iterator > >’} changed in GCC 7.1 vector<_Tp, _Alloc>:: ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/vector:64, from ../../src/test/test_combinable.cpp:40: /usr/include/c++/8/bits/stl_vector.h: In member function ‘tbb::task* tbb::interface9::internal::start_for::execute() [with Range = tbb::blocked_range; Body = ParallelVectorForBody; Partitioner = const tbb::auto_partitioner]’: /usr/include/c++/8/bits/stl_vector.h:1085:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator > >’ changed in GCC 7.1 _M_realloc_insert(end(), __x); ^~~~~~~~~~~~~~~~~ /usr/include/c++/8/bits/stl_vector.h:1085:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator > >’ changed in GCC 7.1 _M_realloc_insert(end(), __x); ^~~~~~~~~~~~~~~~~ g++ -o test_concurrent_monitor.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_concurrent_monitor.cpp g++ -o test_semaphore.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_semaphore.cpp g++ -o test_critical_section.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_critical_section.cpp g++ -o test_reader_writer_lock.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_reader_writer_lock.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_critical_section.cpp:25: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_critical_section.cpp:25: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = double; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_critical_section.cpp:216:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/critical_section.h:31, from ../../src/test/test_critical_section.cpp:23: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_tbb_condition_variable.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_tbb_condition_variable.cpp g++ -o test_intrusive_list.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_intrusive_list.cpp g++ -o test_concurrent_priority_queue.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_concurrent_priority_queue.cpp g++ -o test_task_priority.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task_priority.cpp In file included from ../../src/test/test_concurrent_priority_queue.cpp:28: ../../src/test/harness_allocator.h: In instantiation of ‘debug_allocator::pointer debug_allocator::allocate(debug_allocator::size_type, const void*) [with T = tbb::atomic; Allocator = std::allocator; debug_allocator::pointer = tbb::atomic*; debug_allocator::size_type = unsigned int]’: ../../src/test/test_concurrent_priority_queue.cpp:920:16: required from ‘void Examine(Queue&, Queue&, const std::vector&) [with bool hasCopyCtor = true; Queue = tbb::interface5::concurrent_priority_queue, std::less >, debug_allocator, std::allocator> >; typename Queue::value_type = tbb::atomic]’ ../../src/test/test_concurrent_priority_queue.cpp:928:34: required from ‘void Examine(const Queue&, const std::vector&) [with Queue = tbb::interface5::concurrent_priority_queue, std::less >, debug_allocator, std::allocator> >; typename container_type::value_type = tbb::atomic]’ ../../src/test/test_concurrent_priority_queue.cpp:960:12: required from ‘void TypeTester(const std::vector&, Compare) [with ValueType = tbb::atomic; Compare = std::less >]’ ../../src/test/test_concurrent_priority_queue.cpp:1021:64: required from ‘void TypeTester(const std::vector&) [with ValueType = tbb::atomic]’ ../../src/test/test_concurrent_priority_queue.cpp:1038:22: required from here ../../src/test/harness_allocator.h:529:20: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘struct tbb::atomic’ with no trivial copy-assignment [-Wclass-memaccess] std::memset( ptr, 0xE3E3E3E3, n * sizeof(value_type) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_priority_queue.h:24, from ../../src/test/test_concurrent_priority_queue.cpp:22: ../../include/tbb/atomic.h:421:27: note: ‘struct tbb::atomic’ declared here template<> struct atomic: internal::atomic_impl_with_arithmetic { \ ^~~~~~~~~ ../../include/tbb/atomic.h:471:1: note: in expansion of macro ‘__TBB_DECL_ATOMIC’ __TBB_DECL_ATOMIC(int) ^~~~~~~~~~~~~~~~~ g++ -o test_task_enqueue.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task_enqueue.cpp g++ -o test_task_steal_limit.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_task_steal_limit.cpp g++ -o test_hw_concurrency.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_hw_concurrency.cpp In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_hw_concurrency.cpp:36: ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); ^ ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here typedef internal::vector_iterator iterator; ^~~~~~~~ In file included from ../../include/tbb/enumerable_thread_specific.h:25, from ../../src/test/test_hw_concurrency.cpp:36: ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ ../../src/test/test_hw_concurrency.cpp:55:1: required from here ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] std::memset( array, 0, n_of_elements * sizeof( T ) ); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/test/harness.h:197, from ../../src/test/test_hw_concurrency.cpp:31: ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here struct padded : padded_base {}; ^~~~~~ g++ -o test_fp.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_fp.cpp g++ -o test_tuple.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_tuple.cpp g++ -o test_flow_graph.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_flow_graph.cpp In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/harness_graph.h:32, from ../../src/test/test_flow_graph.cpp:21: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator > >]’ ../../include/tbb/concurrent_unordered_map.h:101:73: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(tbb::interface5::concurrent_unordered_map::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; T = tbb::atomic; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator > >; tbb::interface5::concurrent_unordered_map::size_type = unsigned int; tbb::interface5::concurrent_unordered_map::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_map::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_map::allocator_type = tbb::tbb_allocator > >]’ ../../src/test/harness_graph.h:339:17: required from ‘void harness_mapped_receiver::initialize_map(const T&, size_t) [with T = int; size_t = unsigned int]’ ../../src/test/test_flow_graph.cpp:86:39: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, tbb::tbb_allocator > > >, std::pair > >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/flow_graph.h:25, from ../../src/test/harness_graph.h:29, from ../../src/test/test_flow_graph.cpp:21: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic >, tbb::tbb_allocator > > >, std::pair > >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/harness_graph.h:32, from ../../src/test/test_flow_graph.cpp:21: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator > >]’ ../../include/tbb/concurrent_unordered_map.h:101:73: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(tbb::interface5::concurrent_unordered_map::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; T = tbb::atomic; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator > >; tbb::interface5::concurrent_unordered_map::size_type = unsigned int; tbb::interface5::concurrent_unordered_map::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_map::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_map::allocator_type = tbb::tbb_allocator > >]’ ../../src/test/harness_graph.h:339:17: required from ‘void harness_mapped_receiver::initialize_map(const T&, size_t) [with T = int; size_t = unsigned int]’ ../../src/test/test_flow_graph.cpp:86:39: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/harness_graph.h:32, from ../../src/test/test_flow_graph.cpp:21: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ g++ -o test_broadcast_node.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_broadcast_node.cpp g++ -o test_continue_node.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_continue_node.cpp g++ -o test_function_node.o -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -Wa,-mimplicit-it=thumb -DTEST_USES_TBB=1 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I../../src -I../../src/rml/include -I../../include -I. -include ../../src/test/harness_preload.h ../../src/test/test_function_node.cpp In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/harness_graph.h:32, from ../../src/test/test_function_node.cpp:21: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator > >]’ ../../include/tbb/concurrent_unordered_map.h:101:73: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(tbb::interface5::concurrent_unordered_map::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; T = tbb::atomic; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator > >; tbb::interface5::concurrent_unordered_map::size_type = unsigned int; tbb::interface5::concurrent_unordered_map::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_map::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_map::allocator_type = tbb::tbb_allocator > >]’ ../../src/test/harness_graph.h:339:17: required from ‘void harness_mapped_receiver::initialize_map(const T&, size_t) [with T = int; size_t = unsigned int]’ ../../src/test/test_function_node.cpp:105:18: required from ‘void buffered_levels(size_t, Body) [with InputType = int; OutputType = int; Body = run_buffered_levels(int) [with InputType = int; OutputType = int]::; size_t = unsigned int]’ ../../src/test/test_function_node.cpp:228:42: required from ‘void run_buffered_levels(int) [with InputType = int; OutputType = int]’ ../../src/test/test_function_node.cpp:448:46: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1213:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct tbb::atomic >, tbb::tbb_allocator > > >, std::pair > >*>’ with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess] memset(my_buckets, 0, pointers_per_table * sizeof(void *)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/flow_graph.h:25, from ../../src/test/harness_graph.h:29, from ../../src/test/test_function_node.cpp:21: ../../include/tbb/atomic.h:485:29: note: ‘struct tbb::atomic >, tbb::tbb_allocator > > >, std::pair > >*>’ declared here template struct atomic: internal::atomic_impl_with_arithmetic { ^~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/harness_graph.h:32, from ../../src/test/test_function_node.cpp:21: ../../include/tbb/internal/_concurrent_unordered_impl.h: In instantiation of ‘void tbb::interface5::internal::concurrent_unordered_base::set_bucket(tbb::interface5::internal::concurrent_unordered_base::size_type, tbb::interface5::internal::concurrent_unordered_base::raw_iterator) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::raw_iterator = tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >]’: ../../include/tbb/internal/_concurrent_unordered_impl.h:1217:9: required from ‘void tbb::interface5::internal::concurrent_unordered_base::internal_init() [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>]’ ../../include/tbb/internal/_concurrent_unordered_impl.h:720:9: required from ‘tbb::interface5::internal::concurrent_unordered_base::concurrent_unordered_base(tbb::interface5::internal::concurrent_unordered_base::size_type, const hash_compare&, const allocator_type&) [with Traits = tbb::interface5::concurrent_unordered_map_traits, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false>; tbb::interface5::internal::concurrent_unordered_base::size_type = unsigned int; tbb::interface5::internal::concurrent_unordered_base::hash_compare = tbb::interface5::internal::hash_compare, std::equal_to >; tbb::interface5::internal::concurrent_unordered_base::allocator_type = tbb::tbb_allocator > >]’ ../../include/tbb/concurrent_unordered_map.h:101:73: required from ‘tbb::interface5::concurrent_unordered_map::concurrent_unordered_map(tbb::interface5::concurrent_unordered_map::size_type, const hasher&, const key_equal&, const allocator_type&) [with Key = int; T = tbb::atomic; Hasher = tbb::tbb_hash; Key_equality = std::equal_to; Allocator = tbb::tbb_allocator > >; tbb::interface5::concurrent_unordered_map::size_type = unsigned int; tbb::interface5::concurrent_unordered_map::hasher = tbb::tbb_hash; tbb::interface5::concurrent_unordered_map::key_equal = std::equal_to; tbb::interface5::concurrent_unordered_map::allocator_type = tbb::tbb_allocator > >]’ ../../src/test/harness_graph.h:339:17: required from ‘void harness_mapped_receiver::initialize_map(const T&, size_t) [with T = int; size_t = unsigned int]’ ../../src/test/test_function_node.cpp:105:18: required from ‘void buffered_levels(size_t, Body) [with InputType = int; OutputType = int; Body = run_buffered_levels(int) [with InputType = int; OutputType = int]::; size_t = unsigned int]’ ../../src/test/test_function_node.cpp:228:42: required from ‘void run_buffered_levels(int) [with InputType = int; OutputType = int]’ ../../src/test/test_function_node.cpp:448:46: required from here ../../include/tbb/internal/_concurrent_unordered_impl.h:1481:24: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >’}; use assignment or value-initialization instead [-Wclass-memaccess] std::memset(new_segment, 0, sz*sizeof(raw_iterator)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../include/tbb/concurrent_unordered_map.h:27, from ../../src/test/harness_graph.h:32, from ../../src/test/test_function_node.cpp:21: ../../include/tbb/internal/_concurrent_unordered_impl.h:71:7: note: ‘tbb::interface5::internal::concurrent_unordered_base, tbb::interface5::internal::hash_compare, std::equal_to >, tbb::tbb_allocator > >, false> >::raw_iterator’ {aka ‘class tbb::interface5::internal::flist_iterator >, tbb::tbb_allocator > > >, std::pair > >’} declared here class flist_iterator : public std::iterator ^~~~~~~~~~~~~~ Preprocessed source stored into /tmp/ccFau13G.out file, please attach this to your bugreport. === BEGIN GCC DUMP === 10136: // Target: arm-linux-gnueabihf 10136: // Configured with: ../src/configure -v --with-pkgversion='Ubuntu 8-20180110-1ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf 10136: // Thread model: posix 10136: // gcc version 8.0.0 20180110 (experimental) [trunk revision 256425] (Ubuntu 8-20180110-1ubuntu1) 10136: // 10136: // In file included from ../../src/test/test_eh_algorithms.cpp:37: 10136: // ../../include/tbb/parallel_scan.h: In static member function ‘static void tbb::internal::start_scan::run(const Range&, Body&, const Partitioner&)’: 10136: // ../../include/tbb/parallel_scan.h:230:57: warning: declaration of ‘final_sum_type’ shadows a previous local [-Wshadow] 10136: // typedef internal::final_sum final_sum_type; 10136: // ^~~~~~~~~~~~~~ 10136: // ../../include/tbb/parallel_scan.h:187:39: note: shadowed declaration is here 10136: // typedef final_sum final_sum_type; 10136: // ^~~~~~~~~~~~~~ 10136: // In file included from ../../include/tbb/enumerable_thread_specific.h:25, 10136: // from ../../include/tbb/combinable.h:24, 10136: // from ../../src/test/harness_concurrency_tracker.h:33, 10136: // from ../../src/test/harness_eh.h:28, 10136: // from ../../src/test/test_eh_algorithms.cpp:54: 10136: // ../../include/tbb/concurrent_vector.h: In static member function ‘static void tbb::concurrent_vector::copy_range(void*, const void*, tbb::concurrent_vector::size_type)’: 10136: // ../../include/tbb/concurrent_vector.h:1307:18: warning: declaration of ‘iterator’ shadows a previous local [-Wshadow] 10136: // I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); 10136: // ^ 10136: // ../../include/tbb/concurrent_vector.h:589:60: note: shadowed declaration is here 10136: // typedef internal::vector_iterator iterator; 10136: // ^~~~~~~~ 10136: // In file included from ../../include/tbb/enumerable_thread_specific.h:25, 10136: // from ../../include/tbb/combinable.h:24, 10136: // from ../../src/test/harness_concurrency_tracker.h:33, 10136: // from ../../src/test/harness_eh.h:28, 10136: // from ../../src/test/test_eh_algorithms.cpp:54: 10136: // ../../include/tbb/concurrent_vector.h: In instantiation of ‘void tbb::internal::handle_unconstructed_elements(T*, std::size_t) [with T = tbb::internal::padded, 128>; std::size_t = unsigned int]’: 10136: // ../../include/tbb/concurrent_vector.h:1134:56: required from ‘tbb::concurrent_vector::internal_loop_guide::~internal_loop_guide() [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >]’ 10136: // ../../include/tbb/concurrent_vector.h:1273:25: required from ‘static void tbb::concurrent_vector::initialize_array(void*, const void*, tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ 10136: // ../../include/tbb/concurrent_vector.h:791:76: required from ‘tbb::concurrent_vector::iterator tbb::concurrent_vector::grow_by(tbb::concurrent_vector::size_type) [with T = tbb::internal::padded, 128>; A = tbb::cache_aligned_allocator, 128> >; tbb::concurrent_vector::iterator = tbb::internal::vector_iterator, 128>, tbb::cache_aligned_allocator, 128> > >, tbb::internal::padded, 128> >; tbb::concurrent_vector::size_type = unsigned int]’ 10136: // ../../include/tbb/enumerable_thread_specific.h:797:36: required from ‘void* tbb::interface6::enumerable_thread_specific::create_local() [with T = unsigned int; Allocator = tbb::cache_aligned_allocator; tbb::ets_key_usage_type ETS_key_type = (tbb::ets_key_usage_type)1]’ 10136: // ../../src/test/test_eh_algorithms.cpp:1575:1: required from here 10136: // ../../include/tbb/concurrent_vector.h:88:20: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct tbb::internal::padded, 128>’; use assignment or value-initialization instead [-Wclass-memaccess] 10136: // std::memset( array, 0, n_of_elements * sizeof( T ) ); 10136: // ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 10136: // In file included from ../../src/test/harness.h:197, 10136: // from ../../src/test/test_eh_algorithms.cpp:24: 10136: // ../../include/tbb/tbb_stddef.h:257:8: note: ‘struct tbb::internal::padded, 128>’ declared here 10136: // struct padded : padded_base {}; 10136: // ^~~~~~ 10136: // during GIMPLE pass: forwprop 10136: // ../../src/test/test_eh_algorithms.cpp: In function ‘void TestParallelLoopAux() [with ParForBody = SimpleParForBody; Partitioner = const tbb::simple_partitioner]’: 10136: // ../../src/test/test_eh_algorithms.cpp:162:6: internal compiler error: Segmentation fault 10136: // void TestParallelLoopAux() { 10136: // ^~~~~~~~~~~~~~~~~~~ 10136: // 0x514d17 crash_signal 10136: // ../../src/gcc/toplev.c:325 10136: // 0x5c1859 gimple_assign_rhs_code 10136: // ../../src/gcc/gimple.h:2685 10136: // 0x5c1859 gimple_assign_rhs_code 10136: // ../../src/gcc/gimple.h:2694 10136: // 0x5c1859 execute 10136: // ../../src/gcc/tree-ssa-forwprop.c:2262 10136: // Please submit a full bug report, 10136: // with preprocessed source if appropriate. 10136: // Please include the complete backtrace with any bug report. 10136: // See for instructions. 10136: 10136: // /usr/lib/gcc/arm-linux-gnueabihf/8/cc1plus -quiet -I ../../src -I ../../src/rml/include -I ../../include -I . -imultiarch arm-linux-gnueabihf -MMD test_eh_algorithms.d -MQ test_eh_algorithms.o -D_GNU_SOURCE -D TBB_USE_DEBUG -D USE_PTHREAD -D TEST_USES_TBB=1 -D _FORTIFY_SOURCE=2 -include ../../src/test/harness_preload.h ../../src/test/test_eh_algorithms.cpp -quiet -dumpbase test_eh_algorithms.cpp -mfloat-abi=hard -mfpu=vfpv3-d16 -mthumb -mtls-dialect=gnu -march=armv7-a+fp -auxbase-strip test_eh_algorithms.o -g -g -O0 -O2 -Wall -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra -Wformat=1 -Werror=format-security -Wdate-time -fdebug-prefix-map=/<>=. -fstack-protector-strong -fstack-protector-strong -Wformat-security -o - -frandom-seed=0 -fdump-noaddr 10136: 10136: # 1 "../../src/test/test_eh_algorithms.cpp" 10136: # 1 "/<>/build/linux_armv7_gcc_cc8_libc2.26_debug//" 10136: # 1 "" 10136: # 1 "" 10136: # 1 "/usr/include/stdc-predef.h" 1 3 4 10136: # 1 "" 2 10136: # 1 "./../../src/test/harness_preload.h" 1 10136: # 34 "./../../src/test/harness_preload.h" 10136: #pragma GCC diagnostic warning "-Wsuggest-override" 10136: # 1 "" 2 10136: # 1 "../../src/test/test_eh_algorithms.cpp" 10136: # 24 "../../src/test/test_eh_algorithms.cpp" 10136: # 1 "../../src/test/harness.h" 1 10136: # 31 "../../src/test/harness.h" 10136: # 1 "../../include/tbb/tbb_config.h" 1 10136: # 32 "../../src/test/harness.h" 2 10136: # 1 "../../src/test/harness_defs.h" 1 10136: # 188 "../../src/test/harness_defs.h" 10136: namespace Harness { 10136: 10136: template void suppress_unused_warning( const T& ) {} 10136: 10136: 10136: 10136: template struct int_to_type {}; 10136: } 10136: # 33 "../../src/test/harness.h" 2 10136: 10136: namespace Harness { 10136: enum TestResult { 10136: Done, 10136: Skipped, 10136: Unknown 10136: }; 10136: } 10136: # 55 "../../src/test/harness.h" 10136: int TestMain (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/cstdlib" 1 3 10136: # 39 "/usr/include/c++/8/cstdlib" 3 10136: 10136: # 40 "/usr/include/c++/8/cstdlib" 3 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++config.h" 1 3 10136: # 236 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++config.h" 3 10136: 10136: # 236 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++config.h" 3 10136: namespace std 10136: { 10136: typedef unsigned int size_t; 10136: typedef int ptrdiff_t; 10136: 10136: 10136: typedef decltype(nullptr) nullptr_t; 10136: 10136: } 10136: # 258 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++config.h" 3 10136: namespace std 10136: { 10136: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 10136: } 10136: namespace __gnu_cxx 10136: { 10136: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 10136: } 10136: # 508 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++config.h" 3 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/os_defines.h" 1 3 10136: # 39 "/usr/include/arm-linux-gnueabihf/c++/8/bits/os_defines.h" 3 10136: # 1 "/usr/include/features.h" 1 3 4 10136: # 419 "/usr/include/features.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 1 3 4 10136: # 419 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 10136: # 420 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 10136: # 421 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 10136: # 420 "/usr/include/features.h" 2 3 4 10136: # 443 "/usr/include/features.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 1 3 4 10136: # 10 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h" 1 3 4 10136: # 11 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 2 3 4 10136: # 444 "/usr/include/features.h" 2 3 4 10136: # 40 "/usr/include/arm-linux-gnueabihf/c++/8/bits/os_defines.h" 2 3 10136: # 509 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++config.h" 2 3 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/cpu_defines.h" 1 3 10136: # 512 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++config.h" 2 3 10136: # 42 "/usr/include/c++/8/cstdlib" 2 3 10136: # 75 "/usr/include/c++/8/cstdlib" 3 10136: # 1 "/usr/include/stdlib.h" 1 3 4 10136: # 25 "/usr/include/stdlib.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 10136: # 26 "/usr/include/stdlib.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 216 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 3 4 10136: typedef unsigned int size_t; 10136: # 32 "/usr/include/stdlib.h" 2 3 4 10136: 10136: extern "C" { 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 1 3 4 10136: # 52 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 3 4 10136: typedef enum 10136: { 10136: P_ALL, 10136: P_PID, 10136: P_PGID 10136: } idtype_t; 10136: # 40 "/usr/include/stdlib.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitstatus.h" 1 3 4 10136: # 41 "/usr/include/stdlib.h" 2 3 4 10136: # 55 "/usr/include/stdlib.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 10136: # 56 "/usr/include/stdlib.h" 2 3 4 10136: 10136: 10136: typedef struct 10136: { 10136: int quot; 10136: int rem; 10136: } div_t; 10136: 10136: 10136: 10136: typedef struct 10136: { 10136: long int quot; 10136: long int rem; 10136: } ldiv_t; 10136: 10136: 10136: 10136: 10136: 10136: __extension__ typedef struct 10136: { 10136: long long int quot; 10136: long long int rem; 10136: } lldiv_t; 10136: # 97 "/usr/include/stdlib.h" 3 4 10136: extern size_t __ctype_get_mb_cur_max (void) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern double atof (const char *__nptr) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: extern int atoi (const char *__nptr) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: extern long int atol (const char *__nptr) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: __extension__ extern long long int atoll (const char *__nptr) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern double strtod (const char *__restrict __nptr, 10136: char **__restrict __endptr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern float strtof (const char *__restrict __nptr, 10136: char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: extern long double strtold (const char *__restrict __nptr, 10136: char **__restrict __endptr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: # 139 "/usr/include/stdlib.h" 3 4 10136: extern long int strtol (const char *__restrict __nptr, 10136: char **__restrict __endptr, int __base) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: extern unsigned long int strtoul (const char *__restrict __nptr, 10136: char **__restrict __endptr, int __base) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: __extension__ 10136: extern long long int strtoq (const char *__restrict __nptr, 10136: char **__restrict __endptr, int __base) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: __extension__ 10136: extern unsigned long long int strtouq (const char *__restrict __nptr, 10136: char **__restrict __endptr, int __base) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: __extension__ 10136: extern long long int strtoll (const char *__restrict __nptr, 10136: char **__restrict __endptr, int __base) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: __extension__ 10136: extern unsigned long long int strtoull (const char *__restrict __nptr, 10136: char **__restrict __endptr, int __base) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern int strfromd (char *__dest, size_t __size, const char *__format, 10136: double __f) 10136: throw () __attribute__ ((__nonnull__ (3))); 10136: 10136: extern int strfromf (char *__dest, size_t __size, const char *__format, 10136: float __f) 10136: throw () __attribute__ ((__nonnull__ (3))); 10136: 10136: extern int strfroml (char *__dest, size_t __size, const char *__format, 10136: long double __f) 10136: throw () __attribute__ ((__nonnull__ (3))); 10136: # 199 "/usr/include/stdlib.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 1 3 4 10136: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 1 3 4 10136: # 28 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 3 4 10136: struct __locale_struct 10136: { 10136: 10136: struct __locale_data *__locales[13]; 10136: 10136: 10136: const unsigned short int *__ctype_b; 10136: const int *__ctype_tolower; 10136: const int *__ctype_toupper; 10136: 10136: 10136: const char *__names[13]; 10136: }; 10136: 10136: typedef struct __locale_struct *__locale_t; 10136: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 2 3 4 10136: 10136: typedef __locale_t locale_t; 10136: # 200 "/usr/include/stdlib.h" 2 3 4 10136: 10136: extern long int strtol_l (const char *__restrict __nptr, 10136: char **__restrict __endptr, int __base, 10136: locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))); 10136: 10136: extern unsigned long int strtoul_l (const char *__restrict __nptr, 10136: char **__restrict __endptr, 10136: int __base, locale_t __loc) 10136: throw () __attribute__ ((__nonnull__ (1, 4))); 10136: 10136: __extension__ 10136: extern long long int strtoll_l (const char *__restrict __nptr, 10136: char **__restrict __endptr, int __base, 10136: locale_t __loc) 10136: throw () __attribute__ ((__nonnull__ (1, 4))); 10136: 10136: __extension__ 10136: extern unsigned long long int strtoull_l (const char *__restrict __nptr, 10136: char **__restrict __endptr, 10136: int __base, locale_t __loc) 10136: throw () __attribute__ ((__nonnull__ (1, 4))); 10136: 10136: extern double strtod_l (const char *__restrict __nptr, 10136: char **__restrict __endptr, locale_t __loc) 10136: throw () __attribute__ ((__nonnull__ (1, 3))); 10136: 10136: extern float strtof_l (const char *__restrict __nptr, 10136: char **__restrict __endptr, locale_t __loc) 10136: throw () __attribute__ ((__nonnull__ (1, 3))); 10136: 10136: extern long double strtold_l (const char *__restrict __nptr, 10136: char **__restrict __endptr, 10136: locale_t __loc) 10136: throw () __attribute__ ((__nonnull__ (1, 3))); 10136: # 245 "/usr/include/stdlib.h" 3 4 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: __attribute__ ((__leaf__)) atoi (const char *__nptr) throw () 10136: { 10136: return (int) strtol (__nptr, (char **) __null, 10); 10136: } 10136: extern __inline __attribute__ ((__gnu_inline__)) long int 10136: __attribute__ ((__leaf__)) atol (const char *__nptr) throw () 10136: { 10136: return strtol (__nptr, (char **) __null, 10); 10136: } 10136: 10136: 10136: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int 10136: __attribute__ ((__leaf__)) atoll (const char *__nptr) throw () 10136: { 10136: return strtoll (__nptr, (char **) __null, 10); 10136: } 10136: # 270 "/usr/include/stdlib.h" 3 4 10136: extern char *l64a (long int __n) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: extern long int a64l (const char *__s) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/sys/types.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 10136: extern "C" { 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 10136: # 28 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 10136: 10136: 10136: typedef unsigned char __u_char; 10136: typedef unsigned short int __u_short; 10136: typedef unsigned int __u_int; 10136: typedef unsigned long int __u_long; 10136: 10136: 10136: typedef signed char __int8_t; 10136: typedef unsigned char __uint8_t; 10136: typedef signed short int __int16_t; 10136: typedef unsigned short int __uint16_t; 10136: typedef signed int __int32_t; 10136: typedef unsigned int __uint32_t; 10136: 10136: 10136: 10136: 10136: __extension__ typedef signed long long int __int64_t; 10136: __extension__ typedef unsigned long long int __uint64_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: __extension__ typedef long long int __quad_t; 10136: __extension__ typedef unsigned long long int __u_quad_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: __extension__ typedef long long int __intmax_t; 10136: __extension__ typedef unsigned long long int __uintmax_t; 10136: # 130 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 1 3 4 10136: # 131 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 10136: 10136: 10136: __extension__ typedef __u_quad_t __dev_t; 10136: __extension__ typedef unsigned int __uid_t; 10136: __extension__ typedef unsigned int __gid_t; 10136: __extension__ typedef unsigned long int __ino_t; 10136: __extension__ typedef __u_quad_t __ino64_t; 10136: __extension__ typedef unsigned int __mode_t; 10136: __extension__ typedef unsigned int __nlink_t; 10136: __extension__ typedef long int __off_t; 10136: __extension__ typedef __quad_t __off64_t; 10136: __extension__ typedef int __pid_t; 10136: __extension__ typedef struct { int __val[2]; } __fsid_t; 10136: __extension__ typedef long int __clock_t; 10136: __extension__ typedef unsigned long int __rlim_t; 10136: __extension__ typedef __u_quad_t __rlim64_t; 10136: __extension__ typedef unsigned int __id_t; 10136: __extension__ typedef long int __time_t; 10136: __extension__ typedef unsigned int __useconds_t; 10136: __extension__ typedef long int __suseconds_t; 10136: 10136: __extension__ typedef int __daddr_t; 10136: __extension__ typedef int __key_t; 10136: 10136: 10136: __extension__ typedef int __clockid_t; 10136: 10136: 10136: __extension__ typedef void * __timer_t; 10136: 10136: 10136: __extension__ typedef long int __blksize_t; 10136: 10136: 10136: 10136: 10136: __extension__ typedef long int __blkcnt_t; 10136: __extension__ typedef __quad_t __blkcnt64_t; 10136: 10136: 10136: __extension__ typedef unsigned long int __fsblkcnt_t; 10136: __extension__ typedef __u_quad_t __fsblkcnt64_t; 10136: 10136: 10136: __extension__ typedef unsigned long int __fsfilcnt_t; 10136: __extension__ typedef __u_quad_t __fsfilcnt64_t; 10136: 10136: 10136: __extension__ typedef int __fsword_t; 10136: 10136: __extension__ typedef int __ssize_t; 10136: 10136: 10136: __extension__ typedef long int __syscall_slong_t; 10136: 10136: __extension__ typedef unsigned long int __syscall_ulong_t; 10136: 10136: 10136: 10136: typedef __off64_t __loff_t; 10136: typedef __quad_t *__qaddr_t; 10136: typedef char *__caddr_t; 10136: 10136: 10136: __extension__ typedef int __intptr_t; 10136: 10136: 10136: __extension__ typedef unsigned int __socklen_t; 10136: 10136: 10136: 10136: 10136: typedef int __sig_atomic_t; 10136: # 30 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: 10136: 10136: 10136: typedef __u_char u_char; 10136: typedef __u_short u_short; 10136: typedef __u_int u_int; 10136: typedef __u_long u_long; 10136: typedef __quad_t quad_t; 10136: typedef __u_quad_t u_quad_t; 10136: typedef __fsid_t fsid_t; 10136: 10136: 10136: 10136: 10136: typedef __loff_t loff_t; 10136: 10136: 10136: 10136: typedef __ino_t ino_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __ino64_t ino64_t; 10136: 10136: 10136: 10136: 10136: typedef __dev_t dev_t; 10136: 10136: 10136: 10136: 10136: typedef __gid_t gid_t; 10136: 10136: 10136: 10136: 10136: typedef __mode_t mode_t; 10136: 10136: 10136: 10136: 10136: typedef __nlink_t nlink_t; 10136: 10136: 10136: 10136: 10136: typedef __uid_t uid_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef __off_t off_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __off64_t off64_t; 10136: 10136: 10136: 10136: 10136: typedef __pid_t pid_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef __id_t id_t; 10136: 10136: 10136: 10136: 10136: typedef __ssize_t ssize_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef __daddr_t daddr_t; 10136: typedef __caddr_t caddr_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef __key_t key_t; 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __clock_t clock_t; 10136: # 128 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __clockid_t clockid_t; 10136: # 130 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/time_t.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __time_t time_t; 10136: # 131 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __timer_t timer_t; 10136: # 132 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: 10136: 10136: 10136: typedef __useconds_t useconds_t; 10136: 10136: 10136: 10136: typedef __suseconds_t suseconds_t; 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 146 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: 10136: 10136: 10136: typedef unsigned long int ulong; 10136: typedef unsigned short int ushort; 10136: typedef unsigned int uint; 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 3 4 10136: typedef __int8_t int8_t; 10136: typedef __int16_t int16_t; 10136: typedef __int32_t int32_t; 10136: typedef __int64_t int64_t; 10136: # 157 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: # 178 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 10136: typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); 10136: typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); 10136: typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); 10136: typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); 10136: 10136: typedef int register_t __attribute__ ((__mode__ (__word__))); 10136: # 194 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 10136: # 1 "/usr/include/endian.h" 1 3 4 10136: # 36 "/usr/include/endian.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 1 3 4 10136: # 37 "/usr/include/endian.h" 2 3 4 10136: # 60 "/usr/include/endian.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 1 3 4 10136: # 34 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap-16.h" 1 3 4 10136: # 35 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 2 3 4 10136: # 43 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 10136: static __inline unsigned int 10136: __bswap_32 (unsigned int __bsx) 10136: { 10136: return __builtin_bswap32 (__bsx); 10136: } 10136: # 74 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 10136: static __inline __uint64_t 10136: __bswap_64 (__uint64_t __bsx) 10136: { 10136: return __builtin_bswap64 (__bsx); 10136: } 10136: # 61 "/usr/include/endian.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 1 3 4 10136: # 32 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 3 4 10136: static __inline __uint16_t 10136: __uint16_identity (__uint16_t __x) 10136: { 10136: return __x; 10136: } 10136: 10136: static __inline __uint32_t 10136: __uint32_identity (__uint32_t __x) 10136: { 10136: return __x; 10136: } 10136: 10136: static __inline __uint64_t 10136: __uint64_identity (__uint64_t __x) 10136: { 10136: return __x; 10136: } 10136: # 62 "/usr/include/endian.h" 2 3 4 10136: # 195 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/sys/select.h" 1 3 4 10136: # 30 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/select.h" 1 3 4 10136: # 31 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 1 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h" 1 3 4 10136: 10136: 10136: 10136: 10136: typedef struct 10136: { 10136: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; 10136: } __sigset_t; 10136: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 2 3 4 10136: 10136: 10136: typedef __sigset_t sigset_t; 10136: # 34 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct timeval 10136: { 10136: __time_t tv_sec; 10136: __suseconds_t tv_usec; 10136: }; 10136: # 38 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct timespec 10136: { 10136: __time_t tv_sec; 10136: __syscall_slong_t tv_nsec; 10136: }; 10136: # 40 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 10136: # 49 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 10136: typedef long int __fd_mask; 10136: # 59 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 10136: typedef struct 10136: { 10136: 10136: 10136: 10136: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; 10136: 10136: 10136: 10136: 10136: 10136: } fd_set; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __fd_mask fd_mask; 10136: # 91 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 10136: extern "C" { 10136: # 101 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 10136: extern int select (int __nfds, fd_set *__restrict __readfds, 10136: fd_set *__restrict __writefds, 10136: fd_set *__restrict __exceptfds, 10136: struct timeval *__restrict __timeout); 10136: # 113 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 10136: extern int pselect (int __nfds, fd_set *__restrict __readfds, 10136: fd_set *__restrict __writefds, 10136: fd_set *__restrict __exceptfds, 10136: const struct timespec *__restrict __timeout, 10136: const __sigset_t *__restrict __sigmask); 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 3 4 10136: extern long int __fdelt_chk (long int __d); 10136: extern long int __fdelt_warn (long int __d) 10136: __attribute__((__warning__ ("bit outside of fd_set selected"))); 10136: # 124 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 10136: 10136: 10136: } 10136: # 198 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/sys/sysmacros.h" 1 3 4 10136: # 41 "/usr/include/arm-linux-gnueabihf/sys/sysmacros.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/sysmacros.h" 1 3 4 10136: # 42 "/usr/include/arm-linux-gnueabihf/sys/sysmacros.h" 2 3 4 10136: # 71 "/usr/include/arm-linux-gnueabihf/sys/sysmacros.h" 3 4 10136: extern "C" { 10136: 10136: extern unsigned int gnu_dev_major (__dev_t __dev) throw () __attribute__ ((__const__)); 10136: extern unsigned int gnu_dev_minor (__dev_t __dev) throw () __attribute__ ((__const__)); 10136: extern __dev_t gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw () __attribute__ ((__const__)); 10136: 10136: 10136: 10136: __extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int __attribute__ ((__leaf__)) gnu_dev_major (__dev_t __dev) throw () { unsigned int __major; __major = ((__dev & (__dev_t) 0x00000000000fff00u) >> 8); __major |= ((__dev & (__dev_t) 0xfffff00000000000u) >> 32); return __major; } 10136: __extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int __attribute__ ((__leaf__)) gnu_dev_minor (__dev_t __dev) throw () { unsigned int __minor; __minor = ((__dev & (__dev_t) 0x00000000000000ffu) >> 0); __minor |= ((__dev & (__dev_t) 0x00000ffffff00000u) >> 12); return __minor; } 10136: __extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) __dev_t __attribute__ ((__leaf__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw () { __dev_t __dev; __dev = (((__dev_t) (__major & 0x00000fffu)) << 8); __dev |= (((__dev_t) (__major & 0xfffff000u)) << 32); __dev |= (((__dev_t) (__minor & 0x000000ffu)) << 0); __dev |= (((__dev_t) (__minor & 0xffffff00u)) << 12); return __dev; } 10136: 10136: 10136: 10136: } 10136: # 206 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __blksize_t blksize_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __blkcnt_t blkcnt_t; 10136: 10136: 10136: 10136: typedef __fsblkcnt_t fsblkcnt_t; 10136: 10136: 10136: 10136: typedef __fsfilcnt_t fsfilcnt_t; 10136: # 246 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 10136: typedef __blkcnt64_t blkcnt64_t; 10136: typedef __fsblkcnt64_t fsblkcnt64_t; 10136: typedef __fsfilcnt64_t fsfilcnt64_t; 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 1 3 4 10136: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 1 3 4 10136: # 58 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 1 3 4 10136: # 41 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 3 4 10136: struct __pthread_rwlock_arch_t 10136: { 10136: unsigned int __readers; 10136: unsigned int __writers; 10136: unsigned int __wrphase_futex; 10136: unsigned int __writers_futex; 10136: unsigned int __pad3; 10136: unsigned int __pad4; 10136: # 59 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 3 4 10136: unsigned char __flags; 10136: unsigned char __shared; 10136: unsigned char __pad1; 10136: unsigned char __pad2; 10136: 10136: int __cur_writer; 10136: }; 10136: # 59 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 10136: # 69 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 10136: typedef struct __pthread_internal_slist 10136: { 10136: struct __pthread_internal_slist *__next; 10136: } __pthread_slist_t; 10136: # 99 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 10136: struct __pthread_mutex_s 10136: { 10136: int __lock ; 10136: unsigned int __count; 10136: int __owner; 10136: 10136: 10136: 10136: 10136: 10136: int __kind; 10136: 10136: 10136: 10136: 10136: 10136: 10136: unsigned int __nusers; 10136: __extension__ union 10136: { 10136: int __spins; 10136: __pthread_slist_t __list; 10136: }; 10136: 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: struct __pthread_cond_s 10136: { 10136: __extension__ union 10136: { 10136: __extension__ unsigned long long int __wseq; 10136: struct 10136: { 10136: unsigned int __low; 10136: unsigned int __high; 10136: } __wseq32; 10136: }; 10136: __extension__ union 10136: { 10136: __extension__ unsigned long long int __g1_start; 10136: struct 10136: { 10136: unsigned int __low; 10136: unsigned int __high; 10136: } __g1_start32; 10136: }; 10136: unsigned int __g_refs[2] ; 10136: unsigned int __g_size[2]; 10136: unsigned int __g1_orig_size; 10136: unsigned int __wrefs; 10136: unsigned int __g_signals[2]; 10136: }; 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 2 3 4 10136: 10136: 10136: 10136: typedef unsigned long int pthread_t; 10136: 10136: 10136: 10136: 10136: typedef union 10136: { 10136: char __size[4]; 10136: int __align; 10136: } pthread_mutexattr_t; 10136: 10136: 10136: 10136: 10136: typedef union 10136: { 10136: char __size[4]; 10136: int __align; 10136: } pthread_condattr_t; 10136: 10136: 10136: 10136: typedef unsigned int pthread_key_t; 10136: 10136: 10136: 10136: typedef int pthread_once_t; 10136: 10136: 10136: union pthread_attr_t 10136: { 10136: char __size[36]; 10136: long int __align; 10136: }; 10136: 10136: typedef union pthread_attr_t pthread_attr_t; 10136: 10136: 10136: 10136: 10136: typedef union 10136: { 10136: struct __pthread_mutex_s __data; 10136: char __size[24]; 10136: long int __align; 10136: } pthread_mutex_t; 10136: 10136: 10136: typedef union 10136: { 10136: struct __pthread_cond_s __data; 10136: char __size[48]; 10136: __extension__ long long int __align; 10136: } pthread_cond_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef union 10136: { 10136: struct __pthread_rwlock_arch_t __data; 10136: char __size[32]; 10136: long int __align; 10136: } pthread_rwlock_t; 10136: 10136: typedef union 10136: { 10136: char __size[8]; 10136: long int __align; 10136: } pthread_rwlockattr_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef volatile int pthread_spinlock_t; 10136: 10136: 10136: 10136: 10136: typedef union 10136: { 10136: char __size[20]; 10136: long int __align; 10136: } pthread_barrier_t; 10136: 10136: typedef union 10136: { 10136: char __size[4]; 10136: int __align; 10136: } pthread_barrierattr_t; 10136: # 255 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 10136: 10136: 10136: } 10136: # 280 "/usr/include/stdlib.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern long int random (void) throw (); 10136: 10136: 10136: extern void srandom (unsigned int __seed) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern char *initstate (unsigned int __seed, char *__statebuf, 10136: size_t __statelen) throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: 10136: extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct random_data 10136: { 10136: int32_t *fptr; 10136: int32_t *rptr; 10136: int32_t *state; 10136: int rand_type; 10136: int rand_deg; 10136: int rand_sep; 10136: int32_t *end_ptr; 10136: }; 10136: 10136: extern int random_r (struct random_data *__restrict __buf, 10136: int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern int srandom_r (unsigned int __seed, struct random_data *__buf) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, 10136: size_t __statelen, 10136: struct random_data *__restrict __buf) 10136: throw () __attribute__ ((__nonnull__ (2, 4))); 10136: 10136: extern int setstate_r (char *__restrict __statebuf, 10136: struct random_data *__restrict __buf) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: 10136: extern int rand (void) throw (); 10136: 10136: extern void srand (unsigned int __seed) throw (); 10136: 10136: 10136: 10136: extern int rand_r (unsigned int *__seed) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern double drand48 (void) throw (); 10136: extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern long int lrand48 (void) throw (); 10136: extern long int nrand48 (unsigned short int __xsubi[3]) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern long int mrand48 (void) throw (); 10136: extern long int jrand48 (unsigned short int __xsubi[3]) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern void srand48 (long int __seedval) throw (); 10136: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: struct drand48_data 10136: { 10136: unsigned short int __x[3]; 10136: unsigned short int __old_x[3]; 10136: unsigned short int __c; 10136: unsigned short int __init; 10136: __extension__ unsigned long long int __a; 10136: 10136: }; 10136: 10136: 10136: extern int drand48_r (struct drand48_data *__restrict __buffer, 10136: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: extern int erand48_r (unsigned short int __xsubi[3], 10136: struct drand48_data *__restrict __buffer, 10136: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int lrand48_r (struct drand48_data *__restrict __buffer, 10136: long int *__restrict __result) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: extern int nrand48_r (unsigned short int __xsubi[3], 10136: struct drand48_data *__restrict __buffer, 10136: long int *__restrict __result) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int mrand48_r (struct drand48_data *__restrict __buffer, 10136: long int *__restrict __result) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: extern int jrand48_r (unsigned short int __xsubi[3], 10136: struct drand48_data *__restrict __buffer, 10136: long int *__restrict __result) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: extern int seed48_r (unsigned short int __seed16v[3], 10136: struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern int lcong48_r (unsigned short int __param[7], 10136: struct drand48_data *__buffer) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 10136: 10136: extern void *calloc (size_t __nmemb, size_t __size) 10136: throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern void *realloc (void *__ptr, size_t __size) 10136: throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 10136: throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern void free (void *__ptr) throw (); 10136: 10136: 10136: # 1 "/usr/include/alloca.h" 1 3 4 10136: # 24 "/usr/include/alloca.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 25 "/usr/include/alloca.h" 2 3 4 10136: 10136: extern "C" { 10136: 10136: 10136: 10136: 10136: 10136: extern void *alloca (size_t __size) throw (); 10136: 10136: 10136: 10136: 10136: 10136: } 10136: # 452 "/usr/include/stdlib.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern void *aligned_alloc (size_t __alignment, size_t __size) 10136: throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern void abort (void) throw () __attribute__ ((__noreturn__)); 10136: 10136: 10136: 10136: extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern "C++" int at_quick_exit (void (*__func) (void)) 10136: throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); 10136: # 492 "/usr/include/stdlib.h" 3 4 10136: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: extern void exit (int __status) throw () __attribute__ ((__noreturn__)); 10136: 10136: 10136: 10136: 10136: 10136: extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__)); 10136: 10136: 10136: 10136: 10136: 10136: extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); 10136: 10136: 10136: 10136: 10136: extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern char *secure_getenv (const char *__name) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: extern int setenv (const char *__name, const char *__value, int __replace) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int clearenv (void) throw (); 10136: # 557 "/usr/include/stdlib.h" 3 4 10136: extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); 10136: # 570 "/usr/include/stdlib.h" 3 4 10136: extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 580 "/usr/include/stdlib.h" 3 4 10136: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 592 "/usr/include/stdlib.h" 3 4 10136: extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 602 "/usr/include/stdlib.h" 3 4 10136: extern int mkstemps64 (char *__template, int __suffixlen) 10136: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 613 "/usr/include/stdlib.h" 3 4 10136: extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 624 "/usr/include/stdlib.h" 3 4 10136: extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 634 "/usr/include/stdlib.h" 3 4 10136: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 644 "/usr/include/stdlib.h" 3 4 10136: extern int mkostemps (char *__template, int __suffixlen, int __flags) 10136: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 656 "/usr/include/stdlib.h" 3 4 10136: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) 10136: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 666 "/usr/include/stdlib.h" 3 4 10136: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern char *canonicalize_file_name (const char *__name) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 682 "/usr/include/stdlib.h" 3 4 10136: extern char *realpath (const char *__restrict __name, 10136: char *__restrict __resolved) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef int (*__compar_fn_t) (const void *, const void *); 10136: 10136: 10136: typedef __compar_fn_t comparison_fn_t; 10136: 10136: 10136: 10136: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); 10136: 10136: 10136: 10136: 10136: extern void *bsearch (const void *__key, const void *__base, 10136: size_t __nmemb, size_t __size, __compar_fn_t __compar) 10136: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 1 3 4 10136: # 19 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 3 4 10136: extern __inline __attribute__ ((__gnu_inline__)) void * 10136: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, 10136: __compar_fn_t __compar) 10136: { 10136: size_t __l, __u, __idx; 10136: const void *__p; 10136: int __comparison; 10136: 10136: __l = 0; 10136: __u = __nmemb; 10136: while (__l < __u) 10136: { 10136: __idx = (__l + __u) / 2; 10136: __p = (void *) (((const char *) __base) + (__idx * __size)); 10136: __comparison = (*__compar) (__key, __p); 10136: if (__comparison < 0) 10136: __u = __idx; 10136: else if (__comparison > 0) 10136: __l = __idx + 1; 10136: else 10136: return (void *) __p; 10136: } 10136: 10136: return __null; 10136: } 10136: # 708 "/usr/include/stdlib.h" 2 3 4 10136: 10136: 10136: 10136: 10136: extern void qsort (void *__base, size_t __nmemb, size_t __size, 10136: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); 10136: 10136: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, 10136: __compar_d_fn_t __compar, void *__arg) 10136: __attribute__ ((__nonnull__ (1, 4))); 10136: 10136: 10136: 10136: 10136: extern int abs (int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 10136: extern long int labs (long int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: __extension__ extern long long int llabs (long long int __x) 10136: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern div_t div (int __numer, int __denom) 10136: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 10136: extern ldiv_t ldiv (long int __numer, long int __denom) 10136: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: __extension__ extern lldiv_t lldiv (long long int __numer, 10136: long long int __denom) 10136: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 10136: # 754 "/usr/include/stdlib.h" 3 4 10136: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, 10136: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, 10136: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern char *gcvt (double __value, int __ndigit, char *__buf) 10136: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern char *qecvt (long double __value, int __ndigit, 10136: int *__restrict __decpt, int *__restrict __sign) 10136: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 10136: extern char *qfcvt (long double __value, int __ndigit, 10136: int *__restrict __decpt, int *__restrict __sign) 10136: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 10136: extern char *qgcvt (long double __value, int __ndigit, char *__buf) 10136: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, 10136: int *__restrict __sign, char *__restrict __buf, 10136: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); 10136: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, 10136: int *__restrict __sign, char *__restrict __buf, 10136: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); 10136: 10136: extern int qecvt_r (long double __value, int __ndigit, 10136: int *__restrict __decpt, int *__restrict __sign, 10136: char *__restrict __buf, size_t __len) 10136: throw () __attribute__ ((__nonnull__ (3, 4, 5))); 10136: extern int qfcvt_r (long double __value, int __ndigit, 10136: int *__restrict __decpt, int *__restrict __sign, 10136: char *__restrict __buf, size_t __len) 10136: throw () __attribute__ ((__nonnull__ (3, 4, 5))); 10136: 10136: 10136: 10136: 10136: 10136: extern int mblen (const char *__s, size_t __n) throw (); 10136: 10136: 10136: extern int mbtowc (wchar_t *__restrict __pwc, 10136: const char *__restrict __s, size_t __n) throw (); 10136: 10136: 10136: extern int wctomb (char *__s, wchar_t __wchar) throw (); 10136: 10136: 10136: 10136: extern size_t mbstowcs (wchar_t *__restrict __pwcs, 10136: const char *__restrict __s, size_t __n) throw (); 10136: 10136: extern size_t wcstombs (char *__restrict __s, 10136: const wchar_t *__restrict __pwcs, size_t __n) 10136: throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 839 "/usr/include/stdlib.h" 3 4 10136: extern int getsubopt (char **__restrict __optionp, 10136: char *const *__restrict __tokens, 10136: char **__restrict __valuep) 10136: throw () __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern void setkey (const char *__key) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int grantpt (int __fd) throw (); 10136: 10136: 10136: 10136: extern int unlockpt (int __fd) throw (); 10136: 10136: 10136: 10136: 10136: extern char *ptsname (int __fd) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: extern int getpt (void); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int getloadavg (double __loadavg[], int __nelem) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: # 901 "/usr/include/stdlib.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 3 4 10136: extern __inline __attribute__ ((__gnu_inline__)) double 10136: __attribute__ ((__leaf__)) atof (const char *__nptr) throw () 10136: { 10136: return strtod (__nptr, (char **) __null); 10136: } 10136: # 902 "/usr/include/stdlib.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 1 3 4 10136: # 23 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 3 4 10136: extern char *__realpath_chk (const char *__restrict __name, 10136: char *__restrict __resolved, 10136: size_t __resolvedlen) throw () __attribute__ ((__warn_unused_result__)); 10136: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) throw () __asm__ ("" "realpath") 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) throw () __asm__ ("" "__realpath_chk") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) 10136: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 10136: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) throw () 10136: { 10136: if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1) 10136: { 10136: 10136: 10136: 10136: 10136: return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1)); 10136: } 10136: 10136: return __realpath_alias (__name, __resolved); 10136: } 10136: 10136: 10136: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, 10136: size_t __nreal) throw () __attribute__ ((__nonnull__ (2))); 10136: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ptsname_r") 10136: 10136: __attribute__ ((__nonnull__ (2))); 10136: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ptsname_r_chk") 10136: 10136: 10136: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) throw () 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__buflen)) 10136: return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 10136: return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __ptsname_r_alias (__fd, __buf, __buflen); 10136: } 10136: 10136: 10136: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) 10136: throw () __attribute__ ((__warn_unused_result__)); 10136: extern int __wctomb_alias (char *__s, wchar_t __wchar) throw () __asm__ ("" "wctomb") 10136: __attribute__ ((__warn_unused_result__)); 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int 10136: __attribute__ ((__leaf__)) wctomb (char *__s, wchar_t __wchar) throw () 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) 10136: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); 10136: return __wctomb_alias (__s, __wchar); 10136: } 10136: 10136: 10136: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, 10136: const char *__restrict __src, 10136: size_t __len, size_t __dstlen) throw (); 10136: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () __asm__ ("" "mbstowcs") 10136: 10136: 10136: ; 10136: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__mbstowcs_chk") 10136: 10136: 10136: 10136: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 10136: __attribute__ ((__leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __mbstowcs_chk (__dst, __src, __len, 10136: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 10136: 10136: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 10136: return __mbstowcs_chk_warn (__dst, __src, __len, 10136: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 10136: } 10136: return __mbstowcs_alias (__dst, __src, __len); 10136: } 10136: 10136: 10136: extern size_t __wcstombs_chk (char *__restrict __dst, 10136: const wchar_t *__restrict __src, 10136: size_t __len, size_t __dstlen) throw (); 10136: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () __asm__ ("" "wcstombs") 10136: 10136: 10136: ; 10136: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__wcstombs_chk") 10136: 10136: 10136: 10136: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 10136: __attribute__ ((__leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); 10136: if (__len > __builtin_object_size (__dst, 2 > 1)) 10136: return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); 10136: } 10136: return __wcstombs_alias (__dst, __src, __len); 10136: } 10136: # 906 "/usr/include/stdlib.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: } 10136: # 76 "/usr/include/c++/8/cstdlib" 2 3 10136: 10136: # 1 "/usr/include/c++/8/bits/std_abs.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/std_abs.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/std_abs.h" 3 10136: # 46 "/usr/include/c++/8/bits/std_abs.h" 3 10136: extern "C++" 10136: { 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: using ::abs; 10136: 10136: 10136: inline long 10136: abs(long __i) { return __builtin_labs(__i); } 10136: 10136: 10136: 10136: inline long long 10136: abs(long long __x) { return __builtin_llabs (__x); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: inline constexpr double 10136: abs(double __x) 10136: { return __builtin_fabs(__x); } 10136: 10136: inline constexpr float 10136: abs(float __x) 10136: { return __builtin_fabsf(__x); } 10136: 10136: inline constexpr long double 10136: abs(long double __x) 10136: { return __builtin_fabsl(__x); } 10136: # 106 "/usr/include/c++/8/bits/std_abs.h" 3 10136: 10136: } 10136: } 10136: # 78 "/usr/include/c++/8/cstdlib" 2 3 10136: # 118 "/usr/include/c++/8/cstdlib" 3 10136: extern "C++" 10136: { 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: using ::div_t; 10136: using ::ldiv_t; 10136: 10136: using ::abort; 10136: using ::atexit; 10136: 10136: 10136: using ::at_quick_exit; 10136: 10136: 10136: using ::atof; 10136: using ::atoi; 10136: using ::atol; 10136: using ::bsearch; 10136: using ::calloc; 10136: using ::div; 10136: using ::exit; 10136: using ::free; 10136: using ::getenv; 10136: using ::labs; 10136: using ::ldiv; 10136: using ::malloc; 10136: 10136: using ::mblen; 10136: using ::mbstowcs; 10136: using ::mbtowc; 10136: 10136: using ::qsort; 10136: 10136: 10136: using ::quick_exit; 10136: 10136: 10136: using ::rand; 10136: using ::realloc; 10136: using ::srand; 10136: using ::strtod; 10136: using ::strtol; 10136: using ::strtoul; 10136: using ::system; 10136: 10136: using ::wcstombs; 10136: using ::wctomb; 10136: 10136: 10136: 10136: inline ldiv_t 10136: div(long __i, long __j) { return ldiv(__i, __j); } 10136: 10136: 10136: 10136: 10136: } 10136: # 189 "/usr/include/c++/8/cstdlib" 3 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: using ::lldiv_t; 10136: 10136: 10136: 10136: 10136: 10136: using ::_Exit; 10136: 10136: 10136: 10136: using ::llabs; 10136: 10136: inline lldiv_t 10136: div(long long __n, long long __d) 10136: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } 10136: 10136: using ::lldiv; 10136: # 221 "/usr/include/c++/8/cstdlib" 3 10136: using ::atoll; 10136: using ::strtoll; 10136: using ::strtoull; 10136: 10136: using ::strtof; 10136: using ::strtold; 10136: 10136: 10136: } 10136: 10136: namespace std 10136: { 10136: 10136: using ::__gnu_cxx::lldiv_t; 10136: 10136: using ::__gnu_cxx::_Exit; 10136: 10136: using ::__gnu_cxx::llabs; 10136: using ::__gnu_cxx::div; 10136: using ::__gnu_cxx::lldiv; 10136: 10136: using ::__gnu_cxx::atoll; 10136: using ::__gnu_cxx::strtof; 10136: using ::__gnu_cxx::strtoll; 10136: using ::__gnu_cxx::strtoull; 10136: using ::__gnu_cxx::strtold; 10136: } 10136: 10136: 10136: 10136: } 10136: # 63 "../../src/test/harness.h" 2 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/cstring" 1 3 10136: # 39 "/usr/include/c++/8/cstring" 3 10136: 10136: # 40 "/usr/include/c++/8/cstring" 3 10136: 10136: 10136: # 1 "/usr/include/string.h" 1 3 4 10136: # 26 "/usr/include/string.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 10136: # 27 "/usr/include/string.h" 2 3 4 10136: 10136: extern "C" { 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 34 "/usr/include/string.h" 2 3 4 10136: # 42 "/usr/include/string.h" 3 4 10136: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, 10136: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern void *memmove (void *__dest, const void *__src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: 10136: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, 10136: int __c, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int memcmp (const void *__s1, const void *__s2, size_t __n) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern "C++" 10136: { 10136: extern void *memchr (void *__s, int __c, size_t __n) 10136: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: extern const void *memchr (const void *__s, int __c, size_t __n) 10136: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 10136: memchr (void *__s, int __c, size_t __n) throw () 10136: { 10136: return __builtin_memchr (__s, __c, __n); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * 10136: memchr (const void *__s, int __c, size_t __n) throw () 10136: { 10136: return __builtin_memchr (__s, __c, __n); 10136: } 10136: 10136: } 10136: # 98 "/usr/include/string.h" 3 4 10136: extern "C++" void *rawmemchr (void *__s, int __c) 10136: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: extern "C++" const void *rawmemchr (const void *__s, int __c) 10136: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" void *memrchr (void *__s, int __c, size_t __n) 10136: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) 10136: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: # 121 "/usr/include/string.h" 3 4 10136: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern char *strncpy (char *__restrict __dest, 10136: const char *__restrict __src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern char *strcat (char *__restrict __dest, const char *__restrict __src) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern char *strncat (char *__restrict __dest, const char *__restrict __src, 10136: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int strcmp (const char *__s1, const char *__s2) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern int strncmp (const char *__s1, const char *__s2, size_t __n) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int strcoll (const char *__s1, const char *__s2) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern size_t strxfrm (char *__restrict __dest, 10136: const char *__restrict __src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 10136: 10136: 10136: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, 10136: locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4))); 10136: 10136: 10136: 10136: 10136: 10136: extern char *strdup (const char *__s) 10136: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *strndup (const char *__string, size_t __n) 10136: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 10136: # 203 "/usr/include/string.h" 3 4 10136: extern "C++" 10136: { 10136: extern char *strchr (char *__s, int __c) 10136: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: extern const char *strchr (const char *__s, int __c) 10136: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 10136: strchr (char *__s, int __c) throw () 10136: { 10136: return __builtin_strchr (__s, __c); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 10136: strchr (const char *__s, int __c) throw () 10136: { 10136: return __builtin_strchr (__s, __c); 10136: } 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" 10136: { 10136: extern char *strrchr (char *__s, int __c) 10136: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: extern const char *strrchr (const char *__s, int __c) 10136: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 10136: strrchr (char *__s, int __c) throw () 10136: { 10136: return __builtin_strrchr (__s, __c); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 10136: strrchr (const char *__s, int __c) throw () 10136: { 10136: return __builtin_strrchr (__s, __c); 10136: } 10136: 10136: } 10136: # 260 "/usr/include/string.h" 3 4 10136: extern "C++" char *strchrnul (char *__s, int __c) 10136: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: extern "C++" const char *strchrnul (const char *__s, int __c) 10136: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: # 272 "/usr/include/string.h" 3 4 10136: extern size_t strcspn (const char *__s, const char *__reject) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern size_t strspn (const char *__s, const char *__accept) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern "C++" 10136: { 10136: extern char *strpbrk (char *__s, const char *__accept) 10136: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: extern const char *strpbrk (const char *__s, const char *__accept) 10136: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 10136: strpbrk (char *__s, const char *__accept) throw () 10136: { 10136: return __builtin_strpbrk (__s, __accept); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 10136: strpbrk (const char *__s, const char *__accept) throw () 10136: { 10136: return __builtin_strpbrk (__s, __accept); 10136: } 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" 10136: { 10136: extern char *strstr (char *__haystack, const char *__needle) 10136: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: extern const char *strstr (const char *__haystack, const char *__needle) 10136: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 10136: strstr (char *__haystack, const char *__needle) throw () 10136: { 10136: return __builtin_strstr (__haystack, __needle); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 10136: strstr (const char *__haystack, const char *__needle) throw () 10136: { 10136: return __builtin_strstr (__haystack, __needle); 10136: } 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *strtok (char *__restrict __s, const char *__restrict __delim) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: 10136: extern char *__strtok_r (char *__restrict __s, 10136: const char *__restrict __delim, 10136: char **__restrict __save_ptr) 10136: throw () __attribute__ ((__nonnull__ (2, 3))); 10136: 10136: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, 10136: char **__restrict __save_ptr) 10136: throw () __attribute__ ((__nonnull__ (2, 3))); 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" char *strcasestr (char *__haystack, const char *__needle) 10136: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: extern "C++" const char *strcasestr (const char *__haystack, 10136: const char *__needle) 10136: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: # 368 "/usr/include/string.h" 3 4 10136: extern void *memmem (const void *__haystack, size_t __haystacklen, 10136: const void *__needle, size_t __needlelen) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); 10136: 10136: 10136: 10136: extern void *__mempcpy (void *__restrict __dest, 10136: const void *__restrict __src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: extern void *mempcpy (void *__restrict __dest, 10136: const void *__restrict __src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern size_t strlen (const char *__s) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern size_t strnlen (const char *__string, size_t __maxlen) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern char *strerror (int __errnum) throw (); 10136: # 420 "/usr/include/string.h" 3 4 10136: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) 10136: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern char *strerror_l (int __errnum, locale_t __l) throw (); 10136: 10136: 10136: 10136: # 1 "/usr/include/strings.h" 1 3 4 10136: # 23 "/usr/include/strings.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 24 "/usr/include/strings.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C" { 10136: 10136: 10136: 10136: extern int bcmp (const void *__s1, const void *__s2, size_t __n) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern void bcopy (const void *__src, void *__dest, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern "C++" 10136: { 10136: extern char *index (char *__s, int __c) 10136: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: extern const char *index (const char *__s, int __c) 10136: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 10136: index (char *__s, int __c) throw () 10136: { 10136: return __builtin_index (__s, __c); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 10136: index (const char *__s, int __c) throw () 10136: { 10136: return __builtin_index (__s, __c); 10136: } 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" 10136: { 10136: extern char *rindex (char *__s, int __c) 10136: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: extern const char *rindex (const char *__s, int __c) 10136: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 10136: rindex (char *__s, int __c) throw () 10136: { 10136: return __builtin_rindex (__s, __c); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 10136: rindex (const char *__s, int __c) throw () 10136: { 10136: return __builtin_rindex (__s, __c); 10136: } 10136: 10136: } 10136: # 104 "/usr/include/strings.h" 3 4 10136: extern int ffs (int __i) throw () __attribute__ ((__const__)); 10136: 10136: 10136: 10136: 10136: 10136: extern int ffsl (long int __l) throw () __attribute__ ((__const__)); 10136: __extension__ extern int ffsll (long long int __ll) 10136: throw () __attribute__ ((__const__)); 10136: 10136: 10136: 10136: extern int strcasecmp (const char *__s1, const char *__s2) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 10136: 10136: 10136: 10136: extern int strncasecmp_l (const char *__s1, const char *__s2, 10136: size_t __n, locale_t __loc) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); 10136: 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 1 3 4 10136: # 22 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 3 4 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 10136: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) throw () 10136: { 10136: (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 10136: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) throw () 10136: { 10136: (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0)); 10136: } 10136: # 145 "/usr/include/strings.h" 2 3 4 10136: # 432 "/usr/include/string.h" 2 3 4 10136: 10136: 10136: 10136: extern void explicit_bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern char *strsep (char **__restrict __stringp, 10136: const char *__restrict __delim) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern char *strsignal (int __sig) throw (); 10136: 10136: 10136: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern char *__stpncpy (char *__restrict __dest, 10136: const char *__restrict __src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: extern char *stpncpy (char *__restrict __dest, 10136: const char *__restrict __src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern int strverscmp (const char *__s1, const char *__s2) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" char *basename (char *__filename) 10136: throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); 10136: extern "C++" const char *basename (const char *__filename) 10136: throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); 10136: # 494 "/usr/include/string.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 1 3 4 10136: # 30 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 10136: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () 10136: 10136: { 10136: return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 10136: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) throw () 10136: { 10136: return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 10136: } 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 10136: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () 10136: 10136: { 10136: return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 10136: } 10136: # 58 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 10136: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) throw () 10136: { 10136: # 71 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 10136: return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0)); 10136: } 10136: 10136: 10136: 10136: 10136: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 10136: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) throw () 10136: { 10136: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); 10136: } 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 10136: __attribute__ ((__leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) throw () 10136: { 10136: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 10136: } 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 10136: __attribute__ ((__leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) throw () 10136: { 10136: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 10136: } 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 10136: __attribute__ ((__leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () 10136: 10136: { 10136: return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); 10136: } 10136: 10136: 10136: extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n, 10136: size_t __destlen) throw (); 10136: extern char *__stpncpy_alias (char *__dest, const char *__src, size_t __n) throw () __asm__ ("" "stpncpy") 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 10136: __attribute__ ((__leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) throw () 10136: { 10136: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 10136: && (!__builtin_constant_p (__n) || __n > __builtin_object_size (__dest, 2 > 1))) 10136: return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); 10136: return __stpncpy_alias (__dest, __src, __n); 10136: } 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 10136: __attribute__ ((__leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) throw () 10136: { 10136: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 10136: } 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 10136: __attribute__ ((__leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () 10136: 10136: { 10136: return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); 10136: } 10136: # 495 "/usr/include/string.h" 2 3 4 10136: 10136: 10136: 10136: } 10136: # 43 "/usr/include/c++/8/cstring" 2 3 10136: # 71 "/usr/include/c++/8/cstring" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: using ::memchr; 10136: using ::memcmp; 10136: using ::memcpy; 10136: using ::memmove; 10136: using ::memset; 10136: using ::strcat; 10136: using ::strcmp; 10136: using ::strcoll; 10136: using ::strcpy; 10136: using ::strcspn; 10136: using ::strerror; 10136: using ::strlen; 10136: using ::strncat; 10136: using ::strncmp; 10136: using ::strncpy; 10136: using ::strspn; 10136: using ::strtok; 10136: using ::strxfrm; 10136: using ::strchr; 10136: using ::strpbrk; 10136: using ::strrchr; 10136: using ::strstr; 10136: # 120 "/usr/include/c++/8/cstring" 3 10136: 10136: } 10136: # 69 "../../src/test/harness.h" 2 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/new" 1 3 10136: # 37 "/usr/include/c++/8/new" 3 10136: 10136: # 38 "/usr/include/c++/8/new" 3 10136: 10136: 10136: # 1 "/usr/include/c++/8/exception" 1 3 10136: # 33 "/usr/include/c++/8/exception" 3 10136: 10136: # 34 "/usr/include/c++/8/exception" 3 10136: 10136: #pragma GCC visibility push(default) 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/exception.h" 1 3 10136: # 34 "/usr/include/c++/8/bits/exception.h" 3 10136: 10136: # 35 "/usr/include/c++/8/bits/exception.h" 3 10136: 10136: #pragma GCC visibility push(default) 10136: 10136: 10136: 10136: extern "C++" { 10136: 10136: namespace std 10136: { 10136: # 60 "/usr/include/c++/8/bits/exception.h" 3 10136: class exception 10136: { 10136: public: 10136: exception() noexcept { } 10136: virtual ~exception() noexcept; 10136: 10136: 10136: 10136: virtual const char* 10136: what() const noexcept; 10136: }; 10136: 10136: } 10136: 10136: } 10136: 10136: #pragma GCC visibility pop 10136: # 39 "/usr/include/c++/8/exception" 2 3 10136: 10136: extern "C++" { 10136: 10136: namespace std 10136: { 10136: 10136: 10136: class bad_exception : public exception 10136: { 10136: public: 10136: bad_exception() noexcept { } 10136: 10136: 10136: 10136: virtual ~bad_exception() noexcept; 10136: 10136: 10136: virtual const char* 10136: what() const noexcept; 10136: }; 10136: 10136: 10136: typedef void (*terminate_handler) (); 10136: 10136: 10136: typedef void (*unexpected_handler) (); 10136: 10136: 10136: terminate_handler set_terminate(terminate_handler) noexcept; 10136: 10136: 10136: 10136: terminate_handler get_terminate() noexcept; 10136: 10136: 10136: 10136: 10136: void terminate() noexcept __attribute__ ((__noreturn__)); 10136: 10136: 10136: unexpected_handler set_unexpected(unexpected_handler) noexcept; 10136: 10136: 10136: 10136: unexpected_handler get_unexpected() noexcept; 10136: 10136: 10136: 10136: 10136: void unexpected() __attribute__ ((__noreturn__)); 10136: # 101 "/usr/include/c++/8/exception" 3 10136: 10136: bool uncaught_exception() noexcept __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: 10136: int uncaught_exceptions() noexcept __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: } 10136: 10136: namespace __gnu_cxx 10136: { 10136: 10136: # 133 "/usr/include/c++/8/exception" 3 10136: void __verbose_terminate_handler(); 10136: 10136: 10136: } 10136: 10136: } 10136: 10136: #pragma GCC visibility pop 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/exception_ptr.h" 1 3 10136: # 34 "/usr/include/c++/8/bits/exception_ptr.h" 3 10136: #pragma GCC visibility push(default) 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/exception_defines.h" 1 3 10136: # 38 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 1 3 10136: # 34 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 10136: 10136: # 35 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 10136: 10136: #pragma GCC visibility push(default) 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 149 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 3 4 10136: typedef int ptrdiff_t; 10136: # 426 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 3 4 10136: typedef struct { 10136: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); 10136: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); 10136: # 437 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 3 4 10136: } max_align_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef decltype(nullptr) nullptr_t; 10136: # 39 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 2 3 10136: # 50 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 10136: namespace std 10136: { 10136: class type_info; 10136: } 10136: 10136: namespace __cxxabiv1 10136: { 10136: struct __cxa_refcounted_exception; 10136: 10136: extern "C" 10136: { 10136: 10136: void* 10136: __cxa_allocate_exception(size_t) noexcept; 10136: 10136: 10136: __cxa_refcounted_exception* 10136: __cxa_init_primary_exception(void *object, std::type_info *tinfo, 10136: void ( *dest) (void *)) noexcept; 10136: 10136: } 10136: } 10136: 10136: 10136: 10136: #pragma GCC visibility pop 10136: # 39 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 10136: # 1 "/usr/include/c++/8/typeinfo" 1 3 10136: # 32 "/usr/include/c++/8/typeinfo" 3 10136: 10136: # 33 "/usr/include/c++/8/typeinfo" 3 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/hash_bytes.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/hash_bytes.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/hash_bytes.h" 3 10136: 10136: 10136: 10136: namespace std 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: size_t 10136: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); 10136: 10136: 10136: 10136: 10136: 10136: size_t 10136: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); 10136: 10136: 10136: } 10136: # 37 "/usr/include/c++/8/typeinfo" 2 3 10136: 10136: 10136: #pragma GCC visibility push(default) 10136: 10136: extern "C++" { 10136: 10136: namespace __cxxabiv1 10136: { 10136: class __class_type_info; 10136: } 10136: # 80 "/usr/include/c++/8/typeinfo" 3 10136: namespace std 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: class type_info 10136: { 10136: public: 10136: 10136: 10136: 10136: 10136: virtual ~type_info(); 10136: 10136: 10136: 10136: const char* name() const noexcept 10136: { return __name[0] == '*' ? __name + 1 : __name; } 10136: 10136: 10136: 10136: 10136: 10136: bool before(const type_info& __arg) const noexcept; 10136: bool operator==(const type_info& __arg) const noexcept; 10136: # 136 "/usr/include/c++/8/typeinfo" 3 10136: bool operator!=(const type_info& __arg) const noexcept 10136: { return !operator==(__arg); } 10136: 10136: 10136: size_t hash_code() const noexcept 10136: { 10136: 10136: return _Hash_bytes(name(), __builtin_strlen(name()), 10136: static_cast(0xc70f6907UL)); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: 10136: virtual bool __is_pointer_p() const; 10136: 10136: 10136: virtual bool __is_function_p() const; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, 10136: unsigned __outer) const; 10136: 10136: 10136: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, 10136: void **__obj_ptr) const; 10136: 10136: protected: 10136: const char *__name; 10136: 10136: explicit type_info(const char *__n): __name(__n) { } 10136: 10136: private: 10136: 10136: type_info& operator=(const type_info&); 10136: type_info(const type_info&); 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: class bad_cast : public exception 10136: { 10136: public: 10136: bad_cast() noexcept { } 10136: 10136: 10136: 10136: virtual ~bad_cast() noexcept; 10136: 10136: 10136: virtual const char* what() const noexcept; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: class bad_typeid : public exception 10136: { 10136: public: 10136: bad_typeid () noexcept { } 10136: 10136: 10136: 10136: virtual ~bad_typeid() noexcept; 10136: 10136: 10136: virtual const char* what() const noexcept; 10136: }; 10136: } 10136: 10136: } 10136: 10136: #pragma GCC visibility pop 10136: # 40 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 10136: # 1 "/usr/include/c++/8/new" 1 3 10136: # 41 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 10136: 10136: extern "C++" { 10136: 10136: namespace std 10136: { 10136: class type_info; 10136: 10136: 10136: 10136: 10136: 10136: namespace __exception_ptr 10136: { 10136: class exception_ptr; 10136: } 10136: 10136: using __exception_ptr::exception_ptr; 10136: 10136: 10136: 10136: 10136: 10136: exception_ptr current_exception() noexcept; 10136: 10136: template 10136: exception_ptr make_exception_ptr(_Ex) noexcept; 10136: 10136: 10136: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); 10136: 10136: namespace __exception_ptr 10136: { 10136: using std::rethrow_exception; 10136: 10136: 10136: 10136: 10136: 10136: class exception_ptr 10136: { 10136: void* _M_exception_object; 10136: 10136: explicit exception_ptr(void* __e) noexcept; 10136: 10136: void _M_addref() noexcept; 10136: void _M_release() noexcept; 10136: 10136: void *_M_get() const noexcept __attribute__ ((__pure__)); 10136: 10136: friend exception_ptr std::current_exception() noexcept; 10136: friend void std::rethrow_exception(exception_ptr); 10136: template 10136: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; 10136: 10136: public: 10136: exception_ptr() noexcept; 10136: 10136: exception_ptr(const exception_ptr&) noexcept; 10136: 10136: 10136: exception_ptr(nullptr_t) noexcept 10136: : _M_exception_object(0) 10136: { } 10136: 10136: exception_ptr(exception_ptr&& __o) noexcept 10136: : _M_exception_object(__o._M_exception_object) 10136: { __o._M_exception_object = 0; } 10136: # 117 "/usr/include/c++/8/bits/exception_ptr.h" 3 10136: exception_ptr& 10136: operator=(const exception_ptr&) noexcept; 10136: 10136: 10136: exception_ptr& 10136: operator=(exception_ptr&& __o) noexcept 10136: { 10136: exception_ptr(static_cast(__o)).swap(*this); 10136: return *this; 10136: } 10136: 10136: 10136: ~exception_ptr() noexcept; 10136: 10136: void 10136: swap(exception_ptr&) noexcept; 10136: # 144 "/usr/include/c++/8/bits/exception_ptr.h" 3 10136: explicit operator bool() const 10136: { return _M_exception_object; } 10136: 10136: 10136: friend bool 10136: operator==(const exception_ptr&, const exception_ptr&) 10136: noexcept __attribute__ ((__pure__)); 10136: 10136: const class std::type_info* 10136: __cxa_exception_type() const noexcept 10136: __attribute__ ((__pure__)); 10136: }; 10136: 10136: bool 10136: operator==(const exception_ptr&, const exception_ptr&) 10136: noexcept __attribute__ ((__pure__)); 10136: 10136: bool 10136: operator!=(const exception_ptr&, const exception_ptr&) 10136: noexcept __attribute__ ((__pure__)); 10136: 10136: inline void 10136: swap(exception_ptr& __lhs, exception_ptr& __rhs) 10136: { __lhs.swap(__rhs); } 10136: 10136: template 10136: inline void 10136: __dest_thunk(void* __x) 10136: { static_cast<_Ex*>(__x)->~_Ex(); } 10136: 10136: } 10136: 10136: 10136: template 10136: exception_ptr 10136: make_exception_ptr(_Ex __ex) noexcept 10136: { 10136: 10136: try 10136: { 10136: 10136: void *__e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); 10136: (void)__cxxabiv1::__cxa_init_primary_exception( 10136: __e, const_cast(&typeid(__ex)), 10136: __exception_ptr::__dest_thunk<_Ex>); 10136: ::new (__e) _Ex(__ex); 10136: return exception_ptr(__e); 10136: 10136: 10136: 10136: } 10136: catch(...) 10136: { 10136: return current_exception(); 10136: } 10136: 10136: 10136: 10136: } 10136: 10136: 10136: } 10136: 10136: } 10136: 10136: #pragma GCC visibility pop 10136: # 144 "/usr/include/c++/8/exception" 2 3 10136: # 1 "/usr/include/c++/8/bits/nested_exception.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/nested_exception.h" 3 10136: #pragma GCC visibility push(default) 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/move.h" 1 3 10136: # 34 "/usr/include/c++/8/bits/move.h" 3 10136: # 1 "/usr/include/c++/8/bits/concept_check.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/concept_check.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/concept_check.h" 3 10136: # 35 "/usr/include/c++/8/bits/move.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline constexpr _Tp* 10136: __addressof(_Tp& __r) noexcept 10136: { return __builtin_addressof(__r); } 10136: 10136: 10136: 10136: 10136: } 10136: 10136: # 1 "/usr/include/c++/8/type_traits" 1 3 10136: # 32 "/usr/include/c++/8/type_traits" 3 10136: 10136: # 33 "/usr/include/c++/8/type_traits" 3 10136: # 42 "/usr/include/c++/8/type_traits" 3 10136: namespace std 10136: { 10136: typedef short unsigned int uint_least16_t; 10136: typedef unsigned int uint_least32_t; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 68 "/usr/include/c++/8/type_traits" 3 10136: template 10136: struct integral_constant 10136: { 10136: static constexpr _Tp value = __v; 10136: typedef _Tp value_type; 10136: typedef integral_constant<_Tp, __v> type; 10136: constexpr operator value_type() const noexcept { return value; } 10136: 10136: 10136: 10136: 10136: constexpr value_type operator()() const noexcept { return value; } 10136: 10136: }; 10136: 10136: template 10136: constexpr _Tp integral_constant<_Tp, __v>::value; 10136: 10136: 10136: typedef integral_constant true_type; 10136: 10136: 10136: typedef integral_constant false_type; 10136: 10136: template 10136: using __bool_constant = integral_constant; 10136: # 103 "/usr/include/c++/8/type_traits" 3 10136: template 10136: struct conditional; 10136: 10136: template 10136: struct __or_; 10136: 10136: template<> 10136: struct __or_<> 10136: : public false_type 10136: { }; 10136: 10136: template 10136: struct __or_<_B1> 10136: : public _B1 10136: { }; 10136: 10136: template 10136: struct __or_<_B1, _B2> 10136: : public conditional<_B1::value, _B1, _B2>::type 10136: { }; 10136: 10136: template 10136: struct __or_<_B1, _B2, _B3, _Bn...> 10136: : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type 10136: { }; 10136: 10136: template 10136: struct __and_; 10136: 10136: template<> 10136: struct __and_<> 10136: : public true_type 10136: { }; 10136: 10136: template 10136: struct __and_<_B1> 10136: : public _B1 10136: { }; 10136: 10136: template 10136: struct __and_<_B1, _B2> 10136: : public conditional<_B1::value, _B2, _B1>::type 10136: { }; 10136: 10136: template 10136: struct __and_<_B1, _B2, _B3, _Bn...> 10136: : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type 10136: { }; 10136: 10136: template 10136: struct __not_ 10136: : public __bool_constant 10136: { }; 10136: # 192 "/usr/include/c++/8/type_traits" 3 10136: template 10136: struct __success_type 10136: { typedef _Tp type; }; 10136: 10136: struct __failure_type 10136: { }; 10136: 10136: 10136: 10136: template 10136: struct remove_cv; 10136: 10136: template 10136: struct __is_void_helper 10136: : public false_type { }; 10136: 10136: template<> 10136: struct __is_void_helper 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_void 10136: : public __is_void_helper::type>::type 10136: { }; 10136: 10136: template 10136: struct __is_integral_helper 10136: : public false_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_integral_helper 10136: : public true_type { }; 10136: # 324 "/usr/include/c++/8/type_traits" 3 10136: template 10136: struct is_integral 10136: : public __is_integral_helper::type>::type 10136: { }; 10136: 10136: template 10136: struct __is_floating_point_helper 10136: : public false_type { }; 10136: 10136: template<> 10136: struct __is_floating_point_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_floating_point_helper 10136: : public true_type { }; 10136: 10136: template<> 10136: struct __is_floating_point_helper 10136: : public true_type { }; 10136: # 352 "/usr/include/c++/8/type_traits" 3 10136: template 10136: struct is_floating_point 10136: : public __is_floating_point_helper::type>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_array 10136: : public false_type { }; 10136: 10136: template 10136: struct is_array<_Tp[_Size]> 10136: : public true_type { }; 10136: 10136: template 10136: struct is_array<_Tp[]> 10136: : public true_type { }; 10136: 10136: template 10136: struct __is_pointer_helper 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_pointer_helper<_Tp*> 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_pointer 10136: : public __is_pointer_helper::type>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_lvalue_reference 10136: : public false_type { }; 10136: 10136: template 10136: struct is_lvalue_reference<_Tp&> 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_rvalue_reference 10136: : public false_type { }; 10136: 10136: template 10136: struct is_rvalue_reference<_Tp&&> 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function; 10136: 10136: template 10136: struct __is_member_object_pointer_helper 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_member_object_pointer_helper<_Tp _Cp::*> 10136: : public integral_constant::value> { }; 10136: 10136: 10136: template 10136: struct is_member_object_pointer 10136: : public __is_member_object_pointer_helper< 10136: typename remove_cv<_Tp>::type>::type 10136: { }; 10136: 10136: template 10136: struct __is_member_function_pointer_helper 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_member_function_pointer_helper<_Tp _Cp::*> 10136: : public integral_constant::value> { }; 10136: 10136: 10136: template 10136: struct is_member_function_pointer 10136: : public __is_member_function_pointer_helper< 10136: typename remove_cv<_Tp>::type>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_enum 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_union 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_class 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_function 10136: : public false_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) & > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) && > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) & > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) && > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) const > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) const & > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) const && > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) const > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) const & > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) const && > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) volatile > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) volatile & > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) volatile && > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) volatile > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) volatile & > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) volatile && > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) const volatile > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) const volatile & > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes...) const volatile && > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) const volatile > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) const volatile & > 10136: : public true_type { }; 10136: 10136: template 10136: struct is_function<_Res(_ArgTypes......) const volatile && > 10136: : public true_type { }; 10136: 10136: 10136: 10136: template 10136: struct __is_null_pointer_helper 10136: : public false_type { }; 10136: 10136: template<> 10136: struct __is_null_pointer_helper 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_null_pointer 10136: : public __is_null_pointer_helper::type>::type 10136: { }; 10136: 10136: 10136: template 10136: struct __is_nullptr_t 10136: : public is_null_pointer<_Tp> 10136: { }; 10136: 10136: 10136: 10136: 10136: template 10136: struct is_reference 10136: : public __or_, 10136: is_rvalue_reference<_Tp>>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_arithmetic 10136: : public __or_, is_floating_point<_Tp>>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_fundamental 10136: : public __or_, is_void<_Tp>, 10136: is_null_pointer<_Tp>>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_object 10136: : public __not_<__or_, is_reference<_Tp>, 10136: is_void<_Tp>>>::type 10136: { }; 10136: 10136: template 10136: struct is_member_pointer; 10136: 10136: 10136: template 10136: struct is_scalar 10136: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, 10136: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_compound 10136: : public integral_constant::value> { }; 10136: 10136: template 10136: struct __is_member_pointer_helper 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_member_pointer_helper<_Tp _Cp::*> 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_member_pointer 10136: : public __is_member_pointer_helper::type>::type 10136: { }; 10136: 10136: 10136: 10136: template 10136: struct __is_referenceable 10136: : public __or_, is_reference<_Tp>>::type 10136: { }; 10136: 10136: template 10136: struct __is_referenceable<_Res(_Args...) > 10136: : public true_type 10136: { }; 10136: 10136: template 10136: struct __is_referenceable<_Res(_Args......) > 10136: : public true_type 10136: { }; 10136: 10136: 10136: 10136: 10136: template 10136: struct is_const 10136: : public false_type { }; 10136: 10136: template 10136: struct is_const<_Tp const> 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_volatile 10136: : public false_type { }; 10136: 10136: template 10136: struct is_volatile<_Tp volatile> 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_trivial 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_trivially_copyable 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_standard_layout 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: 10136: template 10136: struct is_pod 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_literal_type 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_empty 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_polymorphic 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: 10136: 10136: template 10136: struct is_final 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: 10136: template 10136: struct is_abstract 10136: : public integral_constant 10136: { }; 10136: 10136: template::value> 10136: struct __is_signed_helper 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_signed_helper<_Tp, true> 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: template 10136: struct is_signed 10136: : public __is_signed_helper<_Tp>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_unsigned 10136: : public __and_, __not_>> 10136: { }; 10136: # 759 "/usr/include/c++/8/type_traits" 3 10136: template 10136: _Up 10136: __declval(int); 10136: 10136: template 10136: _Tp 10136: __declval(long); 10136: 10136: template 10136: auto declval() noexcept -> decltype(__declval<_Tp>(0)); 10136: 10136: template 10136: struct extent; 10136: 10136: template 10136: struct remove_all_extents; 10136: 10136: template 10136: struct __is_array_known_bounds 10136: : public integral_constant::value > 0)> 10136: { }; 10136: 10136: template 10136: struct __is_array_unknown_bounds 10136: : public __and_, __not_>> 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct __do_is_destructible_impl 10136: { 10136: template().~_Tp())> 10136: static true_type __test(int); 10136: 10136: template 10136: static false_type __test(...); 10136: }; 10136: 10136: template 10136: struct __is_destructible_impl 10136: : public __do_is_destructible_impl 10136: { 10136: typedef decltype(__test<_Tp>(0)) type; 10136: }; 10136: 10136: template, 10136: __is_array_unknown_bounds<_Tp>, 10136: is_function<_Tp>>::value, 10136: bool = __or_, is_scalar<_Tp>>::value> 10136: struct __is_destructible_safe; 10136: 10136: template 10136: struct __is_destructible_safe<_Tp, false, false> 10136: : public __is_destructible_impl::type>::type 10136: { }; 10136: 10136: template 10136: struct __is_destructible_safe<_Tp, true, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_destructible_safe<_Tp, false, true> 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_destructible 10136: : public __is_destructible_safe<_Tp>::type 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: struct __do_is_nt_destructible_impl 10136: { 10136: template 10136: static integral_constant().~_Tp())> 10136: __test(int); 10136: 10136: template 10136: static false_type __test(...); 10136: }; 10136: 10136: template 10136: struct __is_nt_destructible_impl 10136: : public __do_is_nt_destructible_impl 10136: { 10136: typedef decltype(__test<_Tp>(0)) type; 10136: }; 10136: 10136: template, 10136: __is_array_unknown_bounds<_Tp>, 10136: is_function<_Tp>>::value, 10136: bool = __or_, is_scalar<_Tp>>::value> 10136: struct __is_nt_destructible_safe; 10136: 10136: template 10136: struct __is_nt_destructible_safe<_Tp, false, false> 10136: : public __is_nt_destructible_impl::type>::type 10136: { }; 10136: 10136: template 10136: struct __is_nt_destructible_safe<_Tp, true, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_nt_destructible_safe<_Tp, false, true> 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_nothrow_destructible 10136: : public __is_nt_destructible_safe<_Tp>::type 10136: { }; 10136: 10136: struct __do_is_default_constructible_impl 10136: { 10136: template 10136: static true_type __test(int); 10136: 10136: template 10136: static false_type __test(...); 10136: }; 10136: 10136: template 10136: struct __is_default_constructible_impl 10136: : public __do_is_default_constructible_impl 10136: { 10136: typedef decltype(__test<_Tp>(0)) type; 10136: }; 10136: 10136: template 10136: struct __is_default_constructible_atom 10136: : public __and_<__not_>, 10136: __is_default_constructible_impl<_Tp>> 10136: { }; 10136: 10136: template::value> 10136: struct __is_default_constructible_safe; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_default_constructible_safe<_Tp, true> 10136: : public __and_<__is_array_known_bounds<_Tp>, 10136: __is_default_constructible_atom::type>> 10136: { }; 10136: 10136: template 10136: struct __is_default_constructible_safe<_Tp, false> 10136: : public __is_default_constructible_atom<_Tp>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_default_constructible 10136: : public __is_default_constructible_safe<_Tp>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_constructible 10136: : public __bool_constant<__is_constructible(_Tp, _Args...)> 10136: { }; 10136: 10136: template::value> 10136: struct __is_copy_constructible_impl; 10136: 10136: template 10136: struct __is_copy_constructible_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_copy_constructible_impl<_Tp, true> 10136: : public is_constructible<_Tp, const _Tp&> 10136: { }; 10136: 10136: 10136: template 10136: struct is_copy_constructible 10136: : public __is_copy_constructible_impl<_Tp> 10136: { }; 10136: 10136: template::value> 10136: struct __is_move_constructible_impl; 10136: 10136: template 10136: struct __is_move_constructible_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_move_constructible_impl<_Tp, true> 10136: : public is_constructible<_Tp, _Tp&&> 10136: { }; 10136: 10136: 10136: template 10136: struct is_move_constructible 10136: : public __is_move_constructible_impl<_Tp> 10136: { }; 10136: 10136: template 10136: struct __is_nt_default_constructible_atom 10136: : public integral_constant 10136: { }; 10136: 10136: template::value> 10136: struct __is_nt_default_constructible_impl; 10136: 10136: template 10136: struct __is_nt_default_constructible_impl<_Tp, true> 10136: : public __and_<__is_array_known_bounds<_Tp>, 10136: __is_nt_default_constructible_atom::type>> 10136: { }; 10136: 10136: template 10136: struct __is_nt_default_constructible_impl<_Tp, false> 10136: : public __is_nt_default_constructible_atom<_Tp> 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_default_constructible 10136: : public __and_, 10136: __is_nt_default_constructible_impl<_Tp>> 10136: { }; 10136: 10136: template 10136: struct __is_nt_constructible_impl 10136: : public integral_constant()...))> 10136: { }; 10136: 10136: template 10136: struct __is_nt_constructible_impl<_Tp, _Arg> 10136: : public integral_constant(declval<_Arg>()))> 10136: { }; 10136: 10136: template 10136: struct __is_nt_constructible_impl<_Tp> 10136: : public is_nothrow_default_constructible<_Tp> 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_constructible 10136: : public __and_, 10136: __is_nt_constructible_impl<_Tp, _Args...>> 10136: { }; 10136: 10136: template::value> 10136: struct __is_nothrow_copy_constructible_impl; 10136: 10136: template 10136: struct __is_nothrow_copy_constructible_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_nothrow_copy_constructible_impl<_Tp, true> 10136: : public is_nothrow_constructible<_Tp, const _Tp&> 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_copy_constructible 10136: : public __is_nothrow_copy_constructible_impl<_Tp> 10136: { }; 10136: 10136: template::value> 10136: struct __is_nothrow_move_constructible_impl; 10136: 10136: template 10136: struct __is_nothrow_move_constructible_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_nothrow_move_constructible_impl<_Tp, true> 10136: : public is_nothrow_constructible<_Tp, _Tp&&> 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_move_constructible 10136: : public __is_nothrow_move_constructible_impl<_Tp> 10136: { }; 10136: 10136: 10136: template 10136: struct is_assignable 10136: : public __bool_constant<__is_assignable(_Tp, _Up)> 10136: { }; 10136: 10136: template::value> 10136: struct __is_copy_assignable_impl; 10136: 10136: template 10136: struct __is_copy_assignable_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_copy_assignable_impl<_Tp, true> 10136: : public is_assignable<_Tp&, const _Tp&> 10136: { }; 10136: 10136: 10136: template 10136: struct is_copy_assignable 10136: : public __is_copy_assignable_impl<_Tp> 10136: { }; 10136: 10136: template::value> 10136: struct __is_move_assignable_impl; 10136: 10136: template 10136: struct __is_move_assignable_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_move_assignable_impl<_Tp, true> 10136: : public is_assignable<_Tp&, _Tp&&> 10136: { }; 10136: 10136: 10136: template 10136: struct is_move_assignable 10136: : public __is_move_assignable_impl<_Tp> 10136: { }; 10136: 10136: template 10136: struct __is_nt_assignable_impl 10136: : public integral_constant() = declval<_Up>())> 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_assignable 10136: : public __and_, 10136: __is_nt_assignable_impl<_Tp, _Up>> 10136: { }; 10136: 10136: template::value> 10136: struct __is_nt_copy_assignable_impl; 10136: 10136: template 10136: struct __is_nt_copy_assignable_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_nt_copy_assignable_impl<_Tp, true> 10136: : public is_nothrow_assignable<_Tp&, const _Tp&> 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_copy_assignable 10136: : public __is_nt_copy_assignable_impl<_Tp> 10136: { }; 10136: 10136: template::value> 10136: struct __is_nt_move_assignable_impl; 10136: 10136: template 10136: struct __is_nt_move_assignable_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_nt_move_assignable_impl<_Tp, true> 10136: : public is_nothrow_assignable<_Tp&, _Tp&&> 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_move_assignable 10136: : public __is_nt_move_assignable_impl<_Tp> 10136: { }; 10136: 10136: 10136: template 10136: struct is_trivially_constructible 10136: : public __bool_constant<__is_trivially_constructible(_Tp, _Args...)> 10136: { }; 10136: 10136: 10136: template 10136: struct is_trivially_default_constructible 10136: : public is_trivially_constructible<_Tp>::type 10136: { }; 10136: 10136: struct __do_is_implicitly_default_constructible_impl 10136: { 10136: template 10136: static void __helper(const _Tp&); 10136: 10136: template 10136: static true_type __test(const _Tp&, 10136: decltype(__helper({}))* = 0); 10136: 10136: static false_type __test(...); 10136: }; 10136: 10136: template 10136: struct __is_implicitly_default_constructible_impl 10136: : public __do_is_implicitly_default_constructible_impl 10136: { 10136: typedef decltype(__test(declval<_Tp>())) type; 10136: }; 10136: 10136: template 10136: struct __is_implicitly_default_constructible_safe 10136: : public __is_implicitly_default_constructible_impl<_Tp>::type 10136: { }; 10136: 10136: template 10136: struct __is_implicitly_default_constructible 10136: : public __and_, 10136: __is_implicitly_default_constructible_safe<_Tp>> 10136: { }; 10136: 10136: 10136: 10136: template::value> 10136: struct __is_trivially_copy_constructible_impl; 10136: 10136: template 10136: struct __is_trivially_copy_constructible_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_trivially_copy_constructible_impl<_Tp, true> 10136: : public __and_, 10136: integral_constant> 10136: { }; 10136: 10136: template 10136: struct is_trivially_copy_constructible 10136: : public __is_trivially_copy_constructible_impl<_Tp> 10136: { }; 10136: 10136: 10136: 10136: template::value> 10136: struct __is_trivially_move_constructible_impl; 10136: 10136: template 10136: struct __is_trivially_move_constructible_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_trivially_move_constructible_impl<_Tp, true> 10136: : public __and_, 10136: integral_constant> 10136: { }; 10136: 10136: template 10136: struct is_trivially_move_constructible 10136: : public __is_trivially_move_constructible_impl<_Tp> 10136: { }; 10136: 10136: 10136: template 10136: struct is_trivially_assignable 10136: : public __bool_constant<__is_trivially_assignable(_Tp, _Up)> 10136: { }; 10136: 10136: 10136: 10136: template::value> 10136: struct __is_trivially_copy_assignable_impl; 10136: 10136: template 10136: struct __is_trivially_copy_assignable_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_trivially_copy_assignable_impl<_Tp, true> 10136: : public __and_, 10136: integral_constant> 10136: { }; 10136: 10136: template 10136: struct is_trivially_copy_assignable 10136: : public __is_trivially_copy_assignable_impl<_Tp> 10136: { }; 10136: 10136: 10136: 10136: template::value> 10136: struct __is_trivially_move_assignable_impl; 10136: 10136: template 10136: struct __is_trivially_move_assignable_impl<_Tp, false> 10136: : public false_type { }; 10136: 10136: template 10136: struct __is_trivially_move_assignable_impl<_Tp, true> 10136: : public __and_, 10136: integral_constant> 10136: { }; 10136: 10136: template 10136: struct is_trivially_move_assignable 10136: : public __is_trivially_move_assignable_impl<_Tp> 10136: { }; 10136: 10136: 10136: template 10136: struct is_trivially_destructible 10136: : public __and_, integral_constant> 10136: { }; 10136: 10136: 10136: 10136: template 10136: struct has_virtual_destructor 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct alignment_of 10136: : public integral_constant { }; 10136: 10136: 10136: template 10136: struct rank 10136: : public integral_constant { }; 10136: 10136: template 10136: struct rank<_Tp[_Size]> 10136: : public integral_constant::value> { }; 10136: 10136: template 10136: struct rank<_Tp[]> 10136: : public integral_constant::value> { }; 10136: 10136: 10136: template 10136: struct extent 10136: : public integral_constant { }; 10136: 10136: template 10136: struct extent<_Tp[_Size], _Uint> 10136: : public integral_constant::value> 10136: { }; 10136: 10136: template 10136: struct extent<_Tp[], _Uint> 10136: : public integral_constant::value> 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_same 10136: : public false_type { }; 10136: 10136: template 10136: struct is_same<_Tp, _Tp> 10136: : public true_type { }; 10136: 10136: 10136: template 10136: struct is_base_of 10136: : public integral_constant 10136: { }; 10136: 10136: template, is_function<_To>, 10136: is_array<_To>>::value> 10136: struct __is_convertible_helper 10136: { typedef typename is_void<_To>::type type; }; 10136: 10136: template 10136: class __is_convertible_helper<_From, _To, false> 10136: { 10136: template 10136: static void __test_aux(_To1); 10136: 10136: template(std::declval<_From1>()))> 10136: static true_type 10136: __test(int); 10136: 10136: template 10136: static false_type 10136: __test(...); 10136: 10136: public: 10136: typedef decltype(__test<_From, _To>(0)) type; 10136: }; 10136: 10136: 10136: 10136: template 10136: struct is_convertible 10136: : public __is_convertible_helper<_From, _To>::type 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct remove_const 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct remove_const<_Tp const> 10136: { typedef _Tp type; }; 10136: 10136: 10136: template 10136: struct remove_volatile 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct remove_volatile<_Tp volatile> 10136: { typedef _Tp type; }; 10136: 10136: 10136: template 10136: struct remove_cv 10136: { 10136: typedef typename 10136: remove_const::type>::type type; 10136: }; 10136: 10136: 10136: template 10136: struct add_const 10136: { typedef _Tp const type; }; 10136: 10136: 10136: template 10136: struct add_volatile 10136: { typedef _Tp volatile type; }; 10136: 10136: 10136: template 10136: struct add_cv 10136: { 10136: typedef typename 10136: add_const::type>::type type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: using remove_const_t = typename remove_const<_Tp>::type; 10136: 10136: 10136: template 10136: using remove_volatile_t = typename remove_volatile<_Tp>::type; 10136: 10136: 10136: template 10136: using remove_cv_t = typename remove_cv<_Tp>::type; 10136: 10136: 10136: template 10136: using add_const_t = typename add_const<_Tp>::type; 10136: 10136: 10136: template 10136: using add_volatile_t = typename add_volatile<_Tp>::type; 10136: 10136: 10136: template 10136: using add_cv_t = typename add_cv<_Tp>::type; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct remove_reference 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct remove_reference<_Tp&> 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct remove_reference<_Tp&&> 10136: { typedef _Tp type; }; 10136: 10136: template::value> 10136: struct __add_lvalue_reference_helper 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct __add_lvalue_reference_helper<_Tp, true> 10136: { typedef _Tp& type; }; 10136: 10136: 10136: template 10136: struct add_lvalue_reference 10136: : public __add_lvalue_reference_helper<_Tp> 10136: { }; 10136: 10136: template::value> 10136: struct __add_rvalue_reference_helper 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct __add_rvalue_reference_helper<_Tp, true> 10136: { typedef _Tp&& type; }; 10136: 10136: 10136: template 10136: struct add_rvalue_reference 10136: : public __add_rvalue_reference_helper<_Tp> 10136: { }; 10136: 10136: 10136: 10136: template 10136: using remove_reference_t = typename remove_reference<_Tp>::type; 10136: 10136: 10136: template 10136: using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; 10136: 10136: 10136: template 10136: using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __cv_selector; 10136: 10136: template 10136: struct __cv_selector<_Unqualified, false, false> 10136: { typedef _Unqualified __type; }; 10136: 10136: template 10136: struct __cv_selector<_Unqualified, false, true> 10136: { typedef volatile _Unqualified __type; }; 10136: 10136: template 10136: struct __cv_selector<_Unqualified, true, false> 10136: { typedef const _Unqualified __type; }; 10136: 10136: template 10136: struct __cv_selector<_Unqualified, true, true> 10136: { typedef const volatile _Unqualified __type; }; 10136: 10136: template::value, 10136: bool _IsVol = is_volatile<_Qualified>::value> 10136: class __match_cv_qualifiers 10136: { 10136: typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; 10136: 10136: public: 10136: typedef typename __match::__type __type; 10136: }; 10136: 10136: 10136: template 10136: struct __make_unsigned 10136: { typedef _Tp __type; }; 10136: 10136: template<> 10136: struct __make_unsigned 10136: { typedef unsigned char __type; }; 10136: 10136: template<> 10136: struct __make_unsigned 10136: { typedef unsigned char __type; }; 10136: 10136: template<> 10136: struct __make_unsigned 10136: { typedef unsigned short __type; }; 10136: 10136: template<> 10136: struct __make_unsigned 10136: { typedef unsigned int __type; }; 10136: 10136: template<> 10136: struct __make_unsigned 10136: { typedef unsigned long __type; }; 10136: 10136: template<> 10136: struct __make_unsigned 10136: { typedef unsigned long long __type; }; 10136: # 1607 "/usr/include/c++/8/type_traits" 3 10136: template::value, 10136: bool _IsEnum = is_enum<_Tp>::value> 10136: class __make_unsigned_selector; 10136: 10136: template 10136: class __make_unsigned_selector<_Tp, true, false> 10136: { 10136: typedef __make_unsigned::type> __unsignedt; 10136: typedef typename __unsignedt::__type __unsigned_type; 10136: typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; 10136: 10136: public: 10136: typedef typename __cv_unsigned::__type __type; 10136: }; 10136: 10136: template 10136: class __make_unsigned_selector<_Tp, false, true> 10136: { 10136: 10136: typedef unsigned char __smallest; 10136: static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest); 10136: static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned short); 10136: static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned int); 10136: static const bool __b3 = sizeof(_Tp) <= sizeof(unsigned long); 10136: typedef conditional<__b3, unsigned long, unsigned long long> __cond3; 10136: typedef typename __cond3::type __cond3_type; 10136: typedef conditional<__b2, unsigned int, __cond3_type> __cond2; 10136: typedef typename __cond2::type __cond2_type; 10136: typedef conditional<__b1, unsigned short, __cond2_type> __cond1; 10136: typedef typename __cond1::type __cond1_type; 10136: 10136: typedef typename conditional<__b0, __smallest, __cond1_type>::type 10136: __unsigned_type; 10136: typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; 10136: 10136: public: 10136: typedef typename __cv_unsigned::__type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct make_unsigned 10136: { typedef typename __make_unsigned_selector<_Tp>::__type type; }; 10136: 10136: 10136: template<> 10136: struct make_unsigned; 10136: 10136: 10136: 10136: template 10136: struct __make_signed 10136: { typedef _Tp __type; }; 10136: 10136: template<> 10136: struct __make_signed 10136: { typedef signed char __type; }; 10136: 10136: template<> 10136: struct __make_signed 10136: { typedef signed char __type; }; 10136: 10136: template<> 10136: struct __make_signed 10136: { typedef signed short __type; }; 10136: 10136: template<> 10136: struct __make_signed 10136: { typedef signed int __type; }; 10136: 10136: template<> 10136: struct __make_signed 10136: { typedef signed long __type; }; 10136: 10136: template<> 10136: struct __make_signed 10136: { typedef signed long long __type; }; 10136: 10136: 10136: template<> 10136: struct __make_signed : __make_signed 10136: { }; 10136: 10136: 10136: 10136: template<> 10136: struct __make_signed : __make_signed 10136: { }; 10136: template<> 10136: struct __make_signed : __make_signed 10136: { }; 10136: # 1726 "/usr/include/c++/8/type_traits" 3 10136: template::value, 10136: bool _IsEnum = is_enum<_Tp>::value> 10136: class __make_signed_selector; 10136: 10136: template 10136: class __make_signed_selector<_Tp, true, false> 10136: { 10136: typedef __make_signed::type> __signedt; 10136: typedef typename __signedt::__type __signed_type; 10136: typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed; 10136: 10136: public: 10136: typedef typename __cv_signed::__type __type; 10136: }; 10136: 10136: template 10136: class __make_signed_selector<_Tp, false, true> 10136: { 10136: typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; 10136: 10136: public: 10136: typedef typename __make_signed_selector<__unsigned_type>::__type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct make_signed 10136: { typedef typename __make_signed_selector<_Tp>::__type type; }; 10136: 10136: 10136: template<> 10136: struct make_signed; 10136: 10136: 10136: 10136: template 10136: using make_signed_t = typename make_signed<_Tp>::type; 10136: 10136: 10136: template 10136: using make_unsigned_t = typename make_unsigned<_Tp>::type; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct remove_extent 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct remove_extent<_Tp[_Size]> 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct remove_extent<_Tp[]> 10136: { typedef _Tp type; }; 10136: 10136: 10136: template 10136: struct remove_all_extents 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct remove_all_extents<_Tp[_Size]> 10136: { typedef typename remove_all_extents<_Tp>::type type; }; 10136: 10136: template 10136: struct remove_all_extents<_Tp[]> 10136: { typedef typename remove_all_extents<_Tp>::type type; }; 10136: 10136: 10136: 10136: template 10136: using remove_extent_t = typename remove_extent<_Tp>::type; 10136: 10136: 10136: template 10136: using remove_all_extents_t = typename remove_all_extents<_Tp>::type; 10136: 10136: 10136: 10136: 10136: template 10136: struct __remove_pointer_helper 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct __remove_pointer_helper<_Tp, _Up*> 10136: { typedef _Up type; }; 10136: 10136: 10136: template 10136: struct remove_pointer 10136: : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> 10136: { }; 10136: 10136: 10136: template, 10136: is_void<_Tp>>::value> 10136: struct __add_pointer_helper 10136: { typedef _Tp type; }; 10136: 10136: template 10136: struct __add_pointer_helper<_Tp, true> 10136: { typedef typename remove_reference<_Tp>::type* type; }; 10136: 10136: template 10136: struct add_pointer 10136: : public __add_pointer_helper<_Tp> 10136: { }; 10136: 10136: 10136: 10136: template 10136: using remove_pointer_t = typename remove_pointer<_Tp>::type; 10136: 10136: 10136: template 10136: using add_pointer_t = typename add_pointer<_Tp>::type; 10136: 10136: 10136: template 10136: struct __aligned_storage_msa 10136: { 10136: union __type 10136: { 10136: unsigned char __data[_Len]; 10136: struct __attribute__((__aligned__)) { } __align; 10136: }; 10136: }; 10136: # 1872 "/usr/include/c++/8/type_traits" 3 10136: template::__type)> 10136: struct aligned_storage 10136: { 10136: union type 10136: { 10136: unsigned char __data[_Len]; 10136: struct __attribute__((__aligned__((_Align)))) { } __align; 10136: }; 10136: }; 10136: 10136: template 10136: struct __strictest_alignment 10136: { 10136: static const size_t _S_alignment = 0; 10136: static const size_t _S_size = 0; 10136: }; 10136: 10136: template 10136: struct __strictest_alignment<_Tp, _Types...> 10136: { 10136: static const size_t _S_alignment = 10136: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment 10136: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; 10136: static const size_t _S_size = 10136: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size 10136: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; 10136: }; 10136: # 1911 "/usr/include/c++/8/type_traits" 3 10136: template 10136: struct aligned_union 10136: { 10136: private: 10136: static_assert(sizeof...(_Types) != 0, "At least one type is required"); 10136: 10136: using __strictest = __strictest_alignment<_Types...>; 10136: static const size_t _S_len = _Len > __strictest::_S_size 10136: ? _Len : __strictest::_S_size; 10136: public: 10136: 10136: static const size_t alignment_value = __strictest::_S_alignment; 10136: 10136: typedef typename aligned_storage<_S_len, alignment_value>::type type; 10136: }; 10136: 10136: template 10136: const size_t aligned_union<_Len, _Types...>::alignment_value; 10136: 10136: 10136: 10136: template::value, 10136: bool _IsFunction = is_function<_Up>::value> 10136: struct __decay_selector; 10136: 10136: 10136: template 10136: struct __decay_selector<_Up, false, false> 10136: { typedef typename remove_cv<_Up>::type __type; }; 10136: 10136: template 10136: struct __decay_selector<_Up, true, false> 10136: { typedef typename remove_extent<_Up>::type* __type; }; 10136: 10136: template 10136: struct __decay_selector<_Up, false, true> 10136: { typedef typename add_pointer<_Up>::type __type; }; 10136: 10136: 10136: template 10136: class decay 10136: { 10136: typedef typename remove_reference<_Tp>::type __remove_type; 10136: 10136: public: 10136: typedef typename __decay_selector<__remove_type>::__type type; 10136: }; 10136: 10136: template 10136: class reference_wrapper; 10136: 10136: 10136: template 10136: struct __strip_reference_wrapper 10136: { 10136: typedef _Tp __type; 10136: }; 10136: 10136: template 10136: struct __strip_reference_wrapper > 10136: { 10136: typedef _Tp& __type; 10136: }; 10136: 10136: template 10136: struct __decay_and_strip 10136: { 10136: typedef typename __strip_reference_wrapper< 10136: typename decay<_Tp>::type>::__type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct enable_if 10136: { }; 10136: 10136: 10136: template 10136: struct enable_if 10136: { typedef _Tp type; }; 10136: 10136: template 10136: using _Require = typename enable_if<__and_<_Cond...>::value>::type; 10136: 10136: 10136: 10136: template 10136: struct conditional 10136: { typedef _Iftrue type; }; 10136: 10136: 10136: template 10136: struct conditional 10136: { typedef _Iffalse type; }; 10136: 10136: 10136: template 10136: struct common_type; 10136: 10136: 10136: 10136: struct __do_common_type_impl 10136: { 10136: template 10136: static __success_type() 10136: : std::declval<_Up>())>::type> _S_test(int); 10136: 10136: template 10136: static __failure_type _S_test(...); 10136: }; 10136: 10136: template 10136: struct __common_type_impl 10136: : private __do_common_type_impl 10136: { 10136: typedef decltype(_S_test<_Tp, _Up>(0)) type; 10136: }; 10136: 10136: struct __do_member_type_wrapper 10136: { 10136: template 10136: static __success_type _S_test(int); 10136: 10136: template 10136: static __failure_type _S_test(...); 10136: }; 10136: 10136: template 10136: struct __member_type_wrapper 10136: : private __do_member_type_wrapper 10136: { 10136: typedef decltype(_S_test<_Tp>(0)) type; 10136: }; 10136: 10136: template 10136: struct __expanded_common_type_wrapper 10136: { 10136: typedef common_type type; 10136: }; 10136: 10136: template 10136: struct __expanded_common_type_wrapper<__failure_type, _Args...> 10136: { typedef __failure_type type; }; 10136: 10136: template 10136: struct common_type<_Tp> 10136: { typedef typename decay<_Tp>::type type; }; 10136: 10136: template 10136: struct common_type<_Tp, _Up> 10136: : public __common_type_impl<_Tp, _Up>::type 10136: { }; 10136: 10136: template 10136: struct common_type<_Tp, _Up, _Vp...> 10136: : public __expanded_common_type_wrapper>::type, _Vp...>::type 10136: { }; 10136: 10136: 10136: template 10136: struct underlying_type 10136: { 10136: typedef __underlying_type(_Tp) type; 10136: }; 10136: 10136: template 10136: struct __declval_protector 10136: { 10136: static const bool __stop = false; 10136: }; 10136: 10136: template 10136: auto declval() noexcept -> decltype(__declval<_Tp>(0)) 10136: { 10136: static_assert(__declval_protector<_Tp>::__stop, 10136: "declval() must not be used!"); 10136: return __declval<_Tp>(0); 10136: } 10136: 10136: 10136: template 10136: class result_of; 10136: 10136: 10136: 10136: 10136: 10136: struct __invoke_memfun_ref { }; 10136: struct __invoke_memfun_deref { }; 10136: struct __invoke_memobj_ref { }; 10136: struct __invoke_memobj_deref { }; 10136: struct __invoke_other { }; 10136: 10136: 10136: template 10136: struct __result_of_success : __success_type<_Tp> 10136: { using __invoke_type = _Tag; }; 10136: 10136: 10136: struct __result_of_memfun_ref_impl 10136: { 10136: template 10136: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) 10136: ), __invoke_memfun_ref> _S_test(int); 10136: 10136: template 10136: static __failure_type _S_test(...); 10136: }; 10136: 10136: template 10136: struct __result_of_memfun_ref 10136: : private __result_of_memfun_ref_impl 10136: { 10136: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 10136: }; 10136: 10136: 10136: struct __result_of_memfun_deref_impl 10136: { 10136: template 10136: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) 10136: ), __invoke_memfun_deref> _S_test(int); 10136: 10136: template 10136: static __failure_type _S_test(...); 10136: }; 10136: 10136: template 10136: struct __result_of_memfun_deref 10136: : private __result_of_memfun_deref_impl 10136: { 10136: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 10136: }; 10136: 10136: 10136: struct __result_of_memobj_ref_impl 10136: { 10136: template 10136: static __result_of_success().*std::declval<_Fp>() 10136: ), __invoke_memobj_ref> _S_test(int); 10136: 10136: template 10136: static __failure_type _S_test(...); 10136: }; 10136: 10136: template 10136: struct __result_of_memobj_ref 10136: : private __result_of_memobj_ref_impl 10136: { 10136: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 10136: }; 10136: 10136: 10136: struct __result_of_memobj_deref_impl 10136: { 10136: template 10136: static __result_of_success()).*std::declval<_Fp>() 10136: ), __invoke_memobj_deref> _S_test(int); 10136: 10136: template 10136: static __failure_type _S_test(...); 10136: }; 10136: 10136: template 10136: struct __result_of_memobj_deref 10136: : private __result_of_memobj_deref_impl 10136: { 10136: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 10136: }; 10136: 10136: template 10136: struct __result_of_memobj; 10136: 10136: template 10136: struct __result_of_memobj<_Res _Class::*, _Arg> 10136: { 10136: typedef typename remove_cv::type>::type _Argval; 10136: typedef _Res _Class::* _MemPtr; 10136: typedef typename conditional<__or_, 10136: is_base_of<_Class, _Argval>>::value, 10136: __result_of_memobj_ref<_MemPtr, _Arg>, 10136: __result_of_memobj_deref<_MemPtr, _Arg> 10136: >::type::type type; 10136: }; 10136: 10136: template 10136: struct __result_of_memfun; 10136: 10136: template 10136: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> 10136: { 10136: typedef typename remove_cv::type>::type _Argval; 10136: typedef _Res _Class::* _MemPtr; 10136: typedef typename conditional<__or_, 10136: is_base_of<_Class, _Argval>>::value, 10136: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, 10136: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> 10136: >::type::type type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template::type> 10136: struct __inv_unwrap 10136: { 10136: using type = _Tp; 10136: }; 10136: 10136: template 10136: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> 10136: { 10136: using type = _Up&; 10136: }; 10136: 10136: template 10136: struct __result_of_impl 10136: { 10136: typedef __failure_type type; 10136: }; 10136: 10136: template 10136: struct __result_of_impl 10136: : public __result_of_memobj::type, 10136: typename __inv_unwrap<_Arg>::type> 10136: { }; 10136: 10136: template 10136: struct __result_of_impl 10136: : public __result_of_memfun::type, 10136: typename __inv_unwrap<_Arg>::type, _Args...> 10136: { }; 10136: 10136: 10136: struct __result_of_other_impl 10136: { 10136: template 10136: static __result_of_success()(std::declval<_Args>()...) 10136: ), __invoke_other> _S_test(int); 10136: 10136: template 10136: static __failure_type _S_test(...); 10136: }; 10136: 10136: template 10136: struct __result_of_impl 10136: : private __result_of_other_impl 10136: { 10136: typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; 10136: }; 10136: 10136: 10136: template 10136: struct __invoke_result 10136: : public __result_of_impl< 10136: is_member_object_pointer< 10136: typename remove_reference<_Functor>::type 10136: >::value, 10136: is_member_function_pointer< 10136: typename remove_reference<_Functor>::type 10136: >::value, 10136: _Functor, _ArgTypes... 10136: >::type 10136: { }; 10136: 10136: template 10136: struct result_of<_Functor(_ArgTypes...)> 10136: : public __invoke_result<_Functor, _ArgTypes...> 10136: { }; 10136: 10136: 10136: 10136: template::__type)> 10136: using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; 10136: 10136: template 10136: using aligned_union_t = typename aligned_union<_Len, _Types...>::type; 10136: 10136: 10136: template 10136: using decay_t = typename decay<_Tp>::type; 10136: 10136: 10136: template 10136: using enable_if_t = typename enable_if<_Cond, _Tp>::type; 10136: 10136: 10136: template 10136: using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; 10136: 10136: 10136: template 10136: using common_type_t = typename common_type<_Tp...>::type; 10136: 10136: 10136: template 10136: using underlying_type_t = typename underlying_type<_Tp>::type; 10136: 10136: 10136: template 10136: using result_of_t = typename result_of<_Tp>::type; 10136: 10136: 10136: template using __void_t = void; 10136: 10136: 10136: 10136: 10136: template using void_t = void; 10136: 10136: 10136: 10136: template class _Op, typename... _Args> 10136: struct __detector 10136: { 10136: using value_t = false_type; 10136: using type = _Default; 10136: }; 10136: 10136: 10136: template class _Op, 10136: typename... _Args> 10136: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> 10136: { 10136: using value_t = true_type; 10136: using type = _Op<_Args...>; 10136: }; 10136: 10136: 10136: template class _Op, 10136: typename... _Args> 10136: using __detected_or = __detector<_Default, void, _Op, _Args...>; 10136: 10136: 10136: template class _Op, 10136: typename... _Args> 10136: using __detected_or_t 10136: = typename __detected_or<_Default, _Op, _Args...>::type; 10136: # 2382 "/usr/include/c++/8/type_traits" 3 10136: template 10136: struct __is_swappable; 10136: 10136: template 10136: struct __is_nothrow_swappable; 10136: 10136: template 10136: class tuple; 10136: 10136: template 10136: struct __is_tuple_like_impl : false_type 10136: { }; 10136: 10136: template 10136: struct __is_tuple_like_impl> : true_type 10136: { }; 10136: 10136: 10136: template 10136: struct __is_tuple_like 10136: : public __is_tuple_like_impl::type>::type>::type 10136: { }; 10136: 10136: template 10136: inline 10136: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 10136: is_move_constructible<_Tp>, 10136: is_move_assignable<_Tp>>::value>::type 10136: swap(_Tp&, _Tp&) 10136: noexcept(__and_, 10136: is_nothrow_move_assignable<_Tp>>::value); 10136: 10136: template 10136: inline 10136: typename enable_if<__is_swappable<_Tp>::value>::type 10136: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 10136: noexcept(__is_nothrow_swappable<_Tp>::value); 10136: 10136: namespace __swappable_details { 10136: using std::swap; 10136: 10136: struct __do_is_swappable_impl 10136: { 10136: template(), std::declval<_Tp&>()))> 10136: static true_type __test(int); 10136: 10136: template 10136: static false_type __test(...); 10136: }; 10136: 10136: struct __do_is_nothrow_swappable_impl 10136: { 10136: template 10136: static __bool_constant< 10136: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) 10136: > __test(int); 10136: 10136: template 10136: static false_type __test(...); 10136: }; 10136: 10136: } 10136: 10136: template 10136: struct __is_swappable_impl 10136: : public __swappable_details::__do_is_swappable_impl 10136: { 10136: typedef decltype(__test<_Tp>(0)) type; 10136: }; 10136: 10136: template 10136: struct __is_nothrow_swappable_impl 10136: : public __swappable_details::__do_is_nothrow_swappable_impl 10136: { 10136: typedef decltype(__test<_Tp>(0)) type; 10136: }; 10136: 10136: template 10136: struct __is_swappable 10136: : public __is_swappable_impl<_Tp>::type 10136: { }; 10136: 10136: template 10136: struct __is_nothrow_swappable 10136: : public __is_nothrow_swappable_impl<_Tp>::type 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_swappable 10136: : public __is_swappable_impl<_Tp>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_swappable 10136: : public __is_nothrow_swappable_impl<_Tp>::type 10136: { }; 10136: 10136: 10136: 10136: template 10136: constexpr bool is_swappable_v = 10136: is_swappable<_Tp>::value; 10136: 10136: 10136: template 10136: constexpr bool is_nothrow_swappable_v = 10136: is_nothrow_swappable<_Tp>::value; 10136: 10136: 10136: namespace __swappable_with_details { 10136: using std::swap; 10136: 10136: struct __do_is_swappable_with_impl 10136: { 10136: template(), std::declval<_Up>())), 10136: typename 10136: = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> 10136: static true_type __test(int); 10136: 10136: template 10136: static false_type __test(...); 10136: }; 10136: 10136: struct __do_is_nothrow_swappable_with_impl 10136: { 10136: template 10136: static __bool_constant< 10136: noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) 10136: && 10136: noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) 10136: > __test(int); 10136: 10136: template 10136: static false_type __test(...); 10136: }; 10136: 10136: } 10136: 10136: template 10136: struct __is_swappable_with_impl 10136: : public __swappable_with_details::__do_is_swappable_with_impl 10136: { 10136: typedef decltype(__test<_Tp, _Up>(0)) type; 10136: }; 10136: 10136: 10136: template 10136: struct __is_swappable_with_impl<_Tp&, _Tp&> 10136: : public __swappable_details::__do_is_swappable_impl 10136: { 10136: typedef decltype(__test<_Tp&>(0)) type; 10136: }; 10136: 10136: template 10136: struct __is_nothrow_swappable_with_impl 10136: : public __swappable_with_details::__do_is_nothrow_swappable_with_impl 10136: { 10136: typedef decltype(__test<_Tp, _Up>(0)) type; 10136: }; 10136: 10136: 10136: template 10136: struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&> 10136: : public __swappable_details::__do_is_nothrow_swappable_impl 10136: { 10136: typedef decltype(__test<_Tp&>(0)) type; 10136: }; 10136: 10136: 10136: template 10136: struct is_swappable_with 10136: : public __is_swappable_with_impl<_Tp, _Up>::type 10136: { }; 10136: 10136: 10136: template 10136: struct is_nothrow_swappable_with 10136: : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type 10136: { }; 10136: 10136: 10136: 10136: template 10136: constexpr bool is_swappable_with_v = 10136: is_swappable_with<_Tp, _Up>::value; 10136: 10136: 10136: template 10136: constexpr bool is_nothrow_swappable_with_v = 10136: is_nothrow_swappable_with<_Tp, _Up>::value; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_invocable_impl : false_type { }; 10136: 10136: template 10136: struct __is_invocable_impl<_Result, _Ret, __void_t> 10136: : __or_, is_convertible>::type 10136: { }; 10136: 10136: template 10136: struct __is_invocable 10136: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 10136: { }; 10136: 10136: template 10136: constexpr bool __call_is_nt(__invoke_memfun_ref) 10136: { 10136: using _Up = typename __inv_unwrap<_Tp>::type; 10136: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( 10136: std::declval<_Args>()...)); 10136: } 10136: 10136: template 10136: constexpr bool __call_is_nt(__invoke_memfun_deref) 10136: { 10136: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( 10136: std::declval<_Args>()...)); 10136: } 10136: 10136: template 10136: constexpr bool __call_is_nt(__invoke_memobj_ref) 10136: { 10136: using _Up = typename __inv_unwrap<_Tp>::type; 10136: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); 10136: } 10136: 10136: template 10136: constexpr bool __call_is_nt(__invoke_memobj_deref) 10136: { 10136: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); 10136: } 10136: 10136: template 10136: constexpr bool __call_is_nt(__invoke_other) 10136: { 10136: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); 10136: } 10136: 10136: template 10136: struct __call_is_nothrow 10136: : __bool_constant< 10136: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) 10136: > 10136: { }; 10136: 10136: template 10136: using __call_is_nothrow_ 10136: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; 10136: 10136: 10136: template 10136: struct __is_nothrow_invocable 10136: : __and_<__is_invocable<_Fn, _Args...>, 10136: __call_is_nothrow_<_Fn, _Args...>>::type 10136: { }; 10136: 10136: struct __nonesuch { 10136: __nonesuch() = delete; 10136: ~__nonesuch() = delete; 10136: __nonesuch(__nonesuch const&) = delete; 10136: void operator=(__nonesuch const&) = delete; 10136: }; 10136: # 2943 "/usr/include/c++/8/type_traits" 3 10136: 10136: } 10136: # 56 "/usr/include/c++/8/bits/move.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 72 "/usr/include/c++/8/bits/move.h" 3 10136: template 10136: constexpr _Tp&& 10136: forward(typename std::remove_reference<_Tp>::type& __t) noexcept 10136: { return static_cast<_Tp&&>(__t); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: constexpr _Tp&& 10136: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 10136: { 10136: static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" 10136: " substituting _Tp is an lvalue reference type"); 10136: return static_cast<_Tp&&>(__t); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: constexpr typename std::remove_reference<_Tp>::type&& 10136: move(_Tp&& __t) noexcept 10136: { return static_cast::type&&>(__t); } 10136: 10136: 10136: template 10136: struct __move_if_noexcept_cond 10136: : public __and_<__not_>, 10136: is_copy_constructible<_Tp>>::type { }; 10136: # 116 "/usr/include/c++/8/bits/move.h" 3 10136: template 10136: constexpr typename 10136: conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type 10136: move_if_noexcept(_Tp& __x) noexcept 10136: { return std::move(__x); } 10136: # 136 "/usr/include/c++/8/bits/move.h" 3 10136: template 10136: inline _Tp* 10136: addressof(_Tp& __r) noexcept 10136: { return std::__addressof(__r); } 10136: 10136: 10136: 10136: template 10136: const _Tp* addressof(const _Tp&&) = delete; 10136: 10136: 10136: template 10136: inline _Tp 10136: __exchange(_Tp& __obj, _Up&& __new_val) 10136: { 10136: _Tp __old_val = std::move(__obj); 10136: __obj = std::forward<_Up>(__new_val); 10136: return __old_val; 10136: } 10136: # 176 "/usr/include/c++/8/bits/move.h" 3 10136: template 10136: inline 10136: 10136: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 10136: is_move_constructible<_Tp>, 10136: is_move_assignable<_Tp>>::value>::type 10136: swap(_Tp& __a, _Tp& __b) 10136: noexcept(__and_, 10136: is_nothrow_move_assignable<_Tp>>::value) 10136: 10136: 10136: 10136: 10136: { 10136: 10136: 10136: 10136: _Tp __tmp = std::move(__a); 10136: __a = std::move(__b); 10136: __b = std::move(__tmp); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: inline 10136: 10136: typename enable_if<__is_swappable<_Tp>::value>::type 10136: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 10136: noexcept(__is_nothrow_swappable<_Tp>::value) 10136: 10136: 10136: 10136: 10136: { 10136: for (size_t __n = 0; __n < _Nm; ++__n) 10136: swap(__a[__n], __b[__n]); 10136: } 10136: 10136: 10136: 10136: } 10136: # 41 "/usr/include/c++/8/bits/nested_exception.h" 2 3 10136: 10136: extern "C++" { 10136: 10136: namespace std 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: class nested_exception 10136: { 10136: exception_ptr _M_ptr; 10136: 10136: public: 10136: nested_exception() noexcept : _M_ptr(current_exception()) { } 10136: 10136: nested_exception(const nested_exception&) noexcept = default; 10136: 10136: nested_exception& operator=(const nested_exception&) noexcept = default; 10136: 10136: virtual ~nested_exception() noexcept; 10136: 10136: [[noreturn]] 10136: void 10136: rethrow_nested() const 10136: { 10136: if (_M_ptr) 10136: rethrow_exception(_M_ptr); 10136: std::terminate(); 10136: } 10136: 10136: exception_ptr 10136: nested_ptr() const noexcept 10136: { return _M_ptr; } 10136: }; 10136: 10136: template 10136: struct _Nested_exception : public _Except, public nested_exception 10136: { 10136: explicit _Nested_exception(const _Except& __ex) 10136: : _Except(__ex) 10136: { } 10136: 10136: explicit _Nested_exception(_Except&& __ex) 10136: : _Except(static_cast<_Except&&>(__ex)) 10136: { } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: [[noreturn]] 10136: inline void 10136: __throw_with_nested_impl(_Tp&& __t, true_type) 10136: { 10136: using _Up = typename remove_reference<_Tp>::type; 10136: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; 10136: } 10136: 10136: template 10136: [[noreturn]] 10136: inline void 10136: __throw_with_nested_impl(_Tp&& __t, false_type) 10136: { throw std::forward<_Tp>(__t); } 10136: 10136: 10136: 10136: template 10136: [[noreturn]] 10136: inline void 10136: throw_with_nested(_Tp&& __t) 10136: { 10136: using _Up = typename decay<_Tp>::type; 10136: using _CopyConstructible 10136: = __and_, is_move_constructible<_Up>>; 10136: static_assert(_CopyConstructible::value, 10136: "throw_with_nested argument must be CopyConstructible"); 10136: using __nest = __and_, __bool_constant, 10136: __not_>>; 10136: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); 10136: } 10136: 10136: 10136: template 10136: using __rethrow_if_nested_cond = typename enable_if< 10136: __and_, 10136: __or_<__not_>, 10136: is_convertible<_Tp*, nested_exception*>>>::value 10136: >::type; 10136: 10136: 10136: template 10136: inline __rethrow_if_nested_cond<_Ex> 10136: __rethrow_if_nested_impl(const _Ex* __ptr) 10136: { 10136: if (auto __ne_ptr = dynamic_cast(__ptr)) 10136: __ne_ptr->rethrow_nested(); 10136: } 10136: 10136: 10136: inline void 10136: __rethrow_if_nested_impl(const void*) 10136: { } 10136: 10136: 10136: template 10136: inline void 10136: rethrow_if_nested(const _Ex& __ex) 10136: { std::__rethrow_if_nested_impl(std::__addressof(__ex)); } 10136: 10136: 10136: } 10136: 10136: } 10136: 10136: 10136: 10136: #pragma GCC visibility pop 10136: # 145 "/usr/include/c++/8/exception" 2 3 10136: # 41 "/usr/include/c++/8/new" 2 3 10136: 10136: #pragma GCC visibility push(default) 10136: 10136: extern "C++" { 10136: 10136: namespace std 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: class bad_alloc : public exception 10136: { 10136: public: 10136: bad_alloc() throw() { } 10136: 10136: 10136: 10136: virtual ~bad_alloc() throw(); 10136: 10136: 10136: virtual const char* what() const throw(); 10136: }; 10136: 10136: 10136: class bad_array_new_length : public bad_alloc 10136: { 10136: public: 10136: bad_array_new_length() throw() { } 10136: 10136: 10136: 10136: virtual ~bad_array_new_length() throw(); 10136: 10136: 10136: virtual const char* what() const throw(); 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct nothrow_t 10136: { 10136: 10136: explicit nothrow_t() = default; 10136: 10136: }; 10136: 10136: extern const nothrow_t nothrow; 10136: 10136: 10136: 10136: typedef void (*new_handler)(); 10136: 10136: 10136: 10136: new_handler set_new_handler(new_handler) throw(); 10136: 10136: 10136: 10136: new_handler get_new_handler() noexcept; 10136: 10136: } 10136: # 120 "/usr/include/c++/8/new" 3 10136: void* operator new(std::size_t) 10136: __attribute__((__externally_visible__)); 10136: void* operator new[](std::size_t) 10136: __attribute__((__externally_visible__)); 10136: void operator delete(void*) noexcept 10136: __attribute__((__externally_visible__)); 10136: void operator delete[](void*) noexcept 10136: __attribute__((__externally_visible__)); 10136: 10136: void operator delete(void*, std::size_t) noexcept 10136: __attribute__((__externally_visible__)); 10136: void operator delete[](void*, std::size_t) noexcept 10136: __attribute__((__externally_visible__)); 10136: 10136: void* operator new(std::size_t, const std::nothrow_t&) noexcept 10136: __attribute__((__externally_visible__)); 10136: void* operator new[](std::size_t, const std::nothrow_t&) noexcept 10136: __attribute__((__externally_visible__)); 10136: void operator delete(void*, const std::nothrow_t&) noexcept 10136: __attribute__((__externally_visible__)); 10136: void operator delete[](void*, const std::nothrow_t&) noexcept 10136: __attribute__((__externally_visible__)); 10136: # 168 "/usr/include/c++/8/new" 3 10136: inline void* operator new(std::size_t, void* __p) noexcept 10136: { return __p; } 10136: inline void* operator new[](std::size_t, void* __p) noexcept 10136: { return __p; } 10136: 10136: 10136: inline void operator delete (void*, void*) noexcept { } 10136: inline void operator delete[](void*, void*) noexcept { } 10136: 10136: } 10136: # 216 "/usr/include/c++/8/new" 3 10136: #pragma GCC visibility pop 10136: # 75 "../../src/test/harness.h" 2 10136: # 101 "../../src/test/harness.h" 10136: # 1 "/usr/include/pthread.h" 1 3 4 10136: # 23 "/usr/include/pthread.h" 3 4 10136: # 1 "/usr/include/sched.h" 1 3 4 10136: # 29 "/usr/include/sched.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 30 "/usr/include/sched.h" 2 3 4 10136: # 43 "/usr/include/sched.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 1 3 4 10136: # 75 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 3 4 10136: struct sched_param 10136: { 10136: int sched_priority; 10136: }; 10136: 10136: extern "C" { 10136: 10136: 10136: 10136: extern int clone (int (*__fn) (void *__arg), void *__child_stack, 10136: int __flags, void *__arg, ...) throw (); 10136: 10136: 10136: extern int unshare (int __flags) throw (); 10136: 10136: 10136: extern int sched_getcpu (void) throw (); 10136: 10136: 10136: extern int setns (int __fd, int __nstype) throw (); 10136: 10136: 10136: } 10136: # 44 "/usr/include/sched.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 1 3 4 10136: # 32 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 10136: typedef unsigned long int __cpu_mask; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef struct 10136: { 10136: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; 10136: } cpu_set_t; 10136: # 115 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 10136: extern "C" { 10136: 10136: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) 10136: throw (); 10136: extern cpu_set_t *__sched_cpualloc (size_t __count) throw () __attribute__ ((__warn_unused_result__)); 10136: extern void __sched_cpufree (cpu_set_t *__set) throw (); 10136: 10136: } 10136: # 45 "/usr/include/sched.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C" { 10136: 10136: 10136: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) 10136: throw (); 10136: 10136: 10136: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw (); 10136: 10136: 10136: extern int sched_setscheduler (__pid_t __pid, int __policy, 10136: const struct sched_param *__param) throw (); 10136: 10136: 10136: extern int sched_getscheduler (__pid_t __pid) throw (); 10136: 10136: 10136: extern int sched_yield (void) throw (); 10136: 10136: 10136: extern int sched_get_priority_max (int __algorithm) throw (); 10136: 10136: 10136: extern int sched_get_priority_min (int __algorithm) throw (); 10136: 10136: 10136: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw (); 10136: # 121 "/usr/include/sched.h" 3 4 10136: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, 10136: const cpu_set_t *__cpuset) throw (); 10136: 10136: 10136: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, 10136: cpu_set_t *__cpuset) throw (); 10136: 10136: 10136: } 10136: # 24 "/usr/include/pthread.h" 2 3 4 10136: # 1 "/usr/include/time.h" 1 3 4 10136: # 29 "/usr/include/time.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 30 "/usr/include/time.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/time.h" 1 3 4 10136: # 73 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 1 3 4 10136: # 26 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 10136: struct timex 10136: { 10136: unsigned int modes; 10136: __syscall_slong_t offset; 10136: __syscall_slong_t freq; 10136: __syscall_slong_t maxerror; 10136: __syscall_slong_t esterror; 10136: int status; 10136: __syscall_slong_t constant; 10136: __syscall_slong_t precision; 10136: __syscall_slong_t tolerance; 10136: struct timeval time; 10136: __syscall_slong_t tick; 10136: __syscall_slong_t ppsfreq; 10136: __syscall_slong_t jitter; 10136: int shift; 10136: __syscall_slong_t stabil; 10136: __syscall_slong_t jitcnt; 10136: __syscall_slong_t calcnt; 10136: __syscall_slong_t errcnt; 10136: __syscall_slong_t stbcnt; 10136: 10136: int tai; 10136: 10136: 10136: int :32; int :32; int :32; int :32; 10136: int :32; int :32; int :32; int :32; 10136: int :32; int :32; int :32; 10136: }; 10136: # 74 "/usr/include/arm-linux-gnueabihf/bits/time.h" 2 3 4 10136: 10136: extern "C" { 10136: 10136: 10136: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); 10136: 10136: } 10136: # 34 "/usr/include/time.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_tm.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct tm 10136: { 10136: int tm_sec; 10136: int tm_min; 10136: int tm_hour; 10136: int tm_mday; 10136: int tm_mon; 10136: int tm_year; 10136: int tm_wday; 10136: int tm_yday; 10136: int tm_isdst; 10136: 10136: 10136: long int tm_gmtoff; 10136: const char *tm_zone; 10136: 10136: 10136: 10136: 10136: }; 10136: # 40 "/usr/include/time.h" 2 3 4 10136: # 48 "/usr/include/time.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_itimerspec.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct itimerspec 10136: { 10136: struct timespec it_interval; 10136: struct timespec it_value; 10136: }; 10136: # 49 "/usr/include/time.h" 2 3 4 10136: struct sigevent; 10136: # 68 "/usr/include/time.h" 3 4 10136: extern "C" { 10136: 10136: 10136: 10136: extern clock_t clock (void) throw (); 10136: 10136: 10136: extern time_t time (time_t *__timer) throw (); 10136: 10136: 10136: extern double difftime (time_t __time1, time_t __time0) 10136: throw () __attribute__ ((__const__)); 10136: 10136: 10136: extern time_t mktime (struct tm *__tp) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern size_t strftime (char *__restrict __s, size_t __maxsize, 10136: const char *__restrict __format, 10136: const struct tm *__restrict __tp) throw (); 10136: 10136: 10136: 10136: 10136: extern char *strptime (const char *__restrict __s, 10136: const char *__restrict __fmt, struct tm *__tp) 10136: throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, 10136: const char *__restrict __format, 10136: const struct tm *__restrict __tp, 10136: locale_t __loc) throw (); 10136: 10136: 10136: 10136: extern char *strptime_l (const char *__restrict __s, 10136: const char *__restrict __fmt, struct tm *__tp, 10136: locale_t __loc) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern struct tm *gmtime (const time_t *__timer) throw (); 10136: 10136: 10136: 10136: extern struct tm *localtime (const time_t *__timer) throw (); 10136: 10136: 10136: 10136: 10136: extern struct tm *gmtime_r (const time_t *__restrict __timer, 10136: struct tm *__restrict __tp) throw (); 10136: 10136: 10136: 10136: extern struct tm *localtime_r (const time_t *__restrict __timer, 10136: struct tm *__restrict __tp) throw (); 10136: 10136: 10136: 10136: 10136: extern char *asctime (const struct tm *__tp) throw (); 10136: 10136: 10136: extern char *ctime (const time_t *__timer) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *asctime_r (const struct tm *__restrict __tp, 10136: char *__restrict __buf) throw (); 10136: 10136: 10136: extern char *ctime_r (const time_t *__restrict __timer, 10136: char *__restrict __buf) throw (); 10136: 10136: 10136: 10136: 10136: extern char *__tzname[2]; 10136: extern int __daylight; 10136: extern long int __timezone; 10136: 10136: 10136: 10136: 10136: extern char *tzname[2]; 10136: 10136: 10136: 10136: extern void tzset (void) throw (); 10136: 10136: 10136: 10136: extern int daylight; 10136: extern long int timezone; 10136: 10136: 10136: 10136: 10136: 10136: extern int stime (const time_t *__when) throw (); 10136: # 196 "/usr/include/time.h" 3 4 10136: extern time_t timegm (struct tm *__tp) throw (); 10136: 10136: 10136: extern time_t timelocal (struct tm *__tp) throw (); 10136: 10136: 10136: extern int dysize (int __year) throw () __attribute__ ((__const__)); 10136: # 211 "/usr/include/time.h" 3 4 10136: extern int nanosleep (const struct timespec *__requested_time, 10136: struct timespec *__remaining); 10136: 10136: 10136: 10136: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); 10136: 10136: 10136: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); 10136: 10136: 10136: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) 10136: throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int clock_nanosleep (clockid_t __clock_id, int __flags, 10136: const struct timespec *__req, 10136: struct timespec *__rem); 10136: 10136: 10136: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); 10136: 10136: 10136: 10136: 10136: extern int timer_create (clockid_t __clock_id, 10136: struct sigevent *__restrict __evp, 10136: timer_t *__restrict __timerid) throw (); 10136: 10136: 10136: extern int timer_delete (timer_t __timerid) throw (); 10136: 10136: 10136: extern int timer_settime (timer_t __timerid, int __flags, 10136: const struct itimerspec *__restrict __value, 10136: struct itimerspec *__restrict __ovalue) throw (); 10136: 10136: 10136: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) 10136: throw (); 10136: 10136: 10136: extern int timer_getoverrun (timer_t __timerid) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int timespec_get (struct timespec *__ts, int __base) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: # 280 "/usr/include/time.h" 3 4 10136: extern int getdate_err; 10136: # 289 "/usr/include/time.h" 3 4 10136: extern struct tm *getdate (const char *__string); 10136: # 303 "/usr/include/time.h" 3 4 10136: extern int getdate_r (const char *__restrict __string, 10136: struct tm *__restrict __resbufp); 10136: 10136: 10136: } 10136: # 25 "/usr/include/pthread.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 1 3 4 10136: # 33 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 3 4 10136: typedef int __jmp_buf[64] __attribute__((__aligned__ (8))); 10136: # 28 "/usr/include/pthread.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 10136: # 29 "/usr/include/pthread.h" 2 3 4 10136: 10136: 10136: 10136: 10136: enum 10136: { 10136: PTHREAD_CREATE_JOINABLE, 10136: 10136: PTHREAD_CREATE_DETACHED 10136: 10136: }; 10136: 10136: 10136: 10136: enum 10136: { 10136: PTHREAD_MUTEX_TIMED_NP, 10136: PTHREAD_MUTEX_RECURSIVE_NP, 10136: PTHREAD_MUTEX_ERRORCHECK_NP, 10136: PTHREAD_MUTEX_ADAPTIVE_NP 10136: 10136: , 10136: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 10136: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 10136: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 10136: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 10136: 10136: 10136: 10136: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: enum 10136: { 10136: PTHREAD_MUTEX_STALLED, 10136: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 10136: PTHREAD_MUTEX_ROBUST, 10136: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: enum 10136: { 10136: PTHREAD_PRIO_NONE, 10136: PTHREAD_PRIO_INHERIT, 10136: PTHREAD_PRIO_PROTECT 10136: }; 10136: # 115 "/usr/include/pthread.h" 3 4 10136: enum 10136: { 10136: PTHREAD_RWLOCK_PREFER_READER_NP, 10136: PTHREAD_RWLOCK_PREFER_WRITER_NP, 10136: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 10136: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 10136: }; 10136: # 156 "/usr/include/pthread.h" 3 4 10136: enum 10136: { 10136: PTHREAD_INHERIT_SCHED, 10136: 10136: PTHREAD_EXPLICIT_SCHED 10136: 10136: }; 10136: 10136: 10136: 10136: enum 10136: { 10136: PTHREAD_SCOPE_SYSTEM, 10136: 10136: PTHREAD_SCOPE_PROCESS 10136: 10136: }; 10136: 10136: 10136: 10136: enum 10136: { 10136: PTHREAD_PROCESS_PRIVATE, 10136: 10136: PTHREAD_PROCESS_SHARED 10136: 10136: }; 10136: # 191 "/usr/include/pthread.h" 3 4 10136: struct _pthread_cleanup_buffer 10136: { 10136: void (*__routine) (void *); 10136: void *__arg; 10136: int __canceltype; 10136: struct _pthread_cleanup_buffer *__prev; 10136: }; 10136: 10136: 10136: enum 10136: { 10136: PTHREAD_CANCEL_ENABLE, 10136: 10136: PTHREAD_CANCEL_DISABLE 10136: 10136: }; 10136: enum 10136: { 10136: PTHREAD_CANCEL_DEFERRED, 10136: 10136: PTHREAD_CANCEL_ASYNCHRONOUS 10136: 10136: }; 10136: # 229 "/usr/include/pthread.h" 3 4 10136: extern "C" { 10136: 10136: 10136: 10136: 10136: extern int pthread_create (pthread_t *__restrict __newthread, 10136: const pthread_attr_t *__restrict __attr, 10136: void *(*__start_routine) (void *), 10136: void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3))); 10136: 10136: 10136: 10136: 10136: 10136: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_join (pthread_t __th, void **__thread_return); 10136: 10136: 10136: 10136: 10136: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, 10136: const struct timespec *__abstime); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_detach (pthread_t __th) throw (); 10136: 10136: 10136: 10136: extern pthread_t pthread_self (void) throw () __attribute__ ((__const__)); 10136: 10136: 10136: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) 10136: throw () __attribute__ ((__const__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_attr_destroy (pthread_attr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, 10136: int *__detachstate) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, 10136: int __detachstate) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, 10136: size_t *__guardsize) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, 10136: size_t __guardsize) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, 10136: struct sched_param *__restrict __param) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, 10136: const struct sched_param *__restrict 10136: __param) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict 10136: __attr, int *__restrict __policy) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict 10136: __attr, int *__restrict __inherit) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, 10136: int __inherit) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, 10136: int *__restrict __scope) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict 10136: __attr, void **__restrict __stackaddr) 10136: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, 10136: void *__stackaddr) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); 10136: 10136: 10136: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict 10136: __attr, size_t *__restrict __stacksize) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, 10136: size_t __stacksize) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, 10136: void **__restrict __stackaddr, 10136: size_t *__restrict __stacksize) 10136: throw () __attribute__ ((__nonnull__ (1, 2, 3))); 10136: 10136: 10136: 10136: 10136: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, 10136: size_t __stacksize) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, 10136: size_t __cpusetsize, 10136: const cpu_set_t *__cpuset) 10136: throw () __attribute__ ((__nonnull__ (1, 3))); 10136: 10136: 10136: 10136: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, 10136: size_t __cpusetsize, 10136: cpu_set_t *__cpuset) 10136: throw () __attribute__ ((__nonnull__ (1, 3))); 10136: 10136: 10136: extern int pthread_getattr_default_np (pthread_attr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, 10136: const struct sched_param *__param) 10136: throw () __attribute__ ((__nonnull__ (3))); 10136: 10136: 10136: extern int pthread_getschedparam (pthread_t __target_thread, 10136: int *__restrict __policy, 10136: struct sched_param *__restrict __param) 10136: throw () __attribute__ ((__nonnull__ (2, 3))); 10136: 10136: 10136: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) 10136: throw (); 10136: 10136: 10136: 10136: 10136: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, 10136: size_t __buflen) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_getconcurrency (void) throw (); 10136: 10136: 10136: extern int pthread_setconcurrency (int __level) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_yield (void) throw (); 10136: 10136: 10136: 10136: 10136: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, 10136: const cpu_set_t *__cpuset) 10136: throw () __attribute__ ((__nonnull__ (3))); 10136: 10136: 10136: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, 10136: cpu_set_t *__cpuset) 10136: throw () __attribute__ ((__nonnull__ (3))); 10136: # 495 "/usr/include/pthread.h" 3 4 10136: extern int pthread_once (pthread_once_t *__once_control, 10136: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 10136: # 507 "/usr/include/pthread.h" 3 4 10136: extern int pthread_setcancelstate (int __state, int *__oldstate); 10136: 10136: 10136: 10136: extern int pthread_setcanceltype (int __type, int *__oldtype); 10136: 10136: 10136: extern int pthread_cancel (pthread_t __th); 10136: 10136: 10136: 10136: 10136: extern void pthread_testcancel (void); 10136: 10136: 10136: 10136: 10136: typedef struct 10136: { 10136: struct 10136: { 10136: __jmp_buf __cancel_jmp_buf; 10136: int __mask_was_saved; 10136: } __cancel_jmp_buf[1]; 10136: void *__pad[4]; 10136: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 10136: # 541 "/usr/include/pthread.h" 3 4 10136: struct __pthread_cleanup_frame 10136: { 10136: void (*__cancel_routine) (void *); 10136: void *__cancel_arg; 10136: int __do_it; 10136: int __cancel_type; 10136: }; 10136: 10136: 10136: 10136: 10136: class __pthread_cleanup_class 10136: { 10136: void (*__cancel_routine) (void *); 10136: void *__cancel_arg; 10136: int __do_it; 10136: int __cancel_type; 10136: 10136: public: 10136: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) 10136: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } 10136: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } 10136: void __setdoit (int __newval) { __do_it = __newval; } 10136: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, 10136: &__cancel_type); } 10136: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } 10136: }; 10136: # 743 "/usr/include/pthread.h" 3 4 10136: struct __jmp_buf_tag; 10136: extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_mutex_init (pthread_mutex_t *__mutex, 10136: const pthread_mutexattr_t *__mutexattr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, 10136: const struct timespec *__restrict 10136: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * 10136: __restrict __mutex, 10136: int *__restrict __prioceiling) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, 10136: int __prioceiling, 10136: int *__restrict __old_ceiling) 10136: throw () __attribute__ ((__nonnull__ (1, 3))); 10136: 10136: 10136: 10136: 10136: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: # 807 "/usr/include/pthread.h" 3 4 10136: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * 10136: __restrict __attr, 10136: int *__restrict __pshared) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, 10136: int __pshared) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict 10136: __attr, int *__restrict __kind) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * 10136: __restrict __attr, 10136: int *__restrict __protocol) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, 10136: int __protocol) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * 10136: __restrict __attr, 10136: int *__restrict __prioceiling) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, 10136: int __prioceiling) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, 10136: int *__robustness) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr, 10136: int *__robustness) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, 10136: int __robustness) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, 10136: int __robustness) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: # 889 "/usr/include/pthread.h" 3 4 10136: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, 10136: const pthread_rwlockattr_t *__restrict 10136: __attr) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, 10136: const struct timespec *__restrict 10136: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, 10136: const struct timespec *__restrict 10136: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * 10136: __restrict __attr, 10136: int *__restrict __pshared) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, 10136: int __pshared) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * 10136: __restrict __attr, 10136: int *__restrict __pref) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, 10136: int __pref) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, 10136: const pthread_condattr_t *__restrict __cond_attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_cond_destroy (pthread_cond_t *__cond) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_cond_signal (pthread_cond_t *__cond) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_cond_broadcast (pthread_cond_t *__cond) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, 10136: pthread_mutex_t *__restrict __mutex) 10136: __attribute__ ((__nonnull__ (1, 2))); 10136: # 1001 "/usr/include/pthread.h" 3 4 10136: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, 10136: pthread_mutex_t *__restrict __mutex, 10136: const struct timespec *__restrict __abstime) 10136: __attribute__ ((__nonnull__ (1, 2, 3))); 10136: 10136: 10136: 10136: 10136: extern int pthread_condattr_init (pthread_condattr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_condattr_getpshared (const pthread_condattr_t * 10136: __restrict __attr, 10136: int *__restrict __pshared) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, 10136: int __pshared) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_condattr_getclock (const pthread_condattr_t * 10136: __restrict __attr, 10136: __clockid_t *__restrict __clock_id) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, 10136: __clockid_t __clock_id) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: # 1045 "/usr/include/pthread.h" 3 4 10136: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_spin_lock (pthread_spinlock_t *__lock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, 10136: const pthread_barrierattr_t *__restrict 10136: __attr, unsigned int __count) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * 10136: __restrict __attr, 10136: int *__restrict __pshared) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, 10136: int __pshared) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: # 1112 "/usr/include/pthread.h" 3 4 10136: extern int pthread_key_create (pthread_key_t *__key, 10136: void (*__destr_function) (void *)) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int pthread_key_delete (pthread_key_t __key) throw (); 10136: 10136: 10136: extern void *pthread_getspecific (pthread_key_t __key) throw (); 10136: 10136: 10136: extern int pthread_setspecific (pthread_key_t __key, 10136: const void *__pointer) throw () ; 10136: 10136: 10136: 10136: 10136: extern int pthread_getcpuclockid (pthread_t __thread_id, 10136: __clockid_t *__clock_id) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: # 1146 "/usr/include/pthread.h" 3 4 10136: extern int pthread_atfork (void (*__prepare) (void), 10136: void (*__parent) (void), 10136: void (*__child) (void)) throw (); 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) throw () 10136: { 10136: return __thread1 == __thread2; 10136: } 10136: 10136: 10136: } 10136: # 102 "../../src/test/harness.h" 2 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/sys/utsname.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/sys/utsname.h" 3 4 10136: extern "C" { 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/utsname.h" 1 3 4 10136: # 30 "/usr/include/arm-linux-gnueabihf/sys/utsname.h" 2 3 4 10136: # 48 "/usr/include/arm-linux-gnueabihf/sys/utsname.h" 3 4 10136: struct utsname 10136: { 10136: 10136: char sysname[65]; 10136: 10136: 10136: char nodename[65]; 10136: 10136: 10136: char release[65]; 10136: 10136: char version[65]; 10136: 10136: 10136: char machine[65]; 10136: 10136: 10136: 10136: 10136: char domainname[65]; 10136: 10136: 10136: 10136: 10136: }; 10136: # 81 "/usr/include/arm-linux-gnueabihf/sys/utsname.h" 3 4 10136: extern int uname (struct utsname *__name) throw (); 10136: 10136: 10136: } 10136: # 106 "../../src/test/harness.h" 2 10136: # 1 "/usr/include/errno.h" 1 3 4 10136: # 28 "/usr/include/errno.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 1 3 4 10136: # 26 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 3 4 10136: # 1 "/usr/include/linux/errno.h" 1 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 1 3 4 10136: # 1 "/usr/include/asm-generic/errno.h" 1 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 10136: # 5 "/usr/include/asm-generic/errno.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 2 3 4 10136: # 1 "/usr/include/linux/errno.h" 2 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 2 3 4 10136: # 29 "/usr/include/errno.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: extern "C" { 10136: 10136: 10136: extern int *__errno_location (void) throw () __attribute__ ((__const__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *program_invocation_name; 10136: extern char *program_invocation_short_name; 10136: 10136: 10136: 10136: 10136: 10136: typedef int error_t; 10136: 10136: 10136: 10136: 10136: } 10136: # 107 "../../src/test/harness.h" 2 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/execinfo.h" 1 3 4 10136: # 23 "/usr/include/execinfo.h" 3 4 10136: extern "C" { 10136: 10136: 10136: 10136: extern int backtrace (void **__array, int __size) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern char **backtrace_symbols (void *const *__array, int __size) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern void backtrace_symbols_fd (void *const *__array, int __size, int __fd) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: } 10136: # 112 "../../src/test/harness.h" 2 10136: 10136: 10136: 10136: 10136: # 115 "../../src/test/harness.h" 10136: namespace Harness { 10136: class NativeMutex { 10136: # 133 "../../src/test/harness.h" 10136: pthread_mutex_t m_mutex; 10136: public: 10136: NativeMutex() { 10136: pthread_mutex_init(&m_mutex, 10136: # 136 "../../src/test/harness.h" 3 4 10136: __null 10136: # 136 "../../src/test/harness.h" 10136: ); 10136: } 10136: void lock() { 10136: pthread_mutex_lock(&m_mutex); 10136: } 10136: void unlock() { 10136: pthread_mutex_unlock(&m_mutex); 10136: } 10136: ~NativeMutex() { 10136: pthread_mutex_destroy(&m_mutex); 10136: } 10136: 10136: }; 10136: namespace internal { 10136: static NativeMutex print_stack_mutex; 10136: } 10136: } 10136: 10136: # 1 "../../src/test/harness_runtime_loader.h" 1 10136: # 155 "../../src/test/harness.h" 2 10136: # 1 "../../src/test/harness_report.h" 1 10136: # 44 "../../src/test/harness_report.h" 10136: # 1 "/usr/include/c++/8/cstdio" 1 3 10136: # 39 "/usr/include/c++/8/cstdio" 3 10136: 10136: # 40 "/usr/include/c++/8/cstdio" 3 10136: 10136: 10136: # 1 "/usr/include/stdio.h" 1 3 4 10136: # 27 "/usr/include/stdio.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 10136: # 28 "/usr/include/stdio.h" 2 3 4 10136: 10136: 10136: # 29 "/usr/include/stdio.h" 3 4 10136: extern "C" { 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 34 "/usr/include/stdio.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h" 1 3 4 10136: 10136: 10136: 10136: struct _IO_FILE; 10136: typedef struct _IO_FILE __FILE; 10136: # 37 "/usr/include/stdio.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/FILE.h" 1 3 4 10136: 10136: 10136: 10136: struct _IO_FILE; 10136: 10136: 10136: typedef struct _IO_FILE FILE; 10136: # 38 "/usr/include/stdio.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/libio.h" 1 3 4 10136: # 31 "/usr/include/libio.h" 3 4 10136: # 1 "/usr/include/_G_config.h" 1 3 4 10136: # 15 "/usr/include/_G_config.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 16 "/usr/include/_G_config.h" 2 3 4 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 1 3 4 10136: # 13 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 3 4 10136: typedef struct 10136: { 10136: int __count; 10136: union 10136: { 10136: unsigned int __wch; 10136: char __wchb[4]; 10136: } __value; 10136: } __mbstate_t; 10136: # 18 "/usr/include/_G_config.h" 2 3 4 10136: 10136: 10136: 10136: 10136: typedef struct 10136: { 10136: __off_t __pos; 10136: __mbstate_t __state; 10136: } _G_fpos_t; 10136: typedef struct 10136: { 10136: __off64_t __pos; 10136: __mbstate_t __state; 10136: } _G_fpos64_t; 10136: # 32 "/usr/include/libio.h" 2 3 4 10136: # 49 "/usr/include/libio.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h" 1 3 4 10136: # 40 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h" 3 4 10136: typedef __builtin_va_list __gnuc_va_list; 10136: # 50 "/usr/include/libio.h" 2 3 4 10136: # 145 "/usr/include/libio.h" 3 4 10136: struct _IO_jump_t; struct _IO_FILE; 10136: 10136: 10136: 10136: 10136: typedef void _IO_lock_t; 10136: 10136: 10136: 10136: 10136: 10136: struct _IO_marker { 10136: struct _IO_marker *_next; 10136: struct _IO_FILE *_sbuf; 10136: 10136: 10136: 10136: int _pos; 10136: # 173 "/usr/include/libio.h" 3 4 10136: }; 10136: 10136: 10136: enum __codecvt_result 10136: { 10136: __codecvt_ok, 10136: __codecvt_partial, 10136: __codecvt_error, 10136: __codecvt_noconv 10136: }; 10136: # 241 "/usr/include/libio.h" 3 4 10136: struct _IO_FILE { 10136: int _flags; 10136: 10136: 10136: 10136: 10136: char* _IO_read_ptr; 10136: char* _IO_read_end; 10136: char* _IO_read_base; 10136: char* _IO_write_base; 10136: char* _IO_write_ptr; 10136: char* _IO_write_end; 10136: char* _IO_buf_base; 10136: char* _IO_buf_end; 10136: 10136: char *_IO_save_base; 10136: char *_IO_backup_base; 10136: char *_IO_save_end; 10136: 10136: struct _IO_marker *_markers; 10136: 10136: struct _IO_FILE *_chain; 10136: 10136: int _fileno; 10136: 10136: 10136: 10136: int _flags2; 10136: 10136: __off_t _old_offset; 10136: 10136: 10136: 10136: unsigned short _cur_column; 10136: signed char _vtable_offset; 10136: char _shortbuf[1]; 10136: 10136: 10136: 10136: _IO_lock_t *_lock; 10136: # 289 "/usr/include/libio.h" 3 4 10136: __off64_t _offset; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void *__pad1; 10136: void *__pad2; 10136: void *__pad3; 10136: void *__pad4; 10136: 10136: size_t __pad5; 10136: int _mode; 10136: 10136: char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: struct _IO_FILE_plus; 10136: 10136: extern struct _IO_FILE_plus _IO_2_1_stdin_; 10136: extern struct _IO_FILE_plus _IO_2_1_stdout_; 10136: extern struct _IO_FILE_plus _IO_2_1_stderr_; 10136: # 333 "/usr/include/libio.h" 3 4 10136: typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __ssize_t __io_write_fn (void *__cookie, const char *__buf, 10136: size_t __n); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); 10136: 10136: 10136: typedef int __io_close_fn (void *__cookie); 10136: 10136: 10136: 10136: 10136: typedef __io_read_fn cookie_read_function_t; 10136: typedef __io_write_fn cookie_write_function_t; 10136: typedef __io_seek_fn cookie_seek_function_t; 10136: typedef __io_close_fn cookie_close_function_t; 10136: 10136: 10136: typedef struct 10136: { 10136: __io_read_fn *read; 10136: __io_write_fn *write; 10136: __io_seek_fn *seek; 10136: __io_close_fn *close; 10136: } _IO_cookie_io_functions_t; 10136: typedef _IO_cookie_io_functions_t cookie_io_functions_t; 10136: 10136: struct _IO_cookie_file; 10136: 10136: 10136: extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, 10136: void *__cookie, _IO_cookie_io_functions_t __fns); 10136: 10136: 10136: 10136: 10136: extern "C" { 10136: 10136: 10136: extern int __underflow (_IO_FILE *); 10136: extern int __uflow (_IO_FILE *); 10136: extern int __overflow (_IO_FILE *, int); 10136: # 429 "/usr/include/libio.h" 3 4 10136: extern int _IO_getc (_IO_FILE *__fp); 10136: extern int _IO_putc (int __c, _IO_FILE *__fp); 10136: extern int _IO_feof (_IO_FILE *__fp) throw (); 10136: extern int _IO_ferror (_IO_FILE *__fp) throw (); 10136: 10136: extern int _IO_peekc_locked (_IO_FILE *__fp); 10136: 10136: 10136: 10136: 10136: 10136: extern void _IO_flockfile (_IO_FILE *) throw (); 10136: extern void _IO_funlockfile (_IO_FILE *) throw (); 10136: extern int _IO_ftrylockfile (_IO_FILE *) throw (); 10136: # 458 "/usr/include/libio.h" 3 4 10136: extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, 10136: __gnuc_va_list, int *__restrict); 10136: extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, 10136: __gnuc_va_list); 10136: extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t); 10136: extern size_t _IO_sgetn (_IO_FILE *, void *, size_t); 10136: 10136: extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int); 10136: extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int); 10136: 10136: extern void _IO_free_backup_area (_IO_FILE *) throw (); 10136: # 520 "/usr/include/libio.h" 3 4 10136: } 10136: # 42 "/usr/include/stdio.h" 2 3 4 10136: 10136: 10136: 10136: 10136: typedef __gnuc_va_list va_list; 10136: # 78 "/usr/include/stdio.h" 3 4 10136: typedef _G_fpos_t fpos_t; 10136: 10136: 10136: 10136: 10136: typedef _G_fpos64_t fpos64_t; 10136: # 131 "/usr/include/stdio.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 1 3 4 10136: # 132 "/usr/include/stdio.h" 2 3 4 10136: 10136: 10136: 10136: extern struct _IO_FILE *stdin; 10136: extern struct _IO_FILE *stdout; 10136: extern struct _IO_FILE *stderr; 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int remove (const char *__filename) throw (); 10136: 10136: extern int rename (const char *__old, const char *__new) throw (); 10136: 10136: 10136: 10136: extern int renameat (int __oldfd, const char *__old, int __newfd, 10136: const char *__new) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__)); 10136: # 169 "/usr/include/stdio.h" 3 4 10136: extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern char *tmpnam (char *__s) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern char *tmpnam_r (char *__s) throw () __attribute__ ((__warn_unused_result__)); 10136: # 190 "/usr/include/stdio.h" 3 4 10136: extern char *tempnam (const char *__dir, const char *__pfx) 10136: throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fclose (FILE *__stream); 10136: 10136: 10136: 10136: 10136: extern int fflush (FILE *__stream); 10136: # 213 "/usr/include/stdio.h" 3 4 10136: extern int fflush_unlocked (FILE *__stream); 10136: # 223 "/usr/include/stdio.h" 3 4 10136: extern int fcloseall (void); 10136: # 232 "/usr/include/stdio.h" 3 4 10136: extern FILE *fopen (const char *__restrict __filename, 10136: const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern FILE *freopen (const char *__restrict __filename, 10136: const char *__restrict __modes, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: # 256 "/usr/include/stdio.h" 3 4 10136: extern FILE *fopen64 (const char *__restrict __filename, 10136: const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); 10136: extern FILE *freopen64 (const char *__restrict __filename, 10136: const char *__restrict __modes, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern FILE *fdopen (int __fd, const char *__modes) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern FILE *fopencookie (void *__restrict __magic_cookie, 10136: const char *__restrict __modes, 10136: _IO_cookie_io_functions_t __io_funcs) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) 10136: throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw (); 10136: 10136: 10136: 10136: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 10136: int __modes, size_t __n) throw (); 10136: 10136: 10136: 10136: 10136: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 10136: size_t __size) throw (); 10136: 10136: 10136: extern void setlinebuf (FILE *__stream) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fprintf (FILE *__restrict __stream, 10136: const char *__restrict __format, ...); 10136: 10136: 10136: 10136: 10136: extern int printf (const char *__restrict __format, ...); 10136: 10136: extern int sprintf (char *__restrict __s, 10136: const char *__restrict __format, ...) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, 10136: __gnuc_va_list __arg); 10136: 10136: 10136: 10136: 10136: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); 10136: 10136: extern int vsprintf (char *__restrict __s, const char *__restrict __format, 10136: __gnuc_va_list __arg) throw (); 10136: 10136: 10136: 10136: extern int snprintf (char *__restrict __s, size_t __maxlen, 10136: const char *__restrict __format, ...) 10136: throw () __attribute__ ((__format__ (__printf__, 3, 4))); 10136: 10136: extern int vsnprintf (char *__restrict __s, size_t __maxlen, 10136: const char *__restrict __format, __gnuc_va_list __arg) 10136: throw () __attribute__ ((__format__ (__printf__, 3, 0))); 10136: 10136: 10136: 10136: 10136: 10136: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, 10136: __gnuc_va_list __arg) 10136: throw () __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 10136: extern int __asprintf (char **__restrict __ptr, 10136: const char *__restrict __fmt, ...) 10136: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 10136: extern int asprintf (char **__restrict __ptr, 10136: const char *__restrict __fmt, ...) 10136: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int vdprintf (int __fd, const char *__restrict __fmt, 10136: __gnuc_va_list __arg) 10136: __attribute__ ((__format__ (__printf__, 2, 0))); 10136: extern int dprintf (int __fd, const char *__restrict __fmt, ...) 10136: __attribute__ ((__format__ (__printf__, 2, 3))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fscanf (FILE *__restrict __stream, 10136: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 10136: 10136: extern int sscanf (const char *__restrict __s, 10136: const char *__restrict __format, ...) throw (); 10136: # 420 "/usr/include/stdio.h" 3 4 10136: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, 10136: __gnuc_va_list __arg) 10136: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) 10136: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: extern int vsscanf (const char *__restrict __s, 10136: const char *__restrict __format, __gnuc_va_list __arg) 10136: throw () __attribute__ ((__format__ (__scanf__, 2, 0))); 10136: # 477 "/usr/include/stdio.h" 3 4 10136: extern int fgetc (FILE *__stream); 10136: extern int getc (FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: extern int getchar (void); 10136: # 495 "/usr/include/stdio.h" 3 4 10136: extern int getc_unlocked (FILE *__stream); 10136: extern int getchar_unlocked (void); 10136: # 506 "/usr/include/stdio.h" 3 4 10136: extern int fgetc_unlocked (FILE *__stream); 10136: # 517 "/usr/include/stdio.h" 3 4 10136: extern int fputc (int __c, FILE *__stream); 10136: extern int putc (int __c, FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: extern int putchar (int __c); 10136: # 537 "/usr/include/stdio.h" 3 4 10136: extern int fputc_unlocked (int __c, FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int putc_unlocked (int __c, FILE *__stream); 10136: extern int putchar_unlocked (int __c); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int getw (FILE *__stream); 10136: 10136: 10136: extern int putw (int __w, FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 10136: __attribute__ ((__warn_unused_result__)); 10136: # 587 "/usr/include/stdio.h" 3 4 10136: extern char *fgets_unlocked (char *__restrict __s, int __n, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: # 603 "/usr/include/stdio.h" 3 4 10136: extern __ssize_t __getdelim (char **__restrict __lineptr, 10136: size_t *__restrict __n, int __delimiter, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: extern __ssize_t getdelim (char **__restrict __lineptr, 10136: size_t *__restrict __n, int __delimiter, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __ssize_t getline (char **__restrict __lineptr, 10136: size_t *__restrict __n, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fputs (const char *__restrict __s, FILE *__restrict __stream); 10136: 10136: 10136: 10136: 10136: 10136: extern int puts (const char *__s); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int ungetc (int __c, FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern size_t fread (void *__restrict __ptr, size_t __size, 10136: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern size_t fwrite (const void *__restrict __ptr, size_t __size, 10136: size_t __n, FILE *__restrict __s); 10136: # 662 "/usr/include/stdio.h" 3 4 10136: extern int fputs_unlocked (const char *__restrict __s, 10136: FILE *__restrict __stream); 10136: # 673 "/usr/include/stdio.h" 3 4 10136: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 10136: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, 10136: size_t __n, FILE *__restrict __stream); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fseek (FILE *__stream, long int __off, int __whence); 10136: 10136: 10136: 10136: 10136: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern void rewind (FILE *__stream); 10136: # 707 "/usr/include/stdio.h" 3 4 10136: extern int fseeko (FILE *__stream, __off_t __off, int __whence); 10136: 10136: 10136: 10136: 10136: extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__)); 10136: # 731 "/usr/include/stdio.h" 3 4 10136: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); 10136: 10136: 10136: 10136: 10136: extern int fsetpos (FILE *__stream, const fpos_t *__pos); 10136: # 750 "/usr/include/stdio.h" 3 4 10136: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); 10136: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); 10136: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); 10136: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); 10136: 10136: 10136: 10136: extern void clearerr (FILE *__stream) throw (); 10136: 10136: extern int feof (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: extern int ferror (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern void clearerr_unlocked (FILE *__stream) throw (); 10136: extern int feof_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 10136: extern int ferror_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern void perror (const char *__s); 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h" 1 3 4 10136: # 26 "/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h" 3 4 10136: extern int sys_nerr; 10136: extern const char *const sys_errlist[]; 10136: 10136: 10136: extern int _sys_nerr; 10136: extern const char *const _sys_errlist[]; 10136: # 782 "/usr/include/stdio.h" 2 3 4 10136: 10136: 10136: 10136: 10136: extern int fileno (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int fileno_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 10136: # 800 "/usr/include/stdio.h" 3 4 10136: extern FILE *popen (const char *__command, const char *__modes) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern int pclose (FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: extern char *ctermid (char *__s) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern char *cuserid (char *__s); 10136: 10136: 10136: 10136: 10136: struct obstack; 10136: 10136: 10136: extern int obstack_printf (struct obstack *__restrict __obstack, 10136: const char *__restrict __format, ...) 10136: throw () __attribute__ ((__format__ (__printf__, 2, 3))); 10136: extern int obstack_vprintf (struct obstack *__restrict __obstack, 10136: const char *__restrict __format, 10136: __gnuc_va_list __args) 10136: throw () __attribute__ ((__format__ (__printf__, 2, 0))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern void flockfile (FILE *__stream) throw (); 10136: 10136: 10136: 10136: extern int ftrylockfile (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: extern void funlockfile (FILE *__stream) throw (); 10136: # 859 "/usr/include/stdio.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 1 3 4 10136: # 43 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: getchar (void) 10136: { 10136: return _IO_getc (stdin); 10136: } 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: fgetc_unlocked (FILE *__fp) 10136: { 10136: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: getc_unlocked (FILE *__fp) 10136: { 10136: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 10136: } 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: getchar_unlocked (void) 10136: { 10136: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 10136: } 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: putchar (int __c) 10136: { 10136: return _IO_putc (__c, stdout); 10136: } 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: fputc_unlocked (int __c, FILE *__stream) 10136: { 10136: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: putc_unlocked (int __c, FILE *__stream) 10136: { 10136: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 10136: } 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: putchar_unlocked (int __c) 10136: { 10136: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t 10136: getline (char **__lineptr, size_t *__n, FILE *__stream) 10136: { 10136: return __getdelim (__lineptr, __n, '\n', __stream); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) throw () 10136: { 10136: return (((__stream)->_flags & 0x10) != 0); 10136: } 10136: 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) throw () 10136: { 10136: return (((__stream)->_flags & 0x20) != 0); 10136: } 10136: # 860 "/usr/include/stdio.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 1 3 4 10136: # 23 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 10136: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, 10136: const char *__restrict __format, ...) throw (); 10136: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, 10136: const char *__restrict __format, 10136: __gnuc_va_list __ap) throw (); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) throw () 10136: { 10136: return __builtin___sprintf_chk (__s, 2 - 1, 10136: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 10136: 10136: { 10136: return __builtin___vsprintf_chk (__s, 2 - 1, 10136: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 10136: } 10136: 10136: 10136: 10136: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, 10136: size_t __slen, const char *__restrict __format, 10136: ...) throw (); 10136: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, 10136: size_t __slen, const char *__restrict __format, 10136: __gnuc_va_list __ap) throw (); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) throw () 10136: 10136: { 10136: return __builtin___snprintf_chk (__s, __n, 2 - 1, 10136: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 10136: 10136: { 10136: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, 10136: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, 10136: const char *__restrict __format, ...); 10136: extern int __printf_chk (int __flag, const char *__restrict __format, ...); 10136: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, 10136: const char *__restrict __format, __gnuc_va_list __ap); 10136: extern int __vprintf_chk (int __flag, const char *__restrict __format, 10136: __gnuc_va_list __ap); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) 10136: { 10136: return __fprintf_chk (__stream, 2 - 1, __fmt, 10136: __builtin_va_arg_pack ()); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: printf (const char *__restrict __fmt, ...) 10136: { 10136: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: vprintf (const char *__restrict __fmt, __gnuc_va_list __ap) 10136: { 10136: 10136: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); 10136: 10136: 10136: 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: vfprintf (FILE *__restrict __stream, 10136: const char *__restrict __fmt, __gnuc_va_list __ap) 10136: { 10136: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); 10136: } 10136: 10136: 10136: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, 10136: ...) __attribute__ ((__format__ (__printf__, 3, 4))); 10136: extern int __vdprintf_chk (int __fd, int __flag, 10136: const char *__restrict __fmt, __gnuc_va_list __arg) 10136: __attribute__ ((__format__ (__printf__, 3, 0))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: dprintf (int __fd, const char *__restrict __fmt, ...) 10136: { 10136: return __dprintf_chk (__fd, 2 - 1, __fmt, 10136: __builtin_va_arg_pack ()); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) 10136: { 10136: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); 10136: } 10136: 10136: 10136: 10136: 10136: extern int __asprintf_chk (char **__restrict __ptr, int __flag, 10136: const char *__restrict __fmt, ...) 10136: throw () __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); 10136: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, 10136: const char *__restrict __fmt, __gnuc_va_list __arg) 10136: throw () __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); 10136: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, 10136: int __flag, const char *__restrict __format, 10136: ...) 10136: throw () __attribute__ ((__format__ (__printf__, 3, 4))); 10136: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, 10136: int __flag, 10136: const char *__restrict __format, 10136: __gnuc_va_list __args) 10136: throw () __attribute__ ((__format__ (__printf__, 3, 0))); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () 10136: { 10136: return __asprintf_chk (__ptr, 2 - 1, __fmt, 10136: __builtin_va_arg_pack ()); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () 10136: 10136: { 10136: return __asprintf_chk (__ptr, 2 - 1, __fmt, 10136: __builtin_va_arg_pack ()); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) throw () 10136: 10136: { 10136: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, 10136: __builtin_va_arg_pack ()); 10136: } 10136: # 206 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 10136: 10136: { 10136: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 10136: 10136: { 10136: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, 10136: __ap); 10136: } 10136: # 240 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 10136: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 10136: fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 10136: { 10136: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n) || __n <= 0) 10136: return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 10136: 10136: if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) 10136: return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 10136: } 10136: return __fgets_alias (__s, __n, __stream); 10136: } 10136: 10136: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, 10136: size_t __size, size_t __n, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") 10136: 10136: 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 10136: fread (void *__restrict __ptr, size_t __size, size_t __n, 10136: FILE *__restrict __stream) 10136: { 10136: if (__builtin_object_size (__ptr, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__size) 10136: || !__builtin_constant_p (__n) 10136: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) 10136: return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); 10136: 10136: if (__size * __n > __builtin_object_size (__ptr, 0)) 10136: return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); 10136: } 10136: return __fread_alias (__ptr, __size, __n, __stream); 10136: } 10136: 10136: 10136: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, 10136: int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 10136: fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) 10136: { 10136: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n) || __n <= 0) 10136: return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 10136: 10136: if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) 10136: return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 10136: } 10136: return __fgets_unlocked_alias (__s, __n, __stream); 10136: } 10136: 10136: 10136: 10136: 10136: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, 10136: size_t __size, size_t __n, 10136: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk") 10136: 10136: 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 10136: fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, 10136: FILE *__restrict __stream) 10136: { 10136: if (__builtin_object_size (__ptr, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__size) 10136: || !__builtin_constant_p (__n) 10136: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) 10136: return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, 10136: __stream); 10136: 10136: if (__size * __n > __builtin_object_size (__ptr, 0)) 10136: return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, 10136: __stream); 10136: } 10136: 10136: 10136: if (__builtin_constant_p (__size) 10136: && __builtin_constant_p (__n) 10136: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) 10136: && __size * __n <= 8) 10136: { 10136: size_t __cnt = __size * __n; 10136: char *__cptr = (char *) __ptr; 10136: if (__cnt == 0) 10136: return 0; 10136: 10136: for (; __cnt > 0; --__cnt) 10136: { 10136: int __c = (__builtin_expect (((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++); 10136: if (__c == (-1)) 10136: break; 10136: *__cptr++ = __c; 10136: } 10136: return (__cptr - (char *) __ptr) / __size; 10136: } 10136: 10136: return __fread_unlocked_alias (__ptr, __size, __n, __stream); 10136: } 10136: # 863 "/usr/include/stdio.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: } 10136: # 43 "/usr/include/c++/8/cstdio" 2 3 10136: # 96 "/usr/include/c++/8/cstdio" 3 10136: namespace std 10136: { 10136: using ::FILE; 10136: using ::fpos_t; 10136: 10136: using ::clearerr; 10136: using ::fclose; 10136: using ::feof; 10136: using ::ferror; 10136: using ::fflush; 10136: using ::fgetc; 10136: using ::fgetpos; 10136: using ::fgets; 10136: using ::fopen; 10136: using ::fprintf; 10136: using ::fputc; 10136: using ::fputs; 10136: using ::fread; 10136: using ::freopen; 10136: using ::fscanf; 10136: using ::fseek; 10136: using ::fsetpos; 10136: using ::ftell; 10136: using ::fwrite; 10136: using ::getc; 10136: using ::getchar; 10136: 10136: 10136: 10136: 10136: using ::perror; 10136: using ::printf; 10136: using ::putc; 10136: using ::putchar; 10136: using ::puts; 10136: using ::remove; 10136: using ::rename; 10136: using ::rewind; 10136: using ::scanf; 10136: using ::setbuf; 10136: using ::setvbuf; 10136: using ::sprintf; 10136: using ::sscanf; 10136: using ::tmpfile; 10136: 10136: using ::tmpnam; 10136: 10136: using ::ungetc; 10136: using ::vfprintf; 10136: using ::vprintf; 10136: using ::vsprintf; 10136: } 10136: # 157 "/usr/include/c++/8/cstdio" 3 10136: namespace __gnu_cxx 10136: { 10136: # 175 "/usr/include/c++/8/cstdio" 3 10136: using ::snprintf; 10136: using ::vfscanf; 10136: using ::vscanf; 10136: using ::vsnprintf; 10136: using ::vsscanf; 10136: 10136: } 10136: 10136: namespace std 10136: { 10136: using ::__gnu_cxx::snprintf; 10136: using ::__gnu_cxx::vfscanf; 10136: using ::__gnu_cxx::vscanf; 10136: using ::__gnu_cxx::vsnprintf; 10136: using ::__gnu_cxx::vsscanf; 10136: } 10136: # 45 "../../src/test/harness_report.h" 2 10136: 10136: 10136: # 1 "/usr/include/c++/8/cstdarg" 1 3 10136: # 39 "/usr/include/c++/8/cstdarg" 3 10136: 10136: # 40 "/usr/include/c++/8/cstdarg" 3 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h" 1 3 4 10136: # 44 "/usr/include/c++/8/cstdarg" 2 3 10136: # 53 "/usr/include/c++/8/cstdarg" 3 10136: namespace std 10136: { 10136: using ::va_list; 10136: } 10136: # 48 "../../src/test/harness_report.h" 2 10136: # 67 "../../src/test/harness_report.h" 10136: 10136: # 67 "../../src/test/harness_report.h" 10136: namespace Harness { 10136: namespace internal { 10136: 10136: 10136: struct TbbHarnessReporter { 10136: void Report ( const char* msg ) { 10136: printf( "%s", msg ); 10136: fflush( 10136: # 74 "../../src/test/harness_report.h" 3 4 10136: stdout 10136: # 74 "../../src/test/harness_report.h" 10136: ); 10136: 10136: 10136: 10136: } 10136: }; 10136: 10136: 10136: class Tracer { 10136: int m_flags; 10136: const char *m_file; 10136: const char *m_func; 10136: size_t m_line; 10136: 10136: TbbHarnessReporter m_reporter; 10136: 10136: public: 10136: enum { 10136: prefix = 1, 10136: need_lf = 2 10136: }; 10136: 10136: Tracer(): m_flags(0), m_file( 10136: # 96 "../../src/test/harness_report.h" 3 4 10136: __null 10136: # 96 "../../src/test/harness_report.h" 10136: ), m_func( 10136: # 96 "../../src/test/harness_report.h" 3 4 10136: __null 10136: # 96 "../../src/test/harness_report.h" 10136: ), m_line(0) {} 10136: 10136: Tracer* set_trace_info ( int flags, const char *file, size_t line, const char *func ) { 10136: m_flags = flags; 10136: m_line = line; 10136: m_file = file; 10136: m_func = func; 10136: return this; 10136: } 10136: 10136: void trace ( const char* fmt, ... ) { 10136: char msg[1024]; 10136: char msg_fmt_buf[1024]; 10136: const char *msg_fmt = fmt; 10136: if ( m_flags & prefix ) { 10136: snprintf (msg_fmt_buf, 1024, "[%s] %s", m_func, fmt); 10136: msg_fmt = msg_fmt_buf; 10136: } 10136: std::va_list argptr; 10136: 10136: # 115 "../../src/test/harness_report.h" 3 4 10136: __builtin_va_start( 10136: # 115 "../../src/test/harness_report.h" 10136: argptr 10136: # 115 "../../src/test/harness_report.h" 3 4 10136: , 10136: # 115 "../../src/test/harness_report.h" 10136: fmt 10136: # 115 "../../src/test/harness_report.h" 3 4 10136: ) 10136: # 115 "../../src/test/harness_report.h" 10136: ; 10136: int len = vsnprintf (msg, 1024, msg_fmt, argptr); 10136: 10136: # 117 "../../src/test/harness_report.h" 3 4 10136: __builtin_va_end( 10136: # 117 "../../src/test/harness_report.h" 10136: argptr 10136: # 117 "../../src/test/harness_report.h" 3 4 10136: ) 10136: # 117 "../../src/test/harness_report.h" 10136: ; 10136: if ( m_flags & need_lf && 10136: len < 1024 - 1 && msg_fmt[len-1] != '\n' ) 10136: { 10136: msg[len] = '\n'; 10136: msg[len + 1] = 0; 10136: } 10136: m_reporter.Report(msg); 10136: } 10136: }; 10136: 10136: static Tracer tracer; 10136: 10136: template 10136: bool not_the_first_call () { 10136: static bool first_call = false; 10136: bool res = first_call; 10136: first_call = true; 10136: return res; 10136: } 10136: 10136: } 10136: } 10136: # 156 "../../src/test/harness.h" 2 10136: 10136: 10136: void print_call_stack() { 10136: Harness::internal::print_stack_mutex.lock(); 10136: fflush( 10136: # 160 "../../src/test/harness.h" 3 4 10136: stdout 10136: # 160 "../../src/test/harness.h" 10136: ); fflush( 10136: # 160 "../../src/test/harness.h" 3 4 10136: stderr 10136: # 160 "../../src/test/harness.h" 10136: ); 10136: 10136: const int sz = 100; 10136: void *buff[sz]; 10136: int n = backtrace(buff, sz); 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 165, __FUNCTION__)->trace("Call stack info (%d):\n", n); 10136: backtrace_symbols_fd(buff, n, fileno( 10136: # 166 "../../src/test/harness.h" 3 4 10136: stdout 10136: # 166 "../../src/test/harness.h" 10136: )); 10136: # 190 "../../src/test/harness.h" 10136: Harness::internal::print_stack_mutex.unlock(); 10136: } 10136: 10136: 10136: 10136: # 1 "../../src/test/harness_assert.h" 1 10136: # 30 "../../src/test/harness_assert.h" 10136: void ReportError( const char* filename, int line, const char* expression, const char* message); 10136: void ReportWarning( const char* filename, int line, const char* expression, const char* message); 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void AssertSameType( const T& , const T& ) {} 10136: # 196 "../../src/test/harness.h" 2 10136: 10136: # 1 "../../include/tbb/tbb_stddef.h" 1 10136: # 95 "../../include/tbb/tbb_stddef.h" 10136: # 1 "../../include/tbb/tbb_config.h" 1 10136: # 96 "../../include/tbb/tbb_stddef.h" 2 10136: # 119 "../../include/tbb/tbb_stddef.h" 10136: # 1 "/usr/include/c++/8/cstddef" 1 3 10136: # 42 "/usr/include/c++/8/cstddef" 3 10136: 10136: # 43 "/usr/include/c++/8/cstddef" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 51 "/usr/include/c++/8/cstddef" 2 3 10136: 10136: 10136: 10136: # 53 "/usr/include/c++/8/cstddef" 3 10136: namespace std 10136: { 10136: 10136: using ::max_align_t; 10136: } 10136: # 120 "../../include/tbb/tbb_stddef.h" 2 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdint.h" 1 3 4 10136: # 9 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdint.h" 3 4 10136: # 1 "/usr/include/stdint.h" 1 3 4 10136: # 26 "/usr/include/stdint.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 10136: # 27 "/usr/include/stdint.h" 2 3 4 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 1 3 4 10136: # 29 "/usr/include/stdint.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 10136: # 30 "/usr/include/stdint.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 3 4 10136: typedef __uint8_t uint8_t; 10136: typedef __uint16_t uint16_t; 10136: typedef __uint32_t uint32_t; 10136: typedef __uint64_t uint64_t; 10136: # 38 "/usr/include/stdint.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: typedef signed char int_least8_t; 10136: typedef short int int_least16_t; 10136: typedef int int_least32_t; 10136: 10136: 10136: 10136: __extension__ 10136: typedef long long int int_least64_t; 10136: 10136: 10136: 10136: typedef unsigned char uint_least8_t; 10136: typedef unsigned short int uint_least16_t; 10136: typedef unsigned int uint_least32_t; 10136: 10136: 10136: 10136: __extension__ 10136: typedef unsigned long long int uint_least64_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef signed char int_fast8_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef int int_fast16_t; 10136: typedef int int_fast32_t; 10136: __extension__ 10136: typedef long long int int_fast64_t; 10136: 10136: 10136: 10136: typedef unsigned char uint_fast8_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef unsigned int uint_fast16_t; 10136: typedef unsigned int uint_fast32_t; 10136: __extension__ 10136: typedef unsigned long long int uint_fast64_t; 10136: # 103 "/usr/include/stdint.h" 3 4 10136: typedef int intptr_t; 10136: 10136: 10136: typedef unsigned int uintptr_t; 10136: 10136: 10136: 10136: 10136: typedef __intmax_t intmax_t; 10136: typedef __uintmax_t uintmax_t; 10136: # 10 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stdint.h" 2 3 4 10136: # 128 "../../include/tbb/tbb_stddef.h" 2 10136: 10136: 10136: 10136: 10136: # 131 "../../include/tbb/tbb_stddef.h" 10136: typedef void(*assertion_handler_type)( const char* filename, int line, const char* expression, const char * comment ); 10136: 10136: 10136: 10136: 10136: 10136: namespace tbb { 10136: 10136: 10136: 10136: 10136: assertion_handler_type set_assertion_handler( assertion_handler_type new_handler ); 10136: 10136: 10136: 10136: 10136: 10136: void assertion_failure( const char* filename, int line, const char* expression, const char* comment ); 10136: 10136: 10136: 10136: 10136: } 10136: # 176 "../../include/tbb/tbb_stddef.h" 10136: namespace tbb { 10136: 10136: namespace internal { 10136: # 189 "../../include/tbb/tbb_stddef.h" 10136: using ::int8_t; 10136: using ::int16_t; 10136: using ::int32_t; 10136: using ::int64_t; 10136: using ::uint8_t; 10136: using ::uint16_t; 10136: using ::uint32_t; 10136: using ::uint64_t; 10136: 10136: } 10136: 10136: using std::size_t; 10136: using std::ptrdiff_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C" int TBB_runtime_interface_version(); 10136: 10136: 10136: 10136: 10136: 10136: namespace internal { 10136: 10136: 10136: 10136: 10136: 10136: const size_t NFS_MaxLineSize = 128; 10136: # 249 "../../include/tbb/tbb_stddef.h" 10136: template 10136: struct padded_base : T { 10136: char pad[S - R]; 10136: }; 10136: template struct padded_base : T {}; 10136: 10136: 10136: template 10136: struct padded : padded_base {}; 10136: # 270 "../../include/tbb/tbb_stddef.h" 10136: void handle_perror( int error_code, const char* aux_info ); 10136: # 286 "../../include/tbb/tbb_stddef.h" 10136: void runtime_warning( const char* format, ... ); 10136: 10136: 10136: static void* const poisoned_ptr = reinterpret_cast(-1); 10136: 10136: 10136: 10136: template 10136: inline void poison_pointer( T* & p ) { p = reinterpret_cast(poisoned_ptr); } 10136: 10136: 10136: template 10136: inline bool is_poisoned( T* p ) { return p == reinterpret_cast(poisoned_ptr); } 10136: # 309 "../../include/tbb/tbb_stddef.h" 10136: template 10136: inline T punned_cast( U* ptr ) { 10136: uintptr_t x = reinterpret_cast(ptr); 10136: return reinterpret_cast(x); 10136: } 10136: 10136: 10136: class no_assign { 10136: 10136: void operator=( const no_assign& ); 10136: public: 10136: 10136: 10136: no_assign() {} 10136: 10136: }; 10136: 10136: 10136: class no_copy: no_assign { 10136: 10136: no_copy( const no_copy& ); 10136: public: 10136: 10136: no_copy() {} 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: class mutex_copy_deprecated_and_disabled : no_copy {}; 10136: 10136: 10136: 10136: template 10136: inline bool is_aligned(T* pointer, uintptr_t alignment) { 10136: return 0==((uintptr_t)pointer & (alignment-1)); 10136: } 10136: 10136: 10136: template 10136: inline bool is_power_of_two(integer_type arg) { 10136: return arg && (0 == (arg & (arg - 1))); 10136: } 10136: 10136: 10136: template 10136: inline argument_integer_type modulo_power_of_two(argument_integer_type arg, divisor_integer_type divisor) { 10136: ((is_power_of_two(divisor))?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_stddef.h",358,"is_power_of_two(divisor)","Divisor should be a power of two")); 10136: return (arg & (divisor - 1)); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool is_power_of_two_at_least(argument_integer_type arg, power2_integer_type power2) { 10136: ((is_power_of_two(power2))?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_stddef.h",368,"is_power_of_two(power2)","Divisor should be a power of two")); 10136: return 0 == (arg & (arg - power2)); 10136: } 10136: 10136: 10136: template void suppress_unused_warning( const T1& ) {} 10136: template void suppress_unused_warning( const T1&, const T2& ) {} 10136: template void suppress_unused_warning( const T1&, const T2&, const T3& ) {} 10136: 10136: 10136: 10136: 10136: struct version_tag_v3 {}; 10136: 10136: typedef version_tag_v3 version_tag; 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: class split { 10136: }; 10136: # 401 "../../include/tbb/tbb_stddef.h" 10136: class proportional_split: internal::no_assign { 10136: public: 10136: proportional_split(size_t _left = 1, size_t _right = 1) : my_left(_left), my_right(_right) { } 10136: 10136: size_t left() const { return my_left; } 10136: size_t right() const { return my_right; } 10136: 10136: 10136: operator split() const { return split(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: private: 10136: size_t my_left, my_right; 10136: }; 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/memory" 1 3 10136: # 46 "/usr/include/c++/8/memory" 3 10136: 10136: # 47 "/usr/include/c++/8/memory" 3 10136: # 62 "/usr/include/c++/8/memory" 3 10136: # 1 "/usr/include/c++/8/bits/stl_algobase.h" 1 3 10136: # 60 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: # 1 "/usr/include/c++/8/bits/functexcept.h" 1 3 10136: # 42 "/usr/include/c++/8/bits/functexcept.h" 3 10136: 10136: # 42 "/usr/include/c++/8/bits/functexcept.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: void 10136: __throw_bad_exception(void) __attribute__((__noreturn__)); 10136: 10136: 10136: void 10136: __throw_bad_alloc(void) __attribute__((__noreturn__)); 10136: 10136: 10136: void 10136: __throw_bad_cast(void) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_bad_typeid(void) __attribute__((__noreturn__)); 10136: 10136: 10136: void 10136: __throw_logic_error(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_domain_error(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_invalid_argument(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_length_error(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_out_of_range(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__)) 10136: __attribute__((__format__(__gnu_printf__, 1, 2))); 10136: 10136: void 10136: __throw_runtime_error(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_range_error(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_overflow_error(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_underflow_error(const char*) __attribute__((__noreturn__)); 10136: 10136: 10136: void 10136: __throw_ios_failure(const char*) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_system_error(int) __attribute__((__noreturn__)); 10136: 10136: void 10136: __throw_future_error(int) __attribute__((__noreturn__)); 10136: 10136: 10136: void 10136: __throw_bad_function_call() __attribute__((__noreturn__)); 10136: 10136: 10136: } 10136: # 61 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/cpp_type_traits.h" 1 3 10136: # 35 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 10136: 10136: # 36 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 10136: # 67 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 10136: extern "C++" { 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: struct __true_type { }; 10136: struct __false_type { }; 10136: 10136: template 10136: struct __truth_type 10136: { typedef __false_type __type; }; 10136: 10136: template<> 10136: struct __truth_type 10136: { typedef __true_type __type; }; 10136: 10136: 10136: 10136: template 10136: struct __traitor 10136: { 10136: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; 10136: typedef typename __truth_type<__value>::__type __type; 10136: }; 10136: 10136: 10136: template 10136: struct __are_same 10136: { 10136: enum { __value = 0 }; 10136: typedef __false_type __type; 10136: }; 10136: 10136: template 10136: struct __are_same<_Tp, _Tp> 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: template 10136: struct __is_void 10136: { 10136: enum { __value = 0 }; 10136: typedef __false_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_void 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_integer 10136: { 10136: enum { __value = 0 }; 10136: typedef __false_type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_integer 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: # 278 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 10136: template 10136: struct __is_floating 10136: { 10136: enum { __value = 0 }; 10136: typedef __false_type __type; 10136: }; 10136: 10136: 10136: template<> 10136: struct __is_floating 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_floating 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_floating 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_pointer 10136: { 10136: enum { __value = 0 }; 10136: typedef __false_type __type; 10136: }; 10136: 10136: template 10136: struct __is_pointer<_Tp*> 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_arithmetic 10136: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > 10136: { }; 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_scalar 10136: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > 10136: { }; 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_char 10136: { 10136: enum { __value = 0 }; 10136: typedef __false_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_char 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: template<> 10136: struct __is_char 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: template 10136: struct __is_byte 10136: { 10136: enum { __value = 0 }; 10136: typedef __false_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_byte 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_byte 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template<> 10136: struct __is_byte 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_move_iterator 10136: { 10136: enum { __value = 0 }; 10136: typedef __false_type __type; 10136: }; 10136: 10136: 10136: 10136: template 10136: inline _Iterator 10136: __miter_base(_Iterator __it) 10136: { return __it; } 10136: 10136: 10136: } 10136: } 10136: # 62 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: # 1 "/usr/include/c++/8/ext/type_traits.h" 1 3 10136: # 32 "/usr/include/c++/8/ext/type_traits.h" 3 10136: 10136: # 33 "/usr/include/c++/8/ext/type_traits.h" 3 10136: 10136: 10136: 10136: 10136: extern "C++" { 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: template 10136: struct __enable_if 10136: { }; 10136: 10136: template 10136: struct __enable_if 10136: { typedef _Tp __type; }; 10136: 10136: 10136: 10136: template 10136: struct __conditional_type 10136: { typedef _Iftrue __type; }; 10136: 10136: template 10136: struct __conditional_type 10136: { typedef _Iffalse __type; }; 10136: 10136: 10136: 10136: template 10136: struct __add_unsigned 10136: { 10136: private: 10136: typedef __enable_if::__value, _Tp> __if_type; 10136: 10136: public: 10136: typedef typename __if_type::__type __type; 10136: }; 10136: 10136: template<> 10136: struct __add_unsigned 10136: { typedef unsigned char __type; }; 10136: 10136: template<> 10136: struct __add_unsigned 10136: { typedef unsigned char __type; }; 10136: 10136: template<> 10136: struct __add_unsigned 10136: { typedef unsigned short __type; }; 10136: 10136: template<> 10136: struct __add_unsigned 10136: { typedef unsigned int __type; }; 10136: 10136: template<> 10136: struct __add_unsigned 10136: { typedef unsigned long __type; }; 10136: 10136: template<> 10136: struct __add_unsigned 10136: { typedef unsigned long long __type; }; 10136: 10136: 10136: template<> 10136: struct __add_unsigned; 10136: 10136: template<> 10136: struct __add_unsigned; 10136: 10136: 10136: 10136: template 10136: struct __remove_unsigned 10136: { 10136: private: 10136: typedef __enable_if::__value, _Tp> __if_type; 10136: 10136: public: 10136: typedef typename __if_type::__type __type; 10136: }; 10136: 10136: template<> 10136: struct __remove_unsigned 10136: { typedef signed char __type; }; 10136: 10136: template<> 10136: struct __remove_unsigned 10136: { typedef signed char __type; }; 10136: 10136: template<> 10136: struct __remove_unsigned 10136: { typedef short __type; }; 10136: 10136: template<> 10136: struct __remove_unsigned 10136: { typedef int __type; }; 10136: 10136: template<> 10136: struct __remove_unsigned 10136: { typedef long __type; }; 10136: 10136: template<> 10136: struct __remove_unsigned 10136: { typedef long long __type; }; 10136: 10136: 10136: template<> 10136: struct __remove_unsigned; 10136: 10136: template<> 10136: struct __remove_unsigned; 10136: 10136: 10136: 10136: template 10136: inline bool 10136: __is_null_pointer(_Type* __ptr) 10136: { return __ptr == 0; } 10136: 10136: template 10136: inline bool 10136: __is_null_pointer(_Type) 10136: { return false; } 10136: 10136: 10136: inline bool 10136: __is_null_pointer(std::nullptr_t) 10136: { return true; } 10136: 10136: 10136: 10136: template::__value> 10136: struct __promote 10136: { typedef double __type; }; 10136: 10136: 10136: 10136: 10136: template 10136: struct __promote<_Tp, false> 10136: { }; 10136: 10136: template<> 10136: struct __promote 10136: { typedef long double __type; }; 10136: 10136: template<> 10136: struct __promote 10136: { typedef double __type; }; 10136: 10136: template<> 10136: struct __promote 10136: { typedef float __type; }; 10136: 10136: template::__type, 10136: typename _Up2 = typename __promote<_Up>::__type> 10136: struct __promote_2 10136: { 10136: typedef __typeof__(_Tp2() + _Up2()) __type; 10136: }; 10136: 10136: template::__type, 10136: typename _Up2 = typename __promote<_Up>::__type, 10136: typename _Vp2 = typename __promote<_Vp>::__type> 10136: struct __promote_3 10136: { 10136: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; 10136: }; 10136: 10136: template::__type, 10136: typename _Up2 = typename __promote<_Up>::__type, 10136: typename _Vp2 = typename __promote<_Vp>::__type, 10136: typename _Wp2 = typename __promote<_Wp>::__type> 10136: struct __promote_4 10136: { 10136: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; 10136: }; 10136: 10136: 10136: } 10136: } 10136: # 63 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: # 1 "/usr/include/c++/8/ext/numeric_traits.h" 1 3 10136: # 32 "/usr/include/c++/8/ext/numeric_traits.h" 3 10136: 10136: # 33 "/usr/include/c++/8/ext/numeric_traits.h" 3 10136: 10136: 10136: 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 54 "/usr/include/c++/8/ext/numeric_traits.h" 3 10136: template 10136: struct __numeric_traits_integer 10136: { 10136: 10136: static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0); 10136: static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0); 10136: 10136: 10136: 10136: static const bool __is_signed = ((_Value)(-1) < 0); 10136: static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0)); 10136: }; 10136: 10136: template 10136: const _Value __numeric_traits_integer<_Value>::__min; 10136: 10136: template 10136: const _Value __numeric_traits_integer<_Value>::__max; 10136: 10136: template 10136: const bool __numeric_traits_integer<_Value>::__is_signed; 10136: 10136: template 10136: const int __numeric_traits_integer<_Value>::__digits; 10136: # 99 "/usr/include/c++/8/ext/numeric_traits.h" 3 10136: template 10136: struct __numeric_traits_floating 10136: { 10136: 10136: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 643L / 2136); 10136: 10136: 10136: static const bool __is_signed = true; 10136: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15); 10136: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308); 10136: }; 10136: 10136: template 10136: const int __numeric_traits_floating<_Value>::__max_digits10; 10136: 10136: template 10136: const bool __numeric_traits_floating<_Value>::__is_signed; 10136: 10136: template 10136: const int __numeric_traits_floating<_Value>::__digits10; 10136: 10136: template 10136: const int __numeric_traits_floating<_Value>::__max_exponent10; 10136: 10136: template 10136: struct __numeric_traits 10136: : public __conditional_type::__value, 10136: __numeric_traits_integer<_Value>, 10136: __numeric_traits_floating<_Value> >::__type 10136: { }; 10136: 10136: 10136: } 10136: # 64 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_pair.h" 1 3 10136: # 65 "/usr/include/c++/8/bits/stl_pair.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 76 "/usr/include/c++/8/bits/stl_pair.h" 3 10136: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; 10136: 10136: 10136: constexpr piecewise_construct_t piecewise_construct = 10136: piecewise_construct_t(); 10136: 10136: 10136: template 10136: class tuple; 10136: 10136: template 10136: struct _Index_tuple; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct _PCC 10136: { 10136: template 10136: static constexpr bool _ConstructiblePair() 10136: { 10136: return __and_, 10136: is_constructible<_T2, const _U2&>>::value; 10136: } 10136: 10136: template 10136: static constexpr bool _ImplicitlyConvertiblePair() 10136: { 10136: return __and_, 10136: is_convertible>::value; 10136: } 10136: 10136: template 10136: static constexpr bool _MoveConstructiblePair() 10136: { 10136: return __and_, 10136: is_constructible<_T2, _U2&&>>::value; 10136: } 10136: 10136: template 10136: static constexpr bool _ImplicitlyMoveConvertiblePair() 10136: { 10136: return __and_, 10136: is_convertible<_U2&&, _T2>>::value; 10136: } 10136: 10136: template 10136: static constexpr bool _CopyMovePair() 10136: { 10136: using __do_converts = __and_, 10136: is_convertible<_U2&&, _T2>>; 10136: using __converts = typename conditional<__implicit, 10136: __do_converts, 10136: __not_<__do_converts>>::type; 10136: return __and_, 10136: is_constructible<_T2, _U2&&>, 10136: __converts 10136: >::value; 10136: } 10136: 10136: template 10136: static constexpr bool _MoveCopyPair() 10136: { 10136: using __do_converts = __and_, 10136: is_convertible>; 10136: using __converts = typename conditional<__implicit, 10136: __do_converts, 10136: __not_<__do_converts>>::type; 10136: return __and_, 10136: is_constructible<_T2, const _U2&&>, 10136: __converts 10136: >::value; 10136: } 10136: }; 10136: 10136: template 10136: struct _PCC 10136: { 10136: template 10136: static constexpr bool _ConstructiblePair() 10136: { 10136: return false; 10136: } 10136: 10136: template 10136: static constexpr bool _ImplicitlyConvertiblePair() 10136: { 10136: return false; 10136: } 10136: 10136: template 10136: static constexpr bool _MoveConstructiblePair() 10136: { 10136: return false; 10136: } 10136: 10136: template 10136: static constexpr bool _ImplicitlyMoveConvertiblePair() 10136: { 10136: return false; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: struct __nonesuch_no_braces : std::__nonesuch { 10136: explicit __nonesuch_no_braces(const __nonesuch&) = delete; 10136: }; 10136: # 197 "/usr/include/c++/8/bits/stl_pair.h" 3 10136: template 10136: struct pair 10136: { 10136: typedef _T1 first_type; 10136: typedef _T2 second_type; 10136: 10136: _T1 first; 10136: _T2 second; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template , 10136: __is_implicitly_default_constructible<_U2>> 10136: ::value, bool>::type = true> 10136: 10136: constexpr pair() 10136: : first(), second() { } 10136: 10136: 10136: template , 10136: is_default_constructible<_U2>, 10136: __not_< 10136: __and_<__is_implicitly_default_constructible<_U1>, 10136: __is_implicitly_default_constructible<_U2>>>> 10136: ::value, bool>::type = false> 10136: explicit constexpr pair() 10136: : first(), second() { } 10136: # 241 "/usr/include/c++/8/bits/stl_pair.h" 3 10136: using _PCCP = _PCC; 10136: 10136: template() 10136: && _PCCP::template 10136: _ImplicitlyConvertiblePair<_U1, _U2>(), 10136: bool>::type=true> 10136: constexpr pair(const _T1& __a, const _T2& __b) 10136: : first(__a), second(__b) { } 10136: 10136: template() 10136: && !_PCCP::template 10136: _ImplicitlyConvertiblePair<_U1, _U2>(), 10136: bool>::type=false> 10136: explicit constexpr pair(const _T1& __a, const _T2& __b) 10136: : first(__a), second(__b) { } 10136: # 269 "/usr/include/c++/8/bits/stl_pair.h" 3 10136: template 10136: using _PCCFP = _PCC::value 10136: || !is_same<_T2, _U2>::value, 10136: _T1, _T2>; 10136: 10136: template::template 10136: _ConstructiblePair<_U1, _U2>() 10136: && _PCCFP<_U1, _U2>::template 10136: _ImplicitlyConvertiblePair<_U1, _U2>(), 10136: bool>::type=true> 10136: constexpr pair(const pair<_U1, _U2>& __p) 10136: : first(__p.first), second(__p.second) { } 10136: 10136: template::template 10136: _ConstructiblePair<_U1, _U2>() 10136: && !_PCCFP<_U1, _U2>::template 10136: _ImplicitlyConvertiblePair<_U1, _U2>(), 10136: bool>::type=false> 10136: explicit constexpr pair(const pair<_U1, _U2>& __p) 10136: : first(__p.first), second(__p.second) { } 10136: 10136: constexpr pair(const pair&) = default; 10136: constexpr pair(pair&&) = default; 10136: 10136: 10136: template(), 10136: bool>::type=true> 10136: constexpr pair(_U1&& __x, const _T2& __y) 10136: : first(std::forward<_U1>(__x)), second(__y) { } 10136: 10136: template(), 10136: bool>::type=false> 10136: explicit constexpr pair(_U1&& __x, const _T2& __y) 10136: : first(std::forward<_U1>(__x)), second(__y) { } 10136: 10136: template(), 10136: bool>::type=true> 10136: constexpr pair(const _T1& __x, _U2&& __y) 10136: : first(__x), second(std::forward<_U2>(__y)) { } 10136: 10136: template(), 10136: bool>::type=false> 10136: explicit pair(const _T1& __x, _U2&& __y) 10136: : first(__x), second(std::forward<_U2>(__y)) { } 10136: 10136: template() 10136: && _PCCP::template 10136: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 10136: bool>::type=true> 10136: constexpr pair(_U1&& __x, _U2&& __y) 10136: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 10136: 10136: template() 10136: && !_PCCP::template 10136: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 10136: bool>::type=false> 10136: explicit constexpr pair(_U1&& __x, _U2&& __y) 10136: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 10136: 10136: 10136: template::template 10136: _MoveConstructiblePair<_U1, _U2>() 10136: && _PCCFP<_U1, _U2>::template 10136: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 10136: bool>::type=true> 10136: constexpr pair(pair<_U1, _U2>&& __p) 10136: : first(std::forward<_U1>(__p.first)), 10136: second(std::forward<_U2>(__p.second)) { } 10136: 10136: template::template 10136: _MoveConstructiblePair<_U1, _U2>() 10136: && !_PCCFP<_U1, _U2>::template 10136: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 10136: bool>::type=false> 10136: explicit constexpr pair(pair<_U1, _U2>&& __p) 10136: : first(std::forward<_U1>(__p.first)), 10136: second(std::forward<_U2>(__p.second)) { } 10136: 10136: template 10136: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); 10136: 10136: pair& 10136: operator=(typename conditional< 10136: __and_, 10136: is_copy_assignable<_T2>>::value, 10136: const pair&, const __nonesuch_no_braces&>::type __p) 10136: { 10136: first = __p.first; 10136: second = __p.second; 10136: return *this; 10136: } 10136: 10136: pair& 10136: operator=(typename conditional< 10136: __not_<__and_, 10136: is_copy_assignable<_T2>>>::value, 10136: const pair&, const __nonesuch_no_braces&>::type __p) = delete; 10136: 10136: pair& 10136: operator=(typename conditional< 10136: __and_, 10136: is_move_assignable<_T2>>::value, 10136: pair&&, __nonesuch_no_braces&&>::type __p) 10136: noexcept(__and_, 10136: is_nothrow_move_assignable<_T2>>::value) 10136: { 10136: first = std::forward(__p.first); 10136: second = std::forward(__p.second); 10136: return *this; 10136: } 10136: 10136: template 10136: typename enable_if<__and_, 10136: is_assignable<_T2&, const _U2&>>::value, 10136: pair&>::type 10136: operator=(const pair<_U1, _U2>& __p) 10136: { 10136: first = __p.first; 10136: second = __p.second; 10136: return *this; 10136: } 10136: 10136: template 10136: typename enable_if<__and_, 10136: is_assignable<_T2&, _U2&&>>::value, 10136: pair&>::type 10136: operator=(pair<_U1, _U2>&& __p) 10136: { 10136: first = std::forward<_U1>(__p.first); 10136: second = std::forward<_U2>(__p.second); 10136: return *this; 10136: } 10136: 10136: void 10136: swap(pair& __p) 10136: noexcept(__and_<__is_nothrow_swappable<_T1>, 10136: __is_nothrow_swappable<_T2>>::value) 10136: { 10136: using std::swap; 10136: swap(first, __p.first); 10136: swap(second, __p.second); 10136: } 10136: 10136: private: 10136: template 10136: pair(tuple<_Args1...>&, tuple<_Args2...>&, 10136: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline constexpr bool 10136: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 10136: { return __x.first == __y.first && __x.second == __y.second; } 10136: 10136: 10136: template 10136: inline constexpr bool 10136: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 10136: { return __x.first < __y.first 10136: || (!(__y.first < __x.first) && __x.second < __y.second); } 10136: 10136: 10136: template 10136: inline constexpr bool 10136: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 10136: { return !(__x == __y); } 10136: 10136: 10136: template 10136: inline constexpr bool 10136: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 10136: { return __y < __x; } 10136: 10136: 10136: template 10136: inline constexpr bool 10136: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 10136: { return !(__y < __x); } 10136: 10136: 10136: template 10136: inline constexpr bool 10136: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 10136: { return !(__x < __y); } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline 10136: 10136: 10136: typename enable_if<__and_<__is_swappable<_T1>, 10136: __is_swappable<_T2>>::value>::type 10136: 10136: 10136: 10136: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) 10136: noexcept(noexcept(__x.swap(__y))) 10136: { __x.swap(__y); } 10136: 10136: 10136: template 10136: typename enable_if, 10136: __is_swappable<_T2>>::value>::type 10136: swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete; 10136: # 516 "/usr/include/c++/8/bits/stl_pair.h" 3 10136: template 10136: constexpr pair::__type, 10136: typename __decay_and_strip<_T2>::__type> 10136: make_pair(_T1&& __x, _T2&& __y) 10136: { 10136: typedef typename __decay_and_strip<_T1>::__type __ds_type1; 10136: typedef typename __decay_and_strip<_T2>::__type __ds_type2; 10136: typedef pair<__ds_type1, __ds_type2> __pair_type; 10136: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); 10136: } 10136: # 535 "/usr/include/c++/8/bits/stl_pair.h" 3 10136: 10136: } 10136: # 65 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 1 3 10136: # 62 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 10136: 10136: # 63 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 89 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 10136: struct input_iterator_tag { }; 10136: 10136: 10136: struct output_iterator_tag { }; 10136: 10136: 10136: struct forward_iterator_tag : public input_iterator_tag { }; 10136: 10136: 10136: 10136: struct bidirectional_iterator_tag : public forward_iterator_tag { }; 10136: 10136: 10136: 10136: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 10136: # 116 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 10136: template 10136: struct iterator 10136: { 10136: 10136: typedef _Category iterator_category; 10136: 10136: typedef _Tp value_type; 10136: 10136: typedef _Distance difference_type; 10136: 10136: typedef _Pointer pointer; 10136: 10136: typedef _Reference reference; 10136: }; 10136: # 143 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 10136: template> 10136: struct __iterator_traits { }; 10136: 10136: template 10136: struct __iterator_traits<_Iterator, 10136: __void_t> 10136: { 10136: typedef typename _Iterator::iterator_category iterator_category; 10136: typedef typename _Iterator::value_type value_type; 10136: typedef typename _Iterator::difference_type difference_type; 10136: typedef typename _Iterator::pointer pointer; 10136: typedef typename _Iterator::reference reference; 10136: }; 10136: 10136: template 10136: struct iterator_traits 10136: : public __iterator_traits<_Iterator> { }; 10136: # 177 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 10136: template 10136: struct iterator_traits<_Tp*> 10136: { 10136: typedef random_access_iterator_tag iterator_category; 10136: typedef _Tp value_type; 10136: typedef ptrdiff_t difference_type; 10136: typedef _Tp* pointer; 10136: typedef _Tp& reference; 10136: }; 10136: 10136: 10136: template 10136: struct iterator_traits 10136: { 10136: typedef random_access_iterator_tag iterator_category; 10136: typedef _Tp value_type; 10136: typedef ptrdiff_t difference_type; 10136: typedef const _Tp* pointer; 10136: typedef const _Tp& reference; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline constexpr 10136: typename iterator_traits<_Iter>::iterator_category 10136: __iterator_category(const _Iter&) 10136: { return typename iterator_traits<_Iter>::iterator_category(); } 10136: # 231 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 10136: template 10136: using _RequireInputIter = typename 10136: enable_if::iterator_category, 10136: input_iterator_tag>::value>::type; 10136: 10136: 10136: 10136: } 10136: # 66 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 1 3 10136: # 62 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 10136: 10136: # 63 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 10136: 10136: 10136: # 1 "/usr/include/c++/8/debug/assertions.h" 1 3 10136: # 66 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: template struct _List_iterator; 10136: template struct _List_const_iterator; 10136: 10136: 10136: template 10136: inline constexpr 10136: typename iterator_traits<_InputIterator>::difference_type 10136: __distance(_InputIterator __first, _InputIterator __last, 10136: input_iterator_tag) 10136: { 10136: 10136: 10136: 10136: typename iterator_traits<_InputIterator>::difference_type __n = 0; 10136: while (__first != __last) 10136: { 10136: ++__first; 10136: ++__n; 10136: } 10136: return __n; 10136: } 10136: 10136: template 10136: inline constexpr 10136: typename iterator_traits<_RandomAccessIterator>::difference_type 10136: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: random_access_iterator_tag) 10136: { 10136: 10136: 10136: 10136: return __last - __first; 10136: } 10136: 10136: 10136: 10136: template 10136: ptrdiff_t 10136: __distance(std::_List_iterator<_Tp>, 10136: std::_List_iterator<_Tp>, 10136: input_iterator_tag); 10136: 10136: template 10136: ptrdiff_t 10136: __distance(std::_List_const_iterator<_Tp>, 10136: std::_List_const_iterator<_Tp>, 10136: input_iterator_tag); 10136: # 135 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 10136: template 10136: inline 10136: typename iterator_traits<_InputIterator>::difference_type 10136: distance(_InputIterator __first, _InputIterator __last) 10136: { 10136: 10136: return std::__distance(__first, __last, 10136: std::__iterator_category(__first)); 10136: } 10136: 10136: template 10136: inline constexpr void 10136: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) 10136: { 10136: 10136: 10136: ; 10136: while (__n--) 10136: ++__i; 10136: } 10136: 10136: template 10136: inline constexpr void 10136: __advance(_BidirectionalIterator& __i, _Distance __n, 10136: bidirectional_iterator_tag) 10136: { 10136: 10136: 10136: 10136: if (__n > 0) 10136: while (__n--) 10136: ++__i; 10136: else 10136: while (__n++) 10136: --__i; 10136: } 10136: 10136: template 10136: inline constexpr void 10136: __advance(_RandomAccessIterator& __i, _Distance __n, 10136: random_access_iterator_tag) 10136: { 10136: 10136: 10136: 10136: if (__builtin_constant_p(__n) && __n == 1) 10136: ++__i; 10136: else if (__builtin_constant_p(__n) && __n == -1) 10136: --__i; 10136: else 10136: __i += __n; 10136: } 10136: # 200 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 10136: template 10136: inline void 10136: advance(_InputIterator& __i, _Distance __n) 10136: { 10136: 10136: typename iterator_traits<_InputIterator>::difference_type __d = __n; 10136: std::__advance(__i, __d, std::__iterator_category(__i)); 10136: } 10136: 10136: 10136: 10136: template 10136: inline _InputIterator 10136: next(_InputIterator __x, typename 10136: iterator_traits<_InputIterator>::difference_type __n = 1) 10136: { 10136: 10136: 10136: std::advance(__x, __n); 10136: return __x; 10136: } 10136: 10136: template 10136: inline _BidirectionalIterator 10136: prev(_BidirectionalIterator __x, typename 10136: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 10136: { 10136: 10136: 10136: 10136: std::advance(__x, -__n); 10136: return __x; 10136: } 10136: 10136: 10136: 10136: 10136: } 10136: # 67 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_iterator.h" 1 3 10136: # 66 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: # 1 "/usr/include/c++/8/bits/ptr_traits.h" 1 3 10136: # 37 "/usr/include/c++/8/bits/ptr_traits.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: class __undefined; 10136: 10136: 10136: template 10136: struct __get_first_arg 10136: { using type = __undefined; }; 10136: 10136: template class _Template, typename _Tp, 10136: typename... _Types> 10136: struct __get_first_arg<_Template<_Tp, _Types...>> 10136: { using type = _Tp; }; 10136: 10136: template 10136: using __get_first_arg_t = typename __get_first_arg<_Tp>::type; 10136: 10136: 10136: template 10136: struct __replace_first_arg 10136: { }; 10136: 10136: template class _Template, typename _Up, 10136: typename _Tp, typename... _Types> 10136: struct __replace_first_arg<_Template<_Tp, _Types...>, _Up> 10136: { using type = _Template<_Up, _Types...>; }; 10136: 10136: template 10136: using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type; 10136: 10136: template 10136: using __make_not_void 10136: = typename conditional::value, __undefined, _Tp>::type; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct pointer_traits 10136: { 10136: private: 10136: template 10136: using __element_type = typename _Tp::element_type; 10136: 10136: template 10136: using __difference_type = typename _Tp::difference_type; 10136: 10136: template 10136: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 10136: 10136: template 10136: struct __rebind<_Tp, _Up, __void_t>> 10136: { using type = typename _Tp::template rebind<_Up>; }; 10136: 10136: public: 10136: 10136: using pointer = _Ptr; 10136: 10136: 10136: using element_type 10136: = __detected_or_t<__get_first_arg_t<_Ptr>, __element_type, _Ptr>; 10136: 10136: 10136: using difference_type 10136: = __detected_or_t; 10136: 10136: 10136: template 10136: using rebind = typename __rebind<_Ptr, _Up>::type; 10136: 10136: static _Ptr 10136: pointer_to(__make_not_void& __e) 10136: { return _Ptr::pointer_to(__e); } 10136: 10136: static_assert(!is_same::value, 10136: "pointer type defines element_type or is like SomePointer"); 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct pointer_traits<_Tp*> 10136: { 10136: 10136: typedef _Tp* pointer; 10136: 10136: typedef _Tp element_type; 10136: 10136: typedef ptrdiff_t difference_type; 10136: 10136: template 10136: using rebind = _Up*; 10136: 10136: 10136: 10136: 10136: 10136: 10136: static pointer 10136: pointer_to(__make_not_void& __r) noexcept 10136: { return std::addressof(__r); } 10136: }; 10136: 10136: 10136: template 10136: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; 10136: 10136: template 10136: constexpr _Tp* 10136: __to_address(_Tp* __ptr) noexcept 10136: { 10136: static_assert(!std::is_function<_Tp>::value, "not a function pointer"); 10136: return __ptr; 10136: } 10136: 10136: 10136: template 10136: constexpr typename std::pointer_traits<_Ptr>::element_type* 10136: __to_address(const _Ptr& __ptr) 10136: { return std::__to_address(__ptr.operator->()); } 10136: # 198 "/usr/include/c++/8/bits/ptr_traits.h" 3 10136: 10136: } 10136: # 67 "/usr/include/c++/8/bits/stl_iterator.h" 2 3 10136: 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 100 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: class reverse_iterator 10136: : public iterator::iterator_category, 10136: typename iterator_traits<_Iterator>::value_type, 10136: typename iterator_traits<_Iterator>::difference_type, 10136: typename iterator_traits<_Iterator>::pointer, 10136: typename iterator_traits<_Iterator>::reference> 10136: { 10136: protected: 10136: _Iterator current; 10136: 10136: typedef iterator_traits<_Iterator> __traits_type; 10136: 10136: public: 10136: typedef _Iterator iterator_type; 10136: typedef typename __traits_type::difference_type difference_type; 10136: typedef typename __traits_type::pointer pointer; 10136: typedef typename __traits_type::reference reference; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator() : current() { } 10136: 10136: 10136: 10136: 10136: explicit 10136: reverse_iterator(iterator_type __x) : current(__x) { } 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator(const reverse_iterator& __x) 10136: : current(__x.current) { } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: 10136: reverse_iterator(const reverse_iterator<_Iter>& __x) 10136: : current(__x.base()) { } 10136: 10136: 10136: 10136: 10136: iterator_type 10136: base() const 10136: { return current; } 10136: # 167 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: reference 10136: operator*() const 10136: { 10136: _Iterator __tmp = current; 10136: return *--__tmp; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: pointer 10136: operator->() const 10136: { return &(operator*()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator& 10136: operator++() 10136: { 10136: --current; 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator 10136: operator++(int) 10136: { 10136: reverse_iterator __tmp = *this; 10136: --current; 10136: return __tmp; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator& 10136: operator--() 10136: { 10136: ++current; 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator 10136: operator--(int) 10136: { 10136: reverse_iterator __tmp = *this; 10136: ++current; 10136: return __tmp; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator 10136: operator+(difference_type __n) const 10136: { return reverse_iterator(current - __n); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator& 10136: operator+=(difference_type __n) 10136: { 10136: current -= __n; 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator 10136: operator-(difference_type __n) const 10136: { return reverse_iterator(current + __n); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator& 10136: operator-=(difference_type __n) 10136: { 10136: current += __n; 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reference 10136: operator[](difference_type __n) const 10136: { return *(*this + __n); } 10136: }; 10136: # 297 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: inline bool 10136: operator==(const reverse_iterator<_Iterator>& __x, 10136: const reverse_iterator<_Iterator>& __y) 10136: { return __x.base() == __y.base(); } 10136: 10136: template 10136: inline bool 10136: operator<(const reverse_iterator<_Iterator>& __x, 10136: const reverse_iterator<_Iterator>& __y) 10136: { return __y.base() < __x.base(); } 10136: 10136: template 10136: inline bool 10136: operator!=(const reverse_iterator<_Iterator>& __x, 10136: const reverse_iterator<_Iterator>& __y) 10136: { return !(__x == __y); } 10136: 10136: template 10136: inline bool 10136: operator>(const reverse_iterator<_Iterator>& __x, 10136: const reverse_iterator<_Iterator>& __y) 10136: { return __y < __x; } 10136: 10136: template 10136: inline bool 10136: operator<=(const reverse_iterator<_Iterator>& __x, 10136: const reverse_iterator<_Iterator>& __y) 10136: { return !(__y < __x); } 10136: 10136: template 10136: inline bool 10136: operator>=(const reverse_iterator<_Iterator>& __x, 10136: const reverse_iterator<_Iterator>& __y) 10136: { return !(__x < __y); } 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator==(const reverse_iterator<_IteratorL>& __x, 10136: const reverse_iterator<_IteratorR>& __y) 10136: { return __x.base() == __y.base(); } 10136: 10136: template 10136: inline bool 10136: operator<(const reverse_iterator<_IteratorL>& __x, 10136: const reverse_iterator<_IteratorR>& __y) 10136: { return __y.base() < __x.base(); } 10136: 10136: template 10136: inline bool 10136: operator!=(const reverse_iterator<_IteratorL>& __x, 10136: const reverse_iterator<_IteratorR>& __y) 10136: { return !(__x == __y); } 10136: 10136: template 10136: inline bool 10136: operator>(const reverse_iterator<_IteratorL>& __x, 10136: const reverse_iterator<_IteratorR>& __y) 10136: { return __y < __x; } 10136: 10136: template 10136: inline bool 10136: operator<=(const reverse_iterator<_IteratorL>& __x, 10136: const reverse_iterator<_IteratorR>& __y) 10136: { return !(__y < __x); } 10136: 10136: template 10136: inline bool 10136: operator>=(const reverse_iterator<_IteratorL>& __x, 10136: const reverse_iterator<_IteratorR>& __y) 10136: { return !(__x < __y); } 10136: # 387 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: inline auto 10136: operator-(const reverse_iterator<_IteratorL>& __x, 10136: const reverse_iterator<_IteratorR>& __y) 10136: -> decltype(__y.base() - __x.base()) 10136: { return __y.base() - __x.base(); } 10136: 10136: 10136: template 10136: inline reverse_iterator<_Iterator> 10136: operator+(typename reverse_iterator<_Iterator>::difference_type __n, 10136: const reverse_iterator<_Iterator>& __x) 10136: { return reverse_iterator<_Iterator>(__x.base() - __n); } 10136: 10136: 10136: 10136: template 10136: inline reverse_iterator<_Iterator> 10136: __make_reverse_iterator(_Iterator __i) 10136: { return reverse_iterator<_Iterator>(__i); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline reverse_iterator<_Iterator> 10136: make_reverse_iterator(_Iterator __i) 10136: { return reverse_iterator<_Iterator>(__i); } 10136: 10136: 10136: 10136: 10136: template 10136: auto 10136: __niter_base(reverse_iterator<_Iterator> __it) 10136: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) 10136: { return __make_reverse_iterator(__niter_base(__it.base())); } 10136: 10136: template 10136: struct __is_move_iterator > 10136: : __is_move_iterator<_Iterator> 10136: { }; 10136: 10136: template 10136: auto 10136: __miter_base(reverse_iterator<_Iterator> __it) 10136: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) 10136: { return __make_reverse_iterator(__miter_base(__it.base())); } 10136: # 451 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: class back_insert_iterator 10136: : public iterator 10136: { 10136: protected: 10136: _Container* container; 10136: 10136: public: 10136: 10136: typedef _Container container_type; 10136: 10136: 10136: explicit 10136: back_insert_iterator(_Container& __x) 10136: : container(std::__addressof(__x)) { } 10136: # 486 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: back_insert_iterator& 10136: operator=(const typename _Container::value_type& __value) 10136: { 10136: container->push_back(__value); 10136: return *this; 10136: } 10136: 10136: back_insert_iterator& 10136: operator=(typename _Container::value_type&& __value) 10136: { 10136: container->push_back(std::move(__value)); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: back_insert_iterator& 10136: operator*() 10136: { return *this; } 10136: 10136: 10136: back_insert_iterator& 10136: operator++() 10136: { return *this; } 10136: 10136: 10136: back_insert_iterator 10136: operator++(int) 10136: { return *this; } 10136: }; 10136: # 528 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: inline back_insert_iterator<_Container> 10136: back_inserter(_Container& __x) 10136: { return back_insert_iterator<_Container>(__x); } 10136: # 543 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: class front_insert_iterator 10136: : public iterator 10136: { 10136: protected: 10136: _Container* container; 10136: 10136: public: 10136: 10136: typedef _Container container_type; 10136: 10136: 10136: explicit front_insert_iterator(_Container& __x) 10136: : container(std::__addressof(__x)) { } 10136: # 577 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: front_insert_iterator& 10136: operator=(const typename _Container::value_type& __value) 10136: { 10136: container->push_front(__value); 10136: return *this; 10136: } 10136: 10136: front_insert_iterator& 10136: operator=(typename _Container::value_type&& __value) 10136: { 10136: container->push_front(std::move(__value)); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: front_insert_iterator& 10136: operator*() 10136: { return *this; } 10136: 10136: 10136: front_insert_iterator& 10136: operator++() 10136: { return *this; } 10136: 10136: 10136: front_insert_iterator 10136: operator++(int) 10136: { return *this; } 10136: }; 10136: # 619 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: inline front_insert_iterator<_Container> 10136: front_inserter(_Container& __x) 10136: { return front_insert_iterator<_Container>(__x); } 10136: # 638 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: class insert_iterator 10136: : public iterator 10136: { 10136: protected: 10136: _Container* container; 10136: typename _Container::iterator iter; 10136: 10136: public: 10136: 10136: typedef _Container container_type; 10136: 10136: 10136: 10136: 10136: 10136: insert_iterator(_Container& __x, typename _Container::iterator __i) 10136: : container(std::__addressof(__x)), iter(__i) {} 10136: # 689 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: insert_iterator& 10136: operator=(const typename _Container::value_type& __value) 10136: { 10136: iter = container->insert(iter, __value); 10136: ++iter; 10136: return *this; 10136: } 10136: 10136: insert_iterator& 10136: operator=(typename _Container::value_type&& __value) 10136: { 10136: iter = container->insert(iter, std::move(__value)); 10136: ++iter; 10136: return *this; 10136: } 10136: 10136: 10136: 10136: insert_iterator& 10136: operator*() 10136: { return *this; } 10136: 10136: 10136: insert_iterator& 10136: operator++() 10136: { return *this; } 10136: 10136: 10136: insert_iterator& 10136: operator++(int) 10136: { return *this; } 10136: }; 10136: # 734 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: inline insert_iterator<_Container> 10136: inserter(_Container& __x, _Iterator __i) 10136: { 10136: return insert_iterator<_Container>(__x, 10136: typename _Container::iterator(__i)); 10136: } 10136: 10136: 10136: 10136: 10136: } 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 758 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: using std::iterator_traits; 10136: using std::iterator; 10136: template 10136: class __normal_iterator 10136: { 10136: protected: 10136: _Iterator _M_current; 10136: 10136: typedef iterator_traits<_Iterator> __traits_type; 10136: 10136: public: 10136: typedef _Iterator iterator_type; 10136: typedef typename __traits_type::iterator_category iterator_category; 10136: typedef typename __traits_type::value_type value_type; 10136: typedef typename __traits_type::difference_type difference_type; 10136: typedef typename __traits_type::reference reference; 10136: typedef typename __traits_type::pointer pointer; 10136: 10136: constexpr __normal_iterator() noexcept 10136: : _M_current(_Iterator()) { } 10136: 10136: explicit 10136: __normal_iterator(const _Iterator& __i) noexcept 10136: : _M_current(__i) { } 10136: 10136: 10136: template 10136: __normal_iterator(const __normal_iterator<_Iter, 10136: typename __enable_if< 10136: (std::__are_same<_Iter, typename _Container::pointer>::__value), 10136: _Container>::__type>& __i) noexcept 10136: : _M_current(__i.base()) { } 10136: 10136: 10136: reference 10136: operator*() const noexcept 10136: { return *_M_current; } 10136: 10136: pointer 10136: operator->() const noexcept 10136: { return _M_current; } 10136: 10136: __normal_iterator& 10136: operator++() noexcept 10136: { 10136: ++_M_current; 10136: return *this; 10136: } 10136: 10136: __normal_iterator 10136: operator++(int) noexcept 10136: { return __normal_iterator(_M_current++); } 10136: 10136: 10136: __normal_iterator& 10136: operator--() noexcept 10136: { 10136: --_M_current; 10136: return *this; 10136: } 10136: 10136: __normal_iterator 10136: operator--(int) noexcept 10136: { return __normal_iterator(_M_current--); } 10136: 10136: 10136: reference 10136: operator[](difference_type __n) const noexcept 10136: { return _M_current[__n]; } 10136: 10136: __normal_iterator& 10136: operator+=(difference_type __n) noexcept 10136: { _M_current += __n; return *this; } 10136: 10136: __normal_iterator 10136: operator+(difference_type __n) const noexcept 10136: { return __normal_iterator(_M_current + __n); } 10136: 10136: __normal_iterator& 10136: operator-=(difference_type __n) noexcept 10136: { _M_current -= __n; return *this; } 10136: 10136: __normal_iterator 10136: operator-(difference_type __n) const noexcept 10136: { return __normal_iterator(_M_current - __n); } 10136: 10136: const _Iterator& 10136: base() const noexcept 10136: { return _M_current; } 10136: }; 10136: # 858 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: inline bool 10136: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 10136: const __normal_iterator<_IteratorR, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() == __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 10136: const __normal_iterator<_Iterator, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() == __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 10136: const __normal_iterator<_IteratorR, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() != __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 10136: const __normal_iterator<_Iterator, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() != __rhs.base(); } 10136: 10136: 10136: template 10136: inline bool 10136: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 10136: const __normal_iterator<_IteratorR, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() < __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, 10136: const __normal_iterator<_Iterator, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() < __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, 10136: const __normal_iterator<_IteratorR, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() > __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, 10136: const __normal_iterator<_Iterator, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() > __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, 10136: const __normal_iterator<_IteratorR, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() <= __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, 10136: const __normal_iterator<_Iterator, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() <= __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, 10136: const __normal_iterator<_IteratorR, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() >= __rhs.base(); } 10136: 10136: template 10136: inline bool 10136: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, 10136: const __normal_iterator<_Iterator, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() >= __rhs.base(); } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: 10136: 10136: inline auto 10136: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, 10136: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept 10136: -> decltype(__lhs.base() - __rhs.base()) 10136: 10136: 10136: 10136: 10136: 10136: { return __lhs.base() - __rhs.base(); } 10136: 10136: template 10136: inline typename __normal_iterator<_Iterator, _Container>::difference_type 10136: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, 10136: const __normal_iterator<_Iterator, _Container>& __rhs) 10136: noexcept 10136: { return __lhs.base() - __rhs.base(); } 10136: 10136: template 10136: inline __normal_iterator<_Iterator, _Container> 10136: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type 10136: __n, const __normal_iterator<_Iterator, _Container>& __i) 10136: noexcept 10136: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } 10136: 10136: 10136: } 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: _Iterator 10136: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) 10136: { return __it.base(); } 10136: # 1003 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: template 10136: class move_iterator 10136: { 10136: protected: 10136: _Iterator _M_current; 10136: 10136: typedef iterator_traits<_Iterator> __traits_type; 10136: typedef typename __traits_type::reference __base_ref; 10136: 10136: public: 10136: typedef _Iterator iterator_type; 10136: typedef typename __traits_type::iterator_category iterator_category; 10136: typedef typename __traits_type::value_type value_type; 10136: typedef typename __traits_type::difference_type difference_type; 10136: 10136: typedef _Iterator pointer; 10136: 10136: 10136: typedef typename conditional::value, 10136: typename remove_reference<__base_ref>::type&&, 10136: __base_ref>::type reference; 10136: 10136: 10136: move_iterator() 10136: : _M_current() { } 10136: 10136: explicit 10136: move_iterator(iterator_type __i) 10136: : _M_current(__i) { } 10136: 10136: template 10136: 10136: move_iterator(const move_iterator<_Iter>& __i) 10136: : _M_current(__i.base()) { } 10136: 10136: iterator_type 10136: base() const 10136: { return _M_current; } 10136: 10136: reference 10136: operator*() const 10136: { return static_cast(*_M_current); } 10136: 10136: pointer 10136: operator->() const 10136: { return _M_current; } 10136: 10136: move_iterator& 10136: operator++() 10136: { 10136: ++_M_current; 10136: return *this; 10136: } 10136: 10136: move_iterator 10136: operator++(int) 10136: { 10136: move_iterator __tmp = *this; 10136: ++_M_current; 10136: return __tmp; 10136: } 10136: 10136: move_iterator& 10136: operator--() 10136: { 10136: --_M_current; 10136: return *this; 10136: } 10136: 10136: move_iterator 10136: operator--(int) 10136: { 10136: move_iterator __tmp = *this; 10136: --_M_current; 10136: return __tmp; 10136: } 10136: 10136: move_iterator 10136: operator+(difference_type __n) const 10136: { return move_iterator(_M_current + __n); } 10136: 10136: move_iterator& 10136: operator+=(difference_type __n) 10136: { 10136: _M_current += __n; 10136: return *this; 10136: } 10136: 10136: move_iterator 10136: operator-(difference_type __n) const 10136: { return move_iterator(_M_current - __n); } 10136: 10136: move_iterator& 10136: operator-=(difference_type __n) 10136: { 10136: _M_current -= __n; 10136: return *this; 10136: } 10136: 10136: reference 10136: operator[](difference_type __n) const 10136: { return std::move(_M_current[__n]); } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator==(const move_iterator<_IteratorL>& __x, 10136: const move_iterator<_IteratorR>& __y) 10136: { return __x.base() == __y.base(); } 10136: 10136: template 10136: inline bool 10136: operator==(const move_iterator<_Iterator>& __x, 10136: const move_iterator<_Iterator>& __y) 10136: { return __x.base() == __y.base(); } 10136: 10136: template 10136: inline bool 10136: operator!=(const move_iterator<_IteratorL>& __x, 10136: const move_iterator<_IteratorR>& __y) 10136: { return !(__x == __y); } 10136: 10136: template 10136: inline bool 10136: operator!=(const move_iterator<_Iterator>& __x, 10136: const move_iterator<_Iterator>& __y) 10136: { return !(__x == __y); } 10136: 10136: template 10136: inline bool 10136: operator<(const move_iterator<_IteratorL>& __x, 10136: const move_iterator<_IteratorR>& __y) 10136: { return __x.base() < __y.base(); } 10136: 10136: template 10136: inline bool 10136: operator<(const move_iterator<_Iterator>& __x, 10136: const move_iterator<_Iterator>& __y) 10136: { return __x.base() < __y.base(); } 10136: 10136: template 10136: inline bool 10136: operator<=(const move_iterator<_IteratorL>& __x, 10136: const move_iterator<_IteratorR>& __y) 10136: { return !(__y < __x); } 10136: 10136: template 10136: inline bool 10136: operator<=(const move_iterator<_Iterator>& __x, 10136: const move_iterator<_Iterator>& __y) 10136: { return !(__y < __x); } 10136: 10136: template 10136: inline bool 10136: operator>(const move_iterator<_IteratorL>& __x, 10136: const move_iterator<_IteratorR>& __y) 10136: { return __y < __x; } 10136: 10136: template 10136: inline bool 10136: operator>(const move_iterator<_Iterator>& __x, 10136: const move_iterator<_Iterator>& __y) 10136: { return __y < __x; } 10136: 10136: template 10136: inline bool 10136: operator>=(const move_iterator<_IteratorL>& __x, 10136: const move_iterator<_IteratorR>& __y) 10136: { return !(__x < __y); } 10136: 10136: template 10136: inline bool 10136: operator>=(const move_iterator<_Iterator>& __x, 10136: const move_iterator<_Iterator>& __y) 10136: { return !(__x < __y); } 10136: 10136: 10136: template 10136: inline auto 10136: operator-(const move_iterator<_IteratorL>& __x, 10136: const move_iterator<_IteratorR>& __y) 10136: -> decltype(__x.base() - __y.base()) 10136: { return __x.base() - __y.base(); } 10136: 10136: template 10136: inline move_iterator<_Iterator> 10136: operator+(typename move_iterator<_Iterator>::difference_type __n, 10136: const move_iterator<_Iterator>& __x) 10136: { return __x + __n; } 10136: 10136: template 10136: inline move_iterator<_Iterator> 10136: make_move_iterator(_Iterator __i) 10136: { return move_iterator<_Iterator>(__i); } 10136: 10136: template::value_type>::value, 10136: _Iterator, move_iterator<_Iterator>>::type> 10136: inline _ReturnType 10136: __make_move_if_noexcept_iterator(_Iterator __i) 10136: { return _ReturnType(__i); } 10136: 10136: 10136: 10136: template::value, 10136: const _Tp*, move_iterator<_Tp*>>::type> 10136: inline _ReturnType 10136: __make_move_if_noexcept_iterator(_Tp* __i) 10136: { return _ReturnType(__i); } 10136: 10136: 10136: 10136: template 10136: auto 10136: __niter_base(move_iterator<_Iterator> __it) 10136: -> decltype(make_move_iterator(__niter_base(__it.base()))) 10136: { return make_move_iterator(__niter_base(__it.base())); } 10136: 10136: template 10136: struct __is_move_iterator > 10136: { 10136: enum { __value = 1 }; 10136: typedef __true_type __type; 10136: }; 10136: 10136: template 10136: auto 10136: __miter_base(move_iterator<_Iterator> __it) 10136: -> decltype(__miter_base(__it.base())) 10136: { return __miter_base(__it.base()); } 10136: # 1268 "/usr/include/c++/8/bits/stl_iterator.h" 3 10136: 10136: } 10136: # 68 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: 10136: # 1 "/usr/include/c++/8/debug/debug.h" 1 3 10136: # 48 "/usr/include/c++/8/debug/debug.h" 3 10136: namespace std 10136: { 10136: namespace __debug { } 10136: } 10136: 10136: 10136: 10136: 10136: namespace __gnu_debug 10136: { 10136: using namespace std::__debug; 10136: } 10136: # 70 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: 10136: # 1 "/usr/include/c++/8/bits/predefined_ops.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/predefined_ops.h" 3 10136: namespace __gnu_cxx 10136: { 10136: namespace __ops 10136: { 10136: struct _Iter_less_iter 10136: { 10136: template 10136: constexpr 10136: bool 10136: operator()(_Iterator1 __it1, _Iterator2 __it2) const 10136: { return *__it1 < *__it2; } 10136: }; 10136: 10136: constexpr 10136: inline _Iter_less_iter 10136: __iter_less_iter() 10136: { return _Iter_less_iter(); } 10136: 10136: struct _Iter_less_val 10136: { 10136: 10136: constexpr _Iter_less_val() = default; 10136: 10136: 10136: 10136: 10136: explicit 10136: _Iter_less_val(_Iter_less_iter) { } 10136: 10136: template 10136: bool 10136: operator()(_Iterator __it, _Value& __val) const 10136: { return *__it < __val; } 10136: }; 10136: 10136: inline _Iter_less_val 10136: __iter_less_val() 10136: { return _Iter_less_val(); } 10136: 10136: inline _Iter_less_val 10136: __iter_comp_val(_Iter_less_iter) 10136: { return _Iter_less_val(); } 10136: 10136: struct _Val_less_iter 10136: { 10136: 10136: constexpr _Val_less_iter() = default; 10136: 10136: 10136: 10136: 10136: explicit 10136: _Val_less_iter(_Iter_less_iter) { } 10136: 10136: template 10136: bool 10136: operator()(_Value& __val, _Iterator __it) const 10136: { return __val < *__it; } 10136: }; 10136: 10136: inline _Val_less_iter 10136: __val_less_iter() 10136: { return _Val_less_iter(); } 10136: 10136: inline _Val_less_iter 10136: __val_comp_iter(_Iter_less_iter) 10136: { return _Val_less_iter(); } 10136: 10136: struct _Iter_equal_to_iter 10136: { 10136: template 10136: bool 10136: operator()(_Iterator1 __it1, _Iterator2 __it2) const 10136: { return *__it1 == *__it2; } 10136: }; 10136: 10136: inline _Iter_equal_to_iter 10136: __iter_equal_to_iter() 10136: { return _Iter_equal_to_iter(); } 10136: 10136: struct _Iter_equal_to_val 10136: { 10136: template 10136: bool 10136: operator()(_Iterator __it, _Value& __val) const 10136: { return *__it == __val; } 10136: }; 10136: 10136: inline _Iter_equal_to_val 10136: __iter_equal_to_val() 10136: { return _Iter_equal_to_val(); } 10136: 10136: inline _Iter_equal_to_val 10136: __iter_comp_val(_Iter_equal_to_iter) 10136: { return _Iter_equal_to_val(); } 10136: 10136: template 10136: struct _Iter_comp_iter 10136: { 10136: _Compare _M_comp; 10136: 10136: explicit constexpr 10136: _Iter_comp_iter(_Compare __comp) 10136: : _M_comp(std::move(__comp)) 10136: { } 10136: 10136: template 10136: constexpr 10136: bool 10136: operator()(_Iterator1 __it1, _Iterator2 __it2) 10136: { return bool(_M_comp(*__it1, *__it2)); } 10136: }; 10136: 10136: template 10136: constexpr 10136: inline _Iter_comp_iter<_Compare> 10136: __iter_comp_iter(_Compare __comp) 10136: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } 10136: 10136: template 10136: struct _Iter_comp_val 10136: { 10136: _Compare _M_comp; 10136: 10136: explicit 10136: _Iter_comp_val(_Compare __comp) 10136: : _M_comp(std::move(__comp)) 10136: { } 10136: 10136: explicit 10136: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 10136: : _M_comp(__comp._M_comp) 10136: { } 10136: 10136: 10136: explicit 10136: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 10136: : _M_comp(std::move(__comp._M_comp)) 10136: { } 10136: 10136: 10136: template 10136: bool 10136: operator()(_Iterator __it, _Value& __val) 10136: { return bool(_M_comp(*__it, __val)); } 10136: }; 10136: 10136: template 10136: inline _Iter_comp_val<_Compare> 10136: __iter_comp_val(_Compare __comp) 10136: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 10136: 10136: template 10136: inline _Iter_comp_val<_Compare> 10136: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 10136: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 10136: 10136: template 10136: struct _Val_comp_iter 10136: { 10136: _Compare _M_comp; 10136: 10136: explicit 10136: _Val_comp_iter(_Compare __comp) 10136: : _M_comp(std::move(__comp)) 10136: { } 10136: 10136: explicit 10136: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 10136: : _M_comp(__comp._M_comp) 10136: { } 10136: 10136: 10136: explicit 10136: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 10136: : _M_comp(std::move(__comp._M_comp)) 10136: { } 10136: 10136: 10136: template 10136: bool 10136: operator()(_Value& __val, _Iterator __it) 10136: { return bool(_M_comp(__val, *__it)); } 10136: }; 10136: 10136: template 10136: inline _Val_comp_iter<_Compare> 10136: __val_comp_iter(_Compare __comp) 10136: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 10136: 10136: template 10136: inline _Val_comp_iter<_Compare> 10136: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 10136: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 10136: 10136: template 10136: struct _Iter_equals_val 10136: { 10136: _Value& _M_value; 10136: 10136: explicit 10136: _Iter_equals_val(_Value& __value) 10136: : _M_value(__value) 10136: { } 10136: 10136: template 10136: bool 10136: operator()(_Iterator __it) 10136: { return *__it == _M_value; } 10136: }; 10136: 10136: template 10136: inline _Iter_equals_val<_Value> 10136: __iter_equals_val(_Value& __val) 10136: { return _Iter_equals_val<_Value>(__val); } 10136: 10136: template 10136: struct _Iter_equals_iter 10136: { 10136: _Iterator1 _M_it1; 10136: 10136: explicit 10136: _Iter_equals_iter(_Iterator1 __it1) 10136: : _M_it1(__it1) 10136: { } 10136: 10136: template 10136: bool 10136: operator()(_Iterator2 __it2) 10136: { return *__it2 == *_M_it1; } 10136: }; 10136: 10136: template 10136: inline _Iter_equals_iter<_Iterator> 10136: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 10136: { return _Iter_equals_iter<_Iterator>(__it); } 10136: 10136: template 10136: struct _Iter_pred 10136: { 10136: _Predicate _M_pred; 10136: 10136: explicit 10136: _Iter_pred(_Predicate __pred) 10136: : _M_pred(std::move(__pred)) 10136: { } 10136: 10136: template 10136: bool 10136: operator()(_Iterator __it) 10136: { return bool(_M_pred(*__it)); } 10136: }; 10136: 10136: template 10136: inline _Iter_pred<_Predicate> 10136: __pred_iter(_Predicate __pred) 10136: { return _Iter_pred<_Predicate>(std::move(__pred)); } 10136: 10136: template 10136: struct _Iter_comp_to_val 10136: { 10136: _Compare _M_comp; 10136: _Value& _M_value; 10136: 10136: _Iter_comp_to_val(_Compare __comp, _Value& __value) 10136: : _M_comp(std::move(__comp)), _M_value(__value) 10136: { } 10136: 10136: template 10136: bool 10136: operator()(_Iterator __it) 10136: { return bool(_M_comp(*__it, _M_value)); } 10136: }; 10136: 10136: template 10136: _Iter_comp_to_val<_Compare, _Value> 10136: __iter_comp_val(_Compare __comp, _Value &__val) 10136: { 10136: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); 10136: } 10136: 10136: template 10136: struct _Iter_comp_to_iter 10136: { 10136: _Compare _M_comp; 10136: _Iterator1 _M_it1; 10136: 10136: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 10136: : _M_comp(std::move(__comp)), _M_it1(__it1) 10136: { } 10136: 10136: template 10136: bool 10136: operator()(_Iterator2 __it2) 10136: { return bool(_M_comp(*__it2, *_M_it1)); } 10136: }; 10136: 10136: template 10136: inline _Iter_comp_to_iter<_Compare, _Iterator> 10136: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 10136: { 10136: return _Iter_comp_to_iter<_Compare, _Iterator>( 10136: std::move(__comp._M_comp), __it); 10136: } 10136: 10136: template 10136: struct _Iter_negate 10136: { 10136: _Predicate _M_pred; 10136: 10136: explicit 10136: _Iter_negate(_Predicate __pred) 10136: : _M_pred(std::move(__pred)) 10136: { } 10136: 10136: template 10136: bool 10136: operator()(_Iterator __it) 10136: { return !bool(_M_pred(*__it)); } 10136: }; 10136: 10136: template 10136: inline _Iter_negate<_Predicate> 10136: __negate(_Iter_pred<_Predicate> __pred) 10136: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } 10136: 10136: } 10136: } 10136: # 72 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 118 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline void 10136: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 10136: { 10136: 10136: 10136: 10136: 10136: # 148 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: swap(*__a, *__b); 10136: 10136: } 10136: # 164 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: _ForwardIterator2 10136: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first1 != __last1; ++__first1, (void)++__first2) 10136: std::iter_swap(__first1, __first2); 10136: return __first2; 10136: } 10136: # 192 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: constexpr 10136: inline const _Tp& 10136: min(const _Tp& __a, const _Tp& __b) 10136: { 10136: 10136: 10136: 10136: if (__b < __a) 10136: return __b; 10136: return __a; 10136: } 10136: # 216 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: constexpr 10136: inline const _Tp& 10136: max(const _Tp& __a, const _Tp& __b) 10136: { 10136: 10136: 10136: 10136: if (__a < __b) 10136: return __b; 10136: return __a; 10136: } 10136: # 240 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: constexpr 10136: inline const _Tp& 10136: min(const _Tp& __a, const _Tp& __b, _Compare __comp) 10136: { 10136: 10136: if (__comp(__b, __a)) 10136: return __b; 10136: return __a; 10136: } 10136: # 262 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: constexpr 10136: inline const _Tp& 10136: max(const _Tp& __a, const _Tp& __b, _Compare __comp) 10136: { 10136: 10136: if (__comp(__a, __b)) 10136: return __b; 10136: return __a; 10136: } 10136: 10136: 10136: 10136: template 10136: inline _Iterator 10136: __niter_base(_Iterator __it) 10136: { return __it; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __copy_move 10136: { 10136: template 10136: static _OI 10136: __copy_m(_II __first, _II __last, _OI __result) 10136: { 10136: for (; __first != __last; ++__result, (void)++__first) 10136: *__result = *__first; 10136: return __result; 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct __copy_move 10136: { 10136: template 10136: static _OI 10136: __copy_m(_II __first, _II __last, _OI __result) 10136: { 10136: for (; __first != __last; ++__result, (void)++__first) 10136: *__result = std::move(*__first); 10136: return __result; 10136: } 10136: }; 10136: 10136: 10136: template<> 10136: struct __copy_move 10136: { 10136: template 10136: static _OI 10136: __copy_m(_II __first, _II __last, _OI __result) 10136: { 10136: typedef typename iterator_traits<_II>::difference_type _Distance; 10136: for(_Distance __n = __last - __first; __n > 0; --__n) 10136: { 10136: *__result = *__first; 10136: ++__first; 10136: ++__result; 10136: } 10136: return __result; 10136: } 10136: }; 10136: 10136: 10136: template<> 10136: struct __copy_move 10136: { 10136: template 10136: static _OI 10136: __copy_m(_II __first, _II __last, _OI __result) 10136: { 10136: typedef typename iterator_traits<_II>::difference_type _Distance; 10136: for(_Distance __n = __last - __first; __n > 0; --__n) 10136: { 10136: *__result = std::move(*__first); 10136: ++__first; 10136: ++__result; 10136: } 10136: return __result; 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct __copy_move<_IsMove, true, random_access_iterator_tag> 10136: { 10136: template 10136: static _Tp* 10136: __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) 10136: { 10136: 10136: using __assignable = conditional<_IsMove, 10136: is_move_assignable<_Tp>, 10136: is_copy_assignable<_Tp>>; 10136: 10136: static_assert( __assignable::type::value, "type is not assignable" ); 10136: 10136: const ptrdiff_t _Num = __last - __first; 10136: if (_Num) 10136: __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); 10136: return __result + _Num; 10136: } 10136: }; 10136: 10136: template 10136: inline _OI 10136: __copy_move_a(_II __first, _II __last, _OI __result) 10136: { 10136: typedef typename iterator_traits<_II>::value_type _ValueTypeI; 10136: typedef typename iterator_traits<_OI>::value_type _ValueTypeO; 10136: typedef typename iterator_traits<_II>::iterator_category _Category; 10136: const bool __simple = (__is_trivial(_ValueTypeI) 10136: && __is_pointer<_II>::__value 10136: && __is_pointer<_OI>::__value 10136: && __are_same<_ValueTypeI, _ValueTypeO>::__value); 10136: 10136: return std::__copy_move<_IsMove, __simple, 10136: _Category>::__copy_m(__first, __last, __result); 10136: } 10136: 10136: 10136: 10136: template 10136: struct char_traits; 10136: 10136: template 10136: class istreambuf_iterator; 10136: 10136: template 10136: class ostreambuf_iterator; 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 10136: __copy_move_a2(_CharT*, _CharT*, 10136: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 10136: __copy_move_a2(const _CharT*, const _CharT*, 10136: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: _CharT*>::__type 10136: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 10136: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 10136: 10136: template 10136: inline _OI 10136: __copy_move_a2(_II __first, _II __last, _OI __result) 10136: { 10136: return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first), 10136: std::__niter_base(__last), 10136: std::__niter_base(__result))); 10136: } 10136: # 444 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline _OI 10136: copy(_II __first, _II __last, _OI __result) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return (std::__copy_move_a2<__is_move_iterator<_II>::__value> 10136: (std::__miter_base(__first), std::__miter_base(__last), 10136: __result)); 10136: } 10136: # 477 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline _OI 10136: move(_II __first, _II __last, _OI __result) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__copy_move_a2(std::__miter_base(__first), 10136: std::__miter_base(__last), __result); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __copy_move_backward 10136: { 10136: template 10136: static _BI2 10136: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 10136: { 10136: while (__first != __last) 10136: *--__result = *--__last; 10136: return __result; 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct __copy_move_backward 10136: { 10136: template 10136: static _BI2 10136: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 10136: { 10136: while (__first != __last) 10136: *--__result = std::move(*--__last); 10136: return __result; 10136: } 10136: }; 10136: 10136: 10136: template<> 10136: struct __copy_move_backward 10136: { 10136: template 10136: static _BI2 10136: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 10136: { 10136: typename iterator_traits<_BI1>::difference_type __n; 10136: for (__n = __last - __first; __n > 0; --__n) 10136: *--__result = *--__last; 10136: return __result; 10136: } 10136: }; 10136: 10136: 10136: template<> 10136: struct __copy_move_backward 10136: { 10136: template 10136: static _BI2 10136: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 10136: { 10136: typename iterator_traits<_BI1>::difference_type __n; 10136: for (__n = __last - __first; __n > 0; --__n) 10136: *--__result = std::move(*--__last); 10136: return __result; 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> 10136: { 10136: template 10136: static _Tp* 10136: __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) 10136: { 10136: 10136: using __assignable = conditional<_IsMove, 10136: is_move_assignable<_Tp>, 10136: is_copy_assignable<_Tp>>; 10136: 10136: static_assert( __assignable::type::value, "type is not assignable" ); 10136: 10136: const ptrdiff_t _Num = __last - __first; 10136: if (_Num) 10136: __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); 10136: return __result - _Num; 10136: } 10136: }; 10136: 10136: template 10136: inline _BI2 10136: __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result) 10136: { 10136: typedef typename iterator_traits<_BI1>::value_type _ValueType1; 10136: typedef typename iterator_traits<_BI2>::value_type _ValueType2; 10136: typedef typename iterator_traits<_BI1>::iterator_category _Category; 10136: const bool __simple = (__is_trivial(_ValueType1) 10136: && __is_pointer<_BI1>::__value 10136: && __is_pointer<_BI2>::__value 10136: && __are_same<_ValueType1, _ValueType2>::__value); 10136: 10136: return std::__copy_move_backward<_IsMove, __simple, 10136: _Category>::__copy_move_b(__first, 10136: __last, 10136: __result); 10136: } 10136: 10136: template 10136: inline _BI2 10136: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) 10136: { 10136: return _BI2(std::__copy_move_backward_a<_IsMove> 10136: (std::__niter_base(__first), std::__niter_base(__last), 10136: std::__niter_base(__result))); 10136: } 10136: # 620 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline _BI2 10136: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> 10136: (std::__miter_base(__first), std::__miter_base(__last), 10136: __result)); 10136: } 10136: # 656 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline _BI2 10136: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__copy_move_backward_a2(std::__miter_base(__first), 10136: std::__miter_base(__last), 10136: __result); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline typename 10136: __gnu_cxx::__enable_if::__value, void>::__type 10136: __fill_a(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __value) 10136: { 10136: for (; __first != __last; ++__first) 10136: *__first = __value; 10136: } 10136: 10136: template 10136: inline typename 10136: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type 10136: __fill_a(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __value) 10136: { 10136: const _Tp __tmp = __value; 10136: for (; __first != __last; ++__first) 10136: *__first = __tmp; 10136: } 10136: 10136: 10136: template 10136: inline typename 10136: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type 10136: __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) 10136: { 10136: const _Tp __tmp = __c; 10136: if (const size_t __len = __last - __first) 10136: __builtin_memset(__first, static_cast(__tmp), __len); 10136: } 10136: # 722 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline void 10136: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) 10136: { 10136: 10136: 10136: 10136: ; 10136: 10136: std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), 10136: __value); 10136: } 10136: 10136: template 10136: inline typename 10136: __gnu_cxx::__enable_if::__value, _OutputIterator>::__type 10136: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) 10136: { 10136: for (__decltype(__n + 0) __niter = __n; 10136: __niter > 0; --__niter, (void) ++__first) 10136: *__first = __value; 10136: return __first; 10136: } 10136: 10136: template 10136: inline typename 10136: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type 10136: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) 10136: { 10136: const _Tp __tmp = __value; 10136: for (__decltype(__n + 0) __niter = __n; 10136: __niter > 0; --__niter, (void) ++__first) 10136: *__first = __tmp; 10136: return __first; 10136: } 10136: 10136: template 10136: inline typename 10136: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type 10136: __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c) 10136: { 10136: std::__fill_a(__first, __first + __n, __c); 10136: return __first + __n; 10136: } 10136: # 782 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline _OI 10136: fill_n(_OI __first, _Size __n, const _Tp& __value) 10136: { 10136: 10136: 10136: 10136: return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); 10136: } 10136: 10136: template 10136: struct __equal 10136: { 10136: template 10136: static bool 10136: equal(_II1 __first1, _II1 __last1, _II2 __first2) 10136: { 10136: for (; __first1 != __last1; ++__first1, (void) ++__first2) 10136: if (!(*__first1 == *__first2)) 10136: return false; 10136: return true; 10136: } 10136: }; 10136: 10136: template<> 10136: struct __equal 10136: { 10136: template 10136: static bool 10136: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) 10136: { 10136: if (const size_t __len = (__last1 - __first1)) 10136: return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len); 10136: return true; 10136: } 10136: }; 10136: 10136: template 10136: inline bool 10136: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) 10136: { 10136: typedef typename iterator_traits<_II1>::value_type _ValueType1; 10136: typedef typename iterator_traits<_II2>::value_type _ValueType2; 10136: const bool __simple = ((__is_integer<_ValueType1>::__value 10136: || __is_pointer<_ValueType1>::__value) 10136: && __is_pointer<_II1>::__value 10136: && __is_pointer<_II2>::__value 10136: && __are_same<_ValueType1, _ValueType2>::__value); 10136: 10136: return std::__equal<__simple>::equal(__first1, __last1, __first2); 10136: } 10136: 10136: template 10136: struct __lc_rai 10136: { 10136: template 10136: static _II1 10136: __newlast1(_II1, _II1 __last1, _II2, _II2) 10136: { return __last1; } 10136: 10136: template 10136: static bool 10136: __cnd2(_II __first, _II __last) 10136: { return __first != __last; } 10136: }; 10136: 10136: template<> 10136: struct __lc_rai 10136: { 10136: template 10136: static _RAI1 10136: __newlast1(_RAI1 __first1, _RAI1 __last1, 10136: _RAI2 __first2, _RAI2 __last2) 10136: { 10136: const typename iterator_traits<_RAI1>::difference_type 10136: __diff1 = __last1 - __first1; 10136: const typename iterator_traits<_RAI2>::difference_type 10136: __diff2 = __last2 - __first2; 10136: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; 10136: } 10136: 10136: template 10136: static bool 10136: __cnd2(_RAI, _RAI) 10136: { return true; } 10136: }; 10136: 10136: template 10136: bool 10136: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, 10136: _II2 __first2, _II2 __last2, 10136: _Compare __comp) 10136: { 10136: typedef typename iterator_traits<_II1>::iterator_category _Category1; 10136: typedef typename iterator_traits<_II2>::iterator_category _Category2; 10136: typedef std::__lc_rai<_Category1, _Category2> __rai_type; 10136: 10136: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); 10136: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); 10136: ++__first1, (void)++__first2) 10136: { 10136: if (__comp(__first1, __first2)) 10136: return true; 10136: if (__comp(__first2, __first1)) 10136: return false; 10136: } 10136: return __first1 == __last1 && __first2 != __last2; 10136: } 10136: 10136: template 10136: struct __lexicographical_compare 10136: { 10136: template 10136: static bool __lc(_II1, _II1, _II2, _II2); 10136: }; 10136: 10136: template 10136: template 10136: bool 10136: __lexicographical_compare<_BoolType>:: 10136: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 10136: { 10136: return std::__lexicographical_compare_impl(__first1, __last1, 10136: __first2, __last2, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: 10136: template<> 10136: struct __lexicographical_compare 10136: { 10136: template 10136: static bool 10136: __lc(const _Tp* __first1, const _Tp* __last1, 10136: const _Up* __first2, const _Up* __last2) 10136: { 10136: const size_t __len1 = __last1 - __first1; 10136: const size_t __len2 = __last2 - __first2; 10136: if (const size_t __len = std::min(__len1, __len2)) 10136: if (int __result = __builtin_memcmp(__first1, __first2, __len)) 10136: return __result < 0; 10136: return __len1 < __len2; 10136: } 10136: }; 10136: 10136: template 10136: inline bool 10136: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, 10136: _II2 __first2, _II2 __last2) 10136: { 10136: typedef typename iterator_traits<_II1>::value_type _ValueType1; 10136: typedef typename iterator_traits<_II2>::value_type _ValueType2; 10136: const bool __simple = 10136: (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value 10136: && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed 10136: && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed 10136: && __is_pointer<_II1>::__value 10136: && __is_pointer<_II2>::__value); 10136: 10136: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, 10136: __first2, __last2); 10136: } 10136: 10136: template 10136: _ForwardIterator 10136: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val, _Compare __comp) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::difference_type 10136: _DistanceType; 10136: 10136: _DistanceType __len = std::distance(__first, __last); 10136: 10136: while (__len > 0) 10136: { 10136: _DistanceType __half = __len >> 1; 10136: _ForwardIterator __middle = __first; 10136: std::advance(__middle, __half); 10136: if (__comp(__middle, __val)) 10136: { 10136: __first = __middle; 10136: ++__first; 10136: __len = __len - __half - 1; 10136: } 10136: else 10136: __len = __half; 10136: } 10136: return __first; 10136: } 10136: # 982 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline _ForwardIterator 10136: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__lower_bound(__first, __last, __val, 10136: __gnu_cxx::__ops::__iter_less_val()); 10136: } 10136: 10136: 10136: 10136: inline constexpr int 10136: __lg(int __n) 10136: { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } 10136: 10136: inline constexpr unsigned 10136: __lg(unsigned __n) 10136: { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } 10136: 10136: inline constexpr long 10136: __lg(long __n) 10136: { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 10136: 10136: inline constexpr unsigned long 10136: __lg(unsigned long __n) 10136: { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 10136: 10136: inline constexpr long long 10136: __lg(long long __n) 10136: { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 10136: 10136: inline constexpr unsigned long long 10136: __lg(unsigned long long __n) 10136: { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 10136: 10136: 10136: # 1037 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline bool 10136: equal(_II1 __first1, _II1 __last1, _II2 __first2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__equal_aux(std::__niter_base(__first1), 10136: std::__niter_base(__last1), 10136: std::__niter_base(__first2)); 10136: } 10136: # 1069 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline bool 10136: equal(_IIter1 __first1, _IIter1 __last1, 10136: _IIter2 __first2, _BinaryPredicate __binary_pred) 10136: { 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first1 != __last1; ++__first1, (void)++__first2) 10136: if (!bool(__binary_pred(*__first1, *__first2))) 10136: return false; 10136: return true; 10136: } 10136: 10136: 10136: 10136: template 10136: inline bool 10136: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 10136: { 10136: using _RATag = random_access_iterator_tag; 10136: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 10136: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 10136: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 10136: if (_RAIters()) 10136: { 10136: auto __d1 = std::distance(__first1, __last1); 10136: auto __d2 = std::distance(__first2, __last2); 10136: if (__d1 != __d2) 10136: return false; 10136: return std::equal(__first1, __last1, __first2); 10136: } 10136: 10136: for (; __first1 != __last1 && __first2 != __last2; 10136: ++__first1, (void)++__first2) 10136: if (!(*__first1 == *__first2)) 10136: return false; 10136: return __first1 == __last1 && __first2 == __last2; 10136: } 10136: 10136: 10136: template 10136: inline bool 10136: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: using _RATag = random_access_iterator_tag; 10136: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 10136: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 10136: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 10136: if (_RAIters()) 10136: { 10136: auto __d1 = std::distance(__first1, __last1); 10136: auto __d2 = std::distance(__first2, __last2); 10136: if (__d1 != __d2) 10136: return false; 10136: return std::equal(__first1, __last1, __first2, 10136: __binary_pred); 10136: } 10136: 10136: for (; __first1 != __last1 && __first2 != __last2; 10136: ++__first1, (void)++__first2) 10136: if (!bool(__binary_pred(*__first1, *__first2))) 10136: return false; 10136: return __first1 == __last1 && __first2 == __last2; 10136: } 10136: # 1156 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline bool 10136: equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__equal4(__first1, __last1, __first2, __last2); 10136: } 10136: # 1188 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline bool 10136: equal(_IIter1 __first1, _IIter1 __last1, 10136: _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__equal4(__first1, __last1, __first2, __last2, 10136: __binary_pred); 10136: } 10136: # 1219 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline bool 10136: lexicographical_compare(_II1 __first1, _II1 __last1, 10136: _II2 __first2, _II2 __last2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__lexicographical_compare_aux(std::__niter_base(__first1), 10136: std::__niter_base(__last1), 10136: std::__niter_base(__first2), 10136: std::__niter_base(__last2)); 10136: } 10136: # 1255 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline bool 10136: lexicographical_compare(_II1 __first1, _II1 __last1, 10136: _II2 __first2, _II2 __last2, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__lexicographical_compare_impl 10136: (__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: pair<_InputIterator1, _InputIterator2> 10136: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 10136: { 10136: while (__first1 != __last1 && __binary_pred(__first1, __first2)) 10136: { 10136: ++__first1; 10136: ++__first2; 10136: } 10136: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 10136: } 10136: # 1298 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline pair<_InputIterator1, _InputIterator2> 10136: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__mismatch(__first1, __last1, __first2, 10136: __gnu_cxx::__ops::__iter_equal_to_iter()); 10136: } 10136: # 1331 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline pair<_InputIterator1, _InputIterator2> 10136: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 10136: { 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__mismatch(__first1, __last1, __first2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 10136: } 10136: 10136: 10136: 10136: template 10136: pair<_InputIterator1, _InputIterator2> 10136: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2 10136: && __binary_pred(__first1, __first2)) 10136: { 10136: ++__first1; 10136: ++__first2; 10136: } 10136: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 10136: } 10136: # 1378 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline pair<_InputIterator1, _InputIterator2> 10136: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__mismatch(__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_equal_to_iter()); 10136: } 10136: # 1413 "/usr/include/c++/8/bits/stl_algobase.h" 3 10136: template 10136: inline pair<_InputIterator1, _InputIterator2> 10136: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__mismatch(__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 10136: } 10136: 10136: 10136: 10136: 10136: } 10136: # 63 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/bits/allocator.h" 1 3 10136: # 46 "/usr/include/c++/8/bits/allocator.h" 3 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++allocator.h" 1 3 10136: # 33 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++allocator.h" 3 10136: # 1 "/usr/include/c++/8/ext/new_allocator.h" 1 3 10136: # 40 "/usr/include/c++/8/ext/new_allocator.h" 3 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: using std::size_t; 10136: using std::ptrdiff_t; 10136: # 57 "/usr/include/c++/8/ext/new_allocator.h" 3 10136: template 10136: class new_allocator 10136: { 10136: public: 10136: typedef size_t size_type; 10136: typedef ptrdiff_t difference_type; 10136: typedef _Tp* pointer; 10136: typedef const _Tp* const_pointer; 10136: typedef _Tp& reference; 10136: typedef const _Tp& const_reference; 10136: typedef _Tp value_type; 10136: 10136: template 10136: struct rebind 10136: { typedef new_allocator<_Tp1> other; }; 10136: 10136: 10136: 10136: 10136: typedef std::true_type propagate_on_container_move_assignment; 10136: 10136: 10136: new_allocator() noexcept { } 10136: 10136: new_allocator(const new_allocator&) noexcept { } 10136: 10136: template 10136: new_allocator(const new_allocator<_Tp1>&) noexcept { } 10136: 10136: ~new_allocator() noexcept { } 10136: 10136: pointer 10136: address(reference __x) const noexcept 10136: { return std::__addressof(__x); } 10136: 10136: const_pointer 10136: address(const_reference __x) const noexcept 10136: { return std::__addressof(__x); } 10136: 10136: 10136: 10136: pointer 10136: allocate(size_type __n, const void* = static_cast(0)) 10136: { 10136: if (__n > this->max_size()) 10136: std::__throw_bad_alloc(); 10136: # 111 "/usr/include/c++/8/ext/new_allocator.h" 3 10136: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); 10136: } 10136: 10136: 10136: void 10136: deallocate(pointer __p, size_type) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ::operator delete(__p); 10136: } 10136: 10136: size_type 10136: max_size() const noexcept 10136: { return size_t(-1) / sizeof(_Tp); } 10136: 10136: 10136: template 10136: void 10136: construct(_Up* __p, _Args&&... __args) 10136: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 10136: 10136: template 10136: void 10136: destroy(_Up* __p) { __p->~_Up(); } 10136: # 151 "/usr/include/c++/8/ext/new_allocator.h" 3 10136: }; 10136: 10136: template 10136: inline bool 10136: operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) 10136: { return true; } 10136: 10136: template 10136: inline bool 10136: operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) 10136: { return false; } 10136: 10136: 10136: } 10136: # 34 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++allocator.h" 2 3 10136: 10136: 10136: namespace std 10136: { 10136: # 47 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++allocator.h" 3 10136: template 10136: using __allocator_base = __gnu_cxx::new_allocator<_Tp>; 10136: } 10136: # 47 "/usr/include/c++/8/bits/allocator.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/memoryfwd.h" 1 3 10136: # 46 "/usr/include/c++/8/bits/memoryfwd.h" 3 10136: 10136: # 47 "/usr/include/c++/8/bits/memoryfwd.h" 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 63 "/usr/include/c++/8/bits/memoryfwd.h" 3 10136: template 10136: class allocator; 10136: 10136: template<> 10136: class allocator; 10136: 10136: 10136: template 10136: struct uses_allocator; 10136: 10136: 10136: 10136: 10136: } 10136: # 48 "/usr/include/c++/8/bits/allocator.h" 2 3 10136: # 57 "/usr/include/c++/8/bits/allocator.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: class allocator 10136: { 10136: public: 10136: typedef size_t size_type; 10136: typedef ptrdiff_t difference_type; 10136: typedef void* pointer; 10136: typedef const void* const_pointer; 10136: typedef void value_type; 10136: 10136: template 10136: struct rebind 10136: { typedef allocator<_Tp1> other; }; 10136: 10136: 10136: 10136: 10136: typedef true_type propagate_on_container_move_assignment; 10136: 10136: typedef true_type is_always_equal; 10136: 10136: template 10136: void 10136: construct(_Up* __p, _Args&&... __args) 10136: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 10136: 10136: template 10136: void 10136: destroy(_Up* __p) { __p->~_Up(); } 10136: 10136: }; 10136: # 107 "/usr/include/c++/8/bits/allocator.h" 3 10136: template 10136: class allocator : public __allocator_base<_Tp> 10136: { 10136: public: 10136: typedef size_t size_type; 10136: typedef ptrdiff_t difference_type; 10136: typedef _Tp* pointer; 10136: typedef const _Tp* const_pointer; 10136: typedef _Tp& reference; 10136: typedef const _Tp& const_reference; 10136: typedef _Tp value_type; 10136: 10136: template 10136: struct rebind 10136: { typedef allocator<_Tp1> other; }; 10136: 10136: 10136: 10136: 10136: typedef true_type propagate_on_container_move_assignment; 10136: 10136: typedef true_type is_always_equal; 10136: 10136: 10136: allocator() throw() { } 10136: 10136: allocator(const allocator& __a) throw() 10136: : __allocator_base<_Tp>(__a) { } 10136: 10136: template 10136: allocator(const allocator<_Tp1>&) throw() { } 10136: 10136: ~allocator() throw() { } 10136: 10136: 10136: }; 10136: 10136: template 10136: inline bool 10136: operator==(const allocator<_T1>&, const allocator<_T2>&) 10136: noexcept 10136: { return true; } 10136: 10136: template 10136: inline bool 10136: operator==(const allocator<_Tp>&, const allocator<_Tp>&) 10136: noexcept 10136: { return true; } 10136: 10136: template 10136: inline bool 10136: operator!=(const allocator<_T1>&, const allocator<_T2>&) 10136: noexcept 10136: { return false; } 10136: 10136: template 10136: inline bool 10136: operator!=(const allocator<_Tp>&, const allocator<_Tp>&) 10136: noexcept 10136: { return false; } 10136: 10136: 10136: 10136: template 10136: class allocator 10136: { 10136: public: 10136: typedef _Tp value_type; 10136: template allocator(const allocator<_Up>&) { } 10136: }; 10136: 10136: template 10136: class allocator 10136: { 10136: public: 10136: typedef _Tp value_type; 10136: template allocator(const allocator<_Up>&) { } 10136: }; 10136: 10136: template 10136: class allocator 10136: { 10136: public: 10136: typedef _Tp value_type; 10136: template allocator(const allocator<_Up>&) { } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern template class allocator; 10136: extern template class allocator; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __alloc_swap 10136: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; 10136: 10136: template 10136: struct __alloc_swap<_Alloc, false> 10136: { 10136: static void 10136: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept 10136: { 10136: 10136: if (__one != __two) 10136: swap(__one, __two); 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct __alloc_neq 10136: { 10136: static bool 10136: _S_do_it(const _Alloc&, const _Alloc&) 10136: { return false; } 10136: }; 10136: 10136: template 10136: struct __alloc_neq<_Alloc, false> 10136: { 10136: static bool 10136: _S_do_it(const _Alloc& __one, const _Alloc& __two) 10136: { return __one != __two; } 10136: }; 10136: 10136: 10136: template, 10136: is_nothrow_move_constructible>::value> 10136: struct __shrink_to_fit_aux 10136: { static bool _S_do_it(_Tp&) noexcept { return false; } }; 10136: 10136: template 10136: struct __shrink_to_fit_aux<_Tp, true> 10136: { 10136: static bool 10136: _S_do_it(_Tp& __c) noexcept 10136: { 10136: 10136: try 10136: { 10136: _Tp(__make_move_if_noexcept_iterator(__c.begin()), 10136: __make_move_if_noexcept_iterator(__c.end()), 10136: __c.get_allocator()).swap(__c); 10136: return true; 10136: } 10136: catch(...) 10136: { return false; } 10136: 10136: 10136: 10136: } 10136: }; 10136: 10136: 10136: 10136: } 10136: # 64 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_construct.h" 1 3 10136: # 61 "/usr/include/c++/8/bits/stl_construct.h" 3 10136: # 1 "/usr/include/c++/8/ext/alloc_traits.h" 1 3 10136: # 32 "/usr/include/c++/8/ext/alloc_traits.h" 3 10136: 10136: # 33 "/usr/include/c++/8/ext/alloc_traits.h" 3 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/alloc_traits.h" 1 3 10136: # 41 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: struct __allocator_traits_base 10136: { 10136: template 10136: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 10136: 10136: template 10136: struct __rebind<_Tp, _Up, 10136: __void_t::other>> 10136: { using type = typename _Tp::template rebind<_Up>::other; }; 10136: 10136: protected: 10136: template 10136: using __pointer = typename _Tp::pointer; 10136: template 10136: using __c_pointer = typename _Tp::const_pointer; 10136: template 10136: using __v_pointer = typename _Tp::void_pointer; 10136: template 10136: using __cv_pointer = typename _Tp::const_void_pointer; 10136: template 10136: using __pocca = typename _Tp::propagate_on_container_copy_assignment; 10136: template 10136: using __pocma = typename _Tp::propagate_on_container_move_assignment; 10136: template 10136: using __pocs = typename _Tp::propagate_on_container_swap; 10136: template 10136: using __equal = typename _Tp::is_always_equal; 10136: }; 10136: 10136: template 10136: using __alloc_rebind 10136: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct allocator_traits : __allocator_traits_base 10136: { 10136: 10136: typedef _Alloc allocator_type; 10136: 10136: typedef typename _Alloc::value_type value_type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: using pointer = __detected_or_t; 10136: 10136: private: 10136: 10136: template class _Func, typename _Tp, typename = void> 10136: struct _Ptr 10136: { 10136: using type = typename pointer_traits::template rebind<_Tp>; 10136: }; 10136: 10136: template class _Func, typename _Tp> 10136: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> 10136: { 10136: using type = _Func<_Alloc>; 10136: }; 10136: 10136: 10136: template 10136: struct _Diff 10136: { using type = typename pointer_traits<_PtrT>::difference_type; }; 10136: 10136: template 10136: struct _Diff<_A2, _PtrT, __void_t> 10136: { using type = typename _A2::difference_type; }; 10136: 10136: 10136: template 10136: struct _Size : make_unsigned<_DiffT> { }; 10136: 10136: template 10136: struct _Size<_A2, _DiffT, __void_t> 10136: { using type = typename _A2::size_type; }; 10136: 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using void_pointer = typename _Ptr<__v_pointer, void>::type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using difference_type = typename _Diff<_Alloc, pointer>::type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using size_type = typename _Size<_Alloc, difference_type>::type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using propagate_on_container_copy_assignment 10136: = __detected_or_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using propagate_on_container_move_assignment 10136: = __detected_or_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using propagate_on_container_swap 10136: = __detected_or_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: using is_always_equal 10136: = __detected_or_t::type, __equal, _Alloc>; 10136: 10136: template 10136: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; 10136: template 10136: using rebind_traits = allocator_traits>; 10136: 10136: private: 10136: template 10136: static auto 10136: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) 10136: -> decltype(__a.allocate(__n, __hint)) 10136: { return __a.allocate(__n, __hint); } 10136: 10136: template 10136: static pointer 10136: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) 10136: { return __a.allocate(__n); } 10136: 10136: template 10136: struct __construct_helper 10136: { 10136: template()->construct( 10136: std::declval<_Tp*>(), std::declval<_Args>()...))> 10136: static true_type __test(int); 10136: 10136: template 10136: static false_type __test(...); 10136: 10136: using type = decltype(__test<_Alloc>(0)); 10136: }; 10136: 10136: template 10136: using __has_construct 10136: = typename __construct_helper<_Tp, _Args...>::type; 10136: 10136: template 10136: static _Require<__has_construct<_Tp, _Args...>> 10136: _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 10136: { __a.construct(__p, std::forward<_Args>(__args)...); } 10136: 10136: template 10136: static 10136: _Require<__and_<__not_<__has_construct<_Tp, _Args...>>, 10136: is_constructible<_Tp, _Args...>>> 10136: _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) 10136: { ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); } 10136: 10136: template 10136: static auto 10136: _S_destroy(_Alloc2& __a, _Tp* __p, int) 10136: -> decltype(__a.destroy(__p)) 10136: { __a.destroy(__p); } 10136: 10136: template 10136: static void 10136: _S_destroy(_Alloc2&, _Tp* __p, ...) 10136: { __p->~_Tp(); } 10136: 10136: template 10136: static auto 10136: _S_max_size(_Alloc2& __a, int) 10136: -> decltype(__a.max_size()) 10136: { return __a.max_size(); } 10136: 10136: template 10136: static size_type 10136: _S_max_size(_Alloc2&, ...) 10136: { 10136: 10136: 10136: return __gnu_cxx::__numeric_traits::__max 10136: / sizeof(value_type); 10136: } 10136: 10136: template 10136: static auto 10136: _S_select(_Alloc2& __a, int) 10136: -> decltype(__a.select_on_container_copy_construction()) 10136: { return __a.select_on_container_copy_construction(); } 10136: 10136: template 10136: static _Alloc2 10136: _S_select(_Alloc2& __a, ...) 10136: { return __a; } 10136: 10136: public: 10136: # 299 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: static pointer 10136: allocate(_Alloc& __a, size_type __n) 10136: { return __a.allocate(__n); } 10136: # 314 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: static pointer 10136: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) 10136: { return _S_allocate(__a, __n, __hint, 0); } 10136: # 326 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: static void 10136: deallocate(_Alloc& __a, pointer __p, size_type __n) 10136: { __a.deallocate(__p, __n); } 10136: # 341 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: template 10136: static auto construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 10136: -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) 10136: { _S_construct(__a, __p, std::forward<_Args>(__args)...); } 10136: # 354 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: template 10136: static void destroy(_Alloc& __a, _Tp* __p) 10136: { _S_destroy(__a, __p, 0); } 10136: # 366 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: static size_type max_size(const _Alloc& __a) noexcept 10136: { return _S_max_size(__a, 0); } 10136: # 377 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: static _Alloc 10136: select_on_container_copy_construction(const _Alloc& __rhs) 10136: { return _S_select(__rhs, 0); } 10136: }; 10136: 10136: 10136: template 10136: struct allocator_traits> 10136: { 10136: 10136: using allocator_type = allocator<_Tp>; 10136: 10136: using value_type = _Tp; 10136: 10136: 10136: using pointer = _Tp*; 10136: 10136: 10136: using const_pointer = const _Tp*; 10136: 10136: 10136: using void_pointer = void*; 10136: 10136: 10136: using const_void_pointer = const void*; 10136: 10136: 10136: using difference_type = std::ptrdiff_t; 10136: 10136: 10136: using size_type = std::size_t; 10136: 10136: 10136: using propagate_on_container_copy_assignment = false_type; 10136: 10136: 10136: using propagate_on_container_move_assignment = true_type; 10136: 10136: 10136: using propagate_on_container_swap = false_type; 10136: 10136: 10136: using is_always_equal = true_type; 10136: 10136: template 10136: using rebind_alloc = allocator<_Up>; 10136: 10136: template 10136: using rebind_traits = allocator_traits>; 10136: # 434 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: static pointer 10136: allocate(allocator_type& __a, size_type __n) 10136: { return __a.allocate(__n); } 10136: # 448 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: static pointer 10136: allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) 10136: { return __a.allocate(__n, __hint); } 10136: # 460 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: static void 10136: deallocate(allocator_type& __a, pointer __p, size_type __n) 10136: { __a.deallocate(__p, __n); } 10136: # 472 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: template 10136: static void 10136: construct(allocator_type& __a, _Up* __p, _Args&&... __args) 10136: { __a.construct(__p, std::forward<_Args>(__args)...); } 10136: # 484 "/usr/include/c++/8/bits/alloc_traits.h" 3 10136: template 10136: static void 10136: destroy(allocator_type& __a, _Up* __p) 10136: { __a.destroy(__p); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: static size_type 10136: max_size(const allocator_type& __a) noexcept 10136: { return __a.max_size(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: static allocator_type 10136: select_on_container_copy_construction(const allocator_type& __rhs) 10136: { return __rhs; } 10136: }; 10136: 10136: 10136: template 10136: inline void 10136: __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) 10136: { __one = __two; } 10136: 10136: template 10136: inline void 10136: __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) 10136: { } 10136: 10136: template 10136: inline void __alloc_on_copy(_Alloc& __one, const _Alloc& __two) 10136: { 10136: typedef allocator_traits<_Alloc> __traits; 10136: typedef typename __traits::propagate_on_container_copy_assignment __pocca; 10136: __do_alloc_on_copy(__one, __two, __pocca()); 10136: } 10136: 10136: template 10136: inline _Alloc __alloc_on_copy(const _Alloc& __a) 10136: { 10136: typedef allocator_traits<_Alloc> __traits; 10136: return __traits::select_on_container_copy_construction(__a); 10136: } 10136: 10136: template 10136: inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) 10136: { __one = std::move(__two); } 10136: 10136: template 10136: inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) 10136: { } 10136: 10136: template 10136: inline void __alloc_on_move(_Alloc& __one, _Alloc& __two) 10136: { 10136: typedef allocator_traits<_Alloc> __traits; 10136: typedef typename __traits::propagate_on_container_move_assignment __pocma; 10136: __do_alloc_on_move(__one, __two, __pocma()); 10136: } 10136: 10136: template 10136: inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) 10136: { 10136: using std::swap; 10136: swap(__one, __two); 10136: } 10136: 10136: template 10136: inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) 10136: { } 10136: 10136: template 10136: inline void __alloc_on_swap(_Alloc& __one, _Alloc& __two) 10136: { 10136: typedef allocator_traits<_Alloc> __traits; 10136: typedef typename __traits::propagate_on_container_swap __pocs; 10136: __do_alloc_on_swap(__one, __two, __pocs()); 10136: } 10136: 10136: template 10136: class __is_copy_insertable_impl 10136: { 10136: typedef allocator_traits<_Alloc> _Traits; 10136: 10136: template(), 10136: std::declval<_Up*>(), 10136: std::declval()))> 10136: static true_type 10136: _M_select(int); 10136: 10136: template 10136: static false_type 10136: _M_select(...); 10136: 10136: public: 10136: typedef decltype(_M_select(0)) type; 10136: }; 10136: 10136: 10136: template 10136: struct __is_copy_insertable 10136: : __is_copy_insertable_impl<_Alloc>::type 10136: { }; 10136: 10136: 10136: template 10136: struct __is_copy_insertable> 10136: : is_copy_constructible<_Tp> 10136: { }; 10136: 10136: 10136: 10136: template 10136: struct __is_allocator : false_type { }; 10136: 10136: template 10136: struct __is_allocator<_Alloc, 10136: __void_t().allocate(size_t{}))>> 10136: : true_type { }; 10136: 10136: template 10136: using _RequireAllocator 10136: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; 10136: 10136: 10136: 10136: } 10136: # 37 "/usr/include/c++/8/ext/alloc_traits.h" 2 3 10136: 10136: 10136: 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __alloc_traits 10136: 10136: : std::allocator_traits<_Alloc> 10136: 10136: { 10136: typedef _Alloc allocator_type; 10136: 10136: typedef std::allocator_traits<_Alloc> _Base_type; 10136: typedef typename _Base_type::value_type value_type; 10136: typedef typename _Base_type::pointer pointer; 10136: typedef typename _Base_type::const_pointer const_pointer; 10136: typedef typename _Base_type::size_type size_type; 10136: typedef typename _Base_type::difference_type difference_type; 10136: 10136: typedef value_type& reference; 10136: typedef const value_type& const_reference; 10136: using _Base_type::allocate; 10136: using _Base_type::deallocate; 10136: using _Base_type::construct; 10136: using _Base_type::destroy; 10136: using _Base_type::max_size; 10136: 10136: private: 10136: template 10136: using __is_custom_pointer 10136: = std::__and_, 10136: std::__not_>>; 10136: 10136: public: 10136: 10136: template 10136: static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type 10136: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) 10136: { 10136: _Base_type::construct(__a, std::__to_address(__p), 10136: std::forward<_Args>(__args)...); 10136: } 10136: 10136: 10136: template 10136: static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type 10136: destroy(_Alloc& __a, _Ptr __p) 10136: { _Base_type::destroy(__a, std::__to_address(__p)); } 10136: 10136: static _Alloc _S_select_on_copy(const _Alloc& __a) 10136: { return _Base_type::select_on_container_copy_construction(__a); } 10136: 10136: static void _S_on_swap(_Alloc& __a, _Alloc& __b) 10136: { std::__alloc_on_swap(__a, __b); } 10136: 10136: static constexpr bool _S_propagate_on_copy_assign() 10136: { return _Base_type::propagate_on_container_copy_assignment::value; } 10136: 10136: static constexpr bool _S_propagate_on_move_assign() 10136: { return _Base_type::propagate_on_container_move_assignment::value; } 10136: 10136: static constexpr bool _S_propagate_on_swap() 10136: { return _Base_type::propagate_on_container_swap::value; } 10136: 10136: static constexpr bool _S_always_equal() 10136: { return _Base_type::is_always_equal::value; } 10136: 10136: static constexpr bool _S_nothrow_move() 10136: { return _S_propagate_on_move_assign() || _S_always_equal(); } 10136: 10136: template 10136: struct rebind 10136: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; 10136: # 158 "/usr/include/c++/8/ext/alloc_traits.h" 3 10136: }; 10136: 10136: 10136: } 10136: # 62 "/usr/include/c++/8/bits/stl_construct.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline void 10136: _Construct(_T1* __p, _Args&&... __args) 10136: { ::new(static_cast(__p)) _T1(std::forward<_Args>(__args)...); } 10136: # 87 "/usr/include/c++/8/bits/stl_construct.h" 3 10136: template 10136: inline void 10136: _Construct_novalue(_T1* __p) 10136: { ::new(static_cast(__p)) _T1; } 10136: 10136: 10136: 10136: 10136: template 10136: inline void 10136: _Destroy(_Tp* __pointer) 10136: { __pointer->~_Tp(); } 10136: 10136: template 10136: struct _Destroy_aux 10136: { 10136: template 10136: static void 10136: __destroy(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: for (; __first != __last; ++__first) 10136: std::_Destroy(std::__addressof(*__first)); 10136: } 10136: }; 10136: 10136: template<> 10136: struct _Destroy_aux 10136: { 10136: template 10136: static void 10136: __destroy(_ForwardIterator, _ForwardIterator) { } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline void 10136: _Destroy(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _Value_type; 10136: 10136: 10136: static_assert(is_destructible<_Value_type>::value, 10136: "value type is destructible"); 10136: 10136: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: 10136: __destroy(__first, __last); 10136: } 10136: 10136: template 10136: struct _Destroy_n_aux 10136: { 10136: template 10136: static _ForwardIterator 10136: __destroy_n(_ForwardIterator __first, _Size __count) 10136: { 10136: for (; __count > 0; (void)++__first, --__count) 10136: std::_Destroy(std::__addressof(*__first)); 10136: return __first; 10136: } 10136: }; 10136: 10136: template<> 10136: struct _Destroy_n_aux 10136: { 10136: template 10136: static _ForwardIterator 10136: __destroy_n(_ForwardIterator __first, _Size __count) 10136: { 10136: std::advance(__first, __count); 10136: return __first; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline _ForwardIterator 10136: _Destroy_n(_ForwardIterator __first, _Size __count) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _Value_type; 10136: 10136: 10136: static_assert(is_destructible<_Value_type>::value, 10136: "value type is destructible"); 10136: 10136: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>:: 10136: __destroy_n(__first, __count); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void 10136: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 10136: _Allocator& __alloc) 10136: { 10136: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 10136: for (; __first != __last; ++__first) 10136: __traits::destroy(__alloc, std::__addressof(*__first)); 10136: } 10136: 10136: template 10136: inline void 10136: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 10136: allocator<_Tp>&) 10136: { 10136: _Destroy(__first, __last); 10136: } 10136: # 232 "/usr/include/c++/8/bits/stl_construct.h" 3 10136: 10136: } 10136: # 65 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_uninitialized.h" 1 3 10136: # 67 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: struct __uninitialized_copy 10136: { 10136: template 10136: static _ForwardIterator 10136: __uninit_copy(_InputIterator __first, _InputIterator __last, 10136: _ForwardIterator __result) 10136: { 10136: _ForwardIterator __cur = __result; 10136: try 10136: { 10136: for (; __first != __last; ++__first, (void)++__cur) 10136: std::_Construct(std::__addressof(*__cur), *__first); 10136: return __cur; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__result, __cur); 10136: throw; 10136: } 10136: } 10136: }; 10136: 10136: template<> 10136: struct __uninitialized_copy 10136: { 10136: template 10136: static _ForwardIterator 10136: __uninit_copy(_InputIterator __first, _InputIterator __last, 10136: _ForwardIterator __result) 10136: { return std::copy(__first, __last, __result); } 10136: }; 10136: # 113 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 10136: template 10136: inline _ForwardIterator 10136: uninitialized_copy(_InputIterator __first, _InputIterator __last, 10136: _ForwardIterator __result) 10136: { 10136: typedef typename iterator_traits<_InputIterator>::value_type 10136: _ValueType1; 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType2; 10136: 10136: 10136: 10136: 10136: typedef typename iterator_traits<_InputIterator>::reference _RefType1; 10136: typedef typename iterator_traits<_ForwardIterator>::reference _RefType2; 10136: const bool __assignable = is_assignable<_RefType2, _RefType1>::value; 10136: 10136: 10136: return std::__uninitialized_copy<__is_trivial(_ValueType1) 10136: && __is_trivial(_ValueType2) 10136: && __assignable>:: 10136: __uninit_copy(__first, __last, __result); 10136: } 10136: 10136: 10136: template 10136: struct __uninitialized_fill 10136: { 10136: template 10136: static void 10136: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __x) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: for (; __cur != __last; ++__cur) 10136: std::_Construct(std::__addressof(*__cur), __x); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur); 10136: throw; 10136: } 10136: } 10136: }; 10136: 10136: template<> 10136: struct __uninitialized_fill 10136: { 10136: template 10136: static void 10136: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __x) 10136: { std::fill(__first, __last, __x); } 10136: }; 10136: # 179 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 10136: template 10136: inline void 10136: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __x) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: 10136: 10136: 10136: 10136: const bool __assignable = is_copy_assignable<_ValueType>::value; 10136: 10136: 10136: std::__uninitialized_fill<__is_trivial(_ValueType) && __assignable>:: 10136: __uninit_fill(__first, __last, __x); 10136: } 10136: 10136: 10136: template 10136: struct __uninitialized_fill_n 10136: { 10136: template 10136: static _ForwardIterator 10136: __uninit_fill_n(_ForwardIterator __first, _Size __n, 10136: const _Tp& __x) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: for (; __n > 0; --__n, (void) ++__cur) 10136: std::_Construct(std::__addressof(*__cur), __x); 10136: return __cur; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur); 10136: throw; 10136: } 10136: } 10136: }; 10136: 10136: template<> 10136: struct __uninitialized_fill_n 10136: { 10136: template 10136: static _ForwardIterator 10136: __uninit_fill_n(_ForwardIterator __first, _Size __n, 10136: const _Tp& __x) 10136: { return std::fill_n(__first, __n, __x); } 10136: }; 10136: # 242 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 10136: template 10136: inline _ForwardIterator 10136: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: 10136: 10136: 10136: 10136: const bool __assignable = is_copy_assignable<_ValueType>::value; 10136: 10136: return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>:: 10136: __uninit_fill_n(__first, __n, __x); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _ForwardIterator 10136: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 10136: _ForwardIterator __result, _Allocator& __alloc) 10136: { 10136: _ForwardIterator __cur = __result; 10136: try 10136: { 10136: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 10136: for (; __first != __last; ++__first, (void)++__cur) 10136: __traits::construct(__alloc, std::__addressof(*__cur), *__first); 10136: return __cur; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__result, __cur, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 10136: _ForwardIterator __result, allocator<_Tp>&) 10136: { return std::uninitialized_copy(__first, __last, __result); } 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, 10136: _ForwardIterator __result, _Allocator& __alloc) 10136: { 10136: return std::__uninitialized_copy_a(std::make_move_iterator(__first), 10136: std::make_move_iterator(__last), 10136: __result, __alloc); 10136: } 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_move_if_noexcept_a(_InputIterator __first, 10136: _InputIterator __last, 10136: _ForwardIterator __result, 10136: _Allocator& __alloc) 10136: { 10136: return std::__uninitialized_copy_a 10136: (std::__make_move_if_noexcept_iterator(__first), 10136: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); 10136: } 10136: 10136: template 10136: void 10136: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __x, _Allocator& __alloc) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 10136: for (; __cur != __last; ++__cur) 10136: __traits::construct(__alloc, std::__addressof(*__cur), __x); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: inline void 10136: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __x, allocator<_Tp2>&) 10136: { std::uninitialized_fill(__first, __last, __x); } 10136: 10136: template 10136: _ForwardIterator 10136: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 10136: const _Tp& __x, _Allocator& __alloc) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 10136: for (; __n > 0; --__n, (void) ++__cur) 10136: __traits::construct(__alloc, std::__addressof(*__cur), __x); 10136: return __cur; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 10136: const _Tp& __x, allocator<_Tp2>&) 10136: { return std::uninitialized_fill_n(__first, __n, __x); } 10136: # 378 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_copy_move(_InputIterator1 __first1, 10136: _InputIterator1 __last1, 10136: _InputIterator2 __first2, 10136: _InputIterator2 __last2, 10136: _ForwardIterator __result, 10136: _Allocator& __alloc) 10136: { 10136: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, 10136: __result, 10136: __alloc); 10136: try 10136: { 10136: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__result, __mid, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_move_copy(_InputIterator1 __first1, 10136: _InputIterator1 __last1, 10136: _InputIterator2 __first2, 10136: _InputIterator2 __last2, 10136: _ForwardIterator __result, 10136: _Allocator& __alloc) 10136: { 10136: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, 10136: __result, 10136: __alloc); 10136: try 10136: { 10136: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__result, __mid, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, 10136: const _Tp& __x, _InputIterator __first, 10136: _InputIterator __last, _Allocator& __alloc) 10136: { 10136: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); 10136: try 10136: { 10136: return std::__uninitialized_move_a(__first, __last, __mid, __alloc); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__result, __mid, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: inline void 10136: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, 10136: _ForwardIterator __first2, 10136: _ForwardIterator __last2, const _Tp& __x, 10136: _Allocator& __alloc) 10136: { 10136: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, 10136: __first2, 10136: __alloc); 10136: try 10136: { 10136: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first2, __mid2, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __uninitialized_default_1 10136: { 10136: template 10136: static void 10136: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: for (; __cur != __last; ++__cur) 10136: std::_Construct(std::__addressof(*__cur)); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur); 10136: throw; 10136: } 10136: } 10136: }; 10136: 10136: template<> 10136: struct __uninitialized_default_1 10136: { 10136: template 10136: static void 10136: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: 10136: std::fill(__first, __last, _ValueType()); 10136: } 10136: }; 10136: 10136: template 10136: struct __uninitialized_default_n_1 10136: { 10136: template 10136: static _ForwardIterator 10136: __uninit_default_n(_ForwardIterator __first, _Size __n) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: for (; __n > 0; --__n, (void) ++__cur) 10136: std::_Construct(std::__addressof(*__cur)); 10136: return __cur; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur); 10136: throw; 10136: } 10136: } 10136: }; 10136: 10136: template<> 10136: struct __uninitialized_default_n_1 10136: { 10136: template 10136: static _ForwardIterator 10136: __uninit_default_n(_ForwardIterator __first, _Size __n) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: 10136: return std::fill_n(__first, __n, _ValueType()); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: inline void 10136: __uninitialized_default(_ForwardIterator __first, 10136: _ForwardIterator __last) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: 10136: const bool __assignable = is_copy_assignable<_ValueType>::value; 10136: 10136: std::__uninitialized_default_1<__is_trivial(_ValueType) 10136: && __assignable>:: 10136: __uninit_default(__first, __last); 10136: } 10136: 10136: 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_default_n(_ForwardIterator __first, _Size __n) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: 10136: const bool __assignable = is_copy_assignable<_ValueType>::value; 10136: 10136: return __uninitialized_default_n_1<__is_trivial(_ValueType) 10136: && __assignable>:: 10136: __uninit_default_n(__first, __n); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void 10136: __uninitialized_default_a(_ForwardIterator __first, 10136: _ForwardIterator __last, 10136: _Allocator& __alloc) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 10136: for (; __cur != __last; ++__cur) 10136: __traits::construct(__alloc, std::__addressof(*__cur)); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: inline void 10136: __uninitialized_default_a(_ForwardIterator __first, 10136: _ForwardIterator __last, 10136: allocator<_Tp>&) 10136: { std::__uninitialized_default(__first, __last); } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _ForwardIterator 10136: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 10136: _Allocator& __alloc) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 10136: for (; __n > 0; --__n, (void) ++__cur) 10136: __traits::construct(__alloc, std::__addressof(*__cur)); 10136: return __cur; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur, __alloc); 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 10136: allocator<_Tp>&) 10136: { return std::__uninitialized_default_n(__first, __n); } 10136: 10136: template 10136: struct __uninitialized_default_novalue_1 10136: { 10136: template 10136: static void 10136: __uninit_default_novalue(_ForwardIterator __first, 10136: _ForwardIterator __last) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: for (; __cur != __last; ++__cur) 10136: std::_Construct_novalue(std::__addressof(*__cur)); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur); 10136: throw; 10136: } 10136: } 10136: }; 10136: 10136: template<> 10136: struct __uninitialized_default_novalue_1 10136: { 10136: template 10136: static void 10136: __uninit_default_novalue(_ForwardIterator __first, 10136: _ForwardIterator __last) 10136: { 10136: } 10136: }; 10136: 10136: template 10136: struct __uninitialized_default_novalue_n_1 10136: { 10136: template 10136: static _ForwardIterator 10136: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 10136: { 10136: _ForwardIterator __cur = __first; 10136: try 10136: { 10136: for (; __n > 0; --__n, (void) ++__cur) 10136: std::_Construct_novalue(std::__addressof(*__cur)); 10136: return __cur; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur); 10136: throw; 10136: } 10136: } 10136: }; 10136: 10136: template<> 10136: struct __uninitialized_default_novalue_n_1 10136: { 10136: template 10136: static _ForwardIterator 10136: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 10136: { return std::next(__first, __n); } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: inline void 10136: __uninitialized_default_novalue(_ForwardIterator __first, 10136: _ForwardIterator __last) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: 10136: std::__uninitialized_default_novalue_1< 10136: is_trivially_default_constructible<_ValueType>::value>:: 10136: __uninit_default_novalue(__first, __last); 10136: } 10136: 10136: 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: 10136: return __uninitialized_default_novalue_n_1< 10136: is_trivially_default_constructible<_ValueType>::value>:: 10136: __uninit_default_novalue_n(__first, __n); 10136: } 10136: 10136: template 10136: _ForwardIterator 10136: __uninitialized_copy_n(_InputIterator __first, _Size __n, 10136: _ForwardIterator __result, input_iterator_tag) 10136: { 10136: _ForwardIterator __cur = __result; 10136: try 10136: { 10136: for (; __n > 0; --__n, (void) ++__first, ++__cur) 10136: std::_Construct(std::__addressof(*__cur), *__first); 10136: return __cur; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__result, __cur); 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: inline _ForwardIterator 10136: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, 10136: _ForwardIterator __result, 10136: random_access_iterator_tag) 10136: { return std::uninitialized_copy(__first, __first + __n, __result); } 10136: 10136: template 10136: pair<_InputIterator, _ForwardIterator> 10136: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 10136: _ForwardIterator __result, input_iterator_tag) 10136: { 10136: _ForwardIterator __cur = __result; 10136: try 10136: { 10136: for (; __n > 0; --__n, (void) ++__first, ++__cur) 10136: std::_Construct(std::__addressof(*__cur), *__first); 10136: return {__first, __cur}; 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__result, __cur); 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: inline pair<_RandomAccessIterator, _ForwardIterator> 10136: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, 10136: _ForwardIterator __result, 10136: random_access_iterator_tag) 10136: { 10136: auto __second_res = uninitialized_copy(__first, __first + __n, __result); 10136: auto __first_res = std::next(__first, __n); 10136: return {__first_res, __second_res}; 10136: } 10136: # 810 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 10136: template 10136: inline _ForwardIterator 10136: uninitialized_copy_n(_InputIterator __first, _Size __n, 10136: _ForwardIterator __result) 10136: { return std::__uninitialized_copy_n(__first, __n, __result, 10136: std::__iterator_category(__first)); } 10136: 10136: template 10136: inline pair<_InputIterator, _ForwardIterator> 10136: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 10136: _ForwardIterator __result) 10136: { 10136: return 10136: std::__uninitialized_copy_n_pair(__first, __n, __result, 10136: std::__iterator_category(__first)); 10136: } 10136: # 882 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 10136: 10136: } 10136: # 66 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_tempbuf.h" 1 3 10136: # 62 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 83 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 10136: template 10136: pair<_Tp*, ptrdiff_t> 10136: get_temporary_buffer(ptrdiff_t __len) noexcept 10136: { 10136: const ptrdiff_t __max = 10136: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 10136: if (__len > __max) 10136: __len = __max; 10136: 10136: while (__len > 0) 10136: { 10136: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), 10136: std::nothrow)); 10136: if (__tmp != 0) 10136: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); 10136: __len /= 2; 10136: } 10136: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); 10136: } 10136: # 110 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 10136: template 10136: inline void 10136: return_temporary_buffer(_Tp* __p) 10136: { ::operator delete(__p, std::nothrow); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class _Temporary_buffer 10136: { 10136: 10136: 10136: 10136: public: 10136: typedef _Tp value_type; 10136: typedef value_type* pointer; 10136: typedef pointer iterator; 10136: typedef ptrdiff_t size_type; 10136: 10136: protected: 10136: size_type _M_original_len; 10136: size_type _M_len; 10136: pointer _M_buffer; 10136: 10136: public: 10136: 10136: size_type 10136: size() const 10136: { return _M_len; } 10136: 10136: 10136: size_type 10136: requested_size() const 10136: { return _M_original_len; } 10136: 10136: 10136: iterator 10136: begin() 10136: { return _M_buffer; } 10136: 10136: 10136: iterator 10136: end() 10136: { return _M_buffer + _M_len; } 10136: 10136: 10136: 10136: 10136: 10136: _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last); 10136: 10136: ~_Temporary_buffer() 10136: { 10136: std::_Destroy(_M_buffer, _M_buffer + _M_len); 10136: std::return_temporary_buffer(_M_buffer); 10136: } 10136: 10136: private: 10136: 10136: _Temporary_buffer(const _Temporary_buffer&); 10136: 10136: void 10136: operator=(const _Temporary_buffer&); 10136: }; 10136: 10136: 10136: template 10136: struct __uninitialized_construct_buf_dispatch 10136: { 10136: template 10136: static void 10136: __ucr(_Pointer __first, _Pointer __last, 10136: _ForwardIterator __seed) 10136: { 10136: if(__first == __last) 10136: return; 10136: 10136: _Pointer __cur = __first; 10136: try 10136: { 10136: std::_Construct(std::__addressof(*__first), 10136: std::move(*__seed)); 10136: _Pointer __prev = __cur; 10136: ++__cur; 10136: for(; __cur != __last; ++__cur, ++__prev) 10136: std::_Construct(std::__addressof(*__cur), 10136: std::move(*__prev)); 10136: *__seed = std::move(*__prev); 10136: } 10136: catch(...) 10136: { 10136: std::_Destroy(__first, __cur); 10136: throw; 10136: } 10136: } 10136: }; 10136: 10136: template<> 10136: struct __uninitialized_construct_buf_dispatch 10136: { 10136: template 10136: static void 10136: __ucr(_Pointer, _Pointer, _ForwardIterator) { } 10136: }; 10136: # 229 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 10136: template 10136: inline void 10136: __uninitialized_construct_buf(_Pointer __first, _Pointer __last, 10136: _ForwardIterator __seed) 10136: { 10136: typedef typename std::iterator_traits<_Pointer>::value_type 10136: _ValueType; 10136: 10136: std::__uninitialized_construct_buf_dispatch< 10136: __has_trivial_constructor(_ValueType)>:: 10136: __ucr(__first, __last, __seed); 10136: } 10136: 10136: template 10136: _Temporary_buffer<_ForwardIterator, _Tp>:: 10136: _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) 10136: : _M_original_len(std::distance(__first, __last)), 10136: _M_len(0), _M_buffer(0) 10136: { 10136: try 10136: { 10136: std::pair __p(std::get_temporary_buffer< 10136: value_type>(_M_original_len)); 10136: _M_buffer = __p.first; 10136: _M_len = __p.second; 10136: if (_M_buffer) 10136: std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len, 10136: __first); 10136: } 10136: catch(...) 10136: { 10136: std::return_temporary_buffer(_M_buffer); 10136: _M_buffer = 0; 10136: _M_len = 0; 10136: throw; 10136: } 10136: } 10136: 10136: 10136: } 10136: # 67 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_raw_storage_iter.h" 1 3 10136: # 59 "/usr/include/c++/8/bits/stl_raw_storage_iter.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class raw_storage_iterator 10136: : public iterator 10136: { 10136: protected: 10136: _OutputIterator _M_iter; 10136: 10136: public: 10136: explicit 10136: raw_storage_iterator(_OutputIterator __x) 10136: : _M_iter(__x) {} 10136: 10136: raw_storage_iterator& 10136: operator*() { return *this; } 10136: 10136: raw_storage_iterator& 10136: operator=(const _Tp& __element) 10136: { 10136: std::_Construct(std::__addressof(*_M_iter), __element); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: raw_storage_iterator& 10136: operator=(_Tp&& __element) 10136: { 10136: std::_Construct(std::__addressof(*_M_iter), std::move(__element)); 10136: return *this; 10136: } 10136: 10136: 10136: raw_storage_iterator& 10136: operator++() 10136: { 10136: ++_M_iter; 10136: return *this; 10136: } 10136: 10136: raw_storage_iterator 10136: operator++(int) 10136: { 10136: raw_storage_iterator __tmp = *this; 10136: ++_M_iter; 10136: return __tmp; 10136: } 10136: 10136: 10136: 10136: _OutputIterator base() const { return _M_iter; } 10136: }; 10136: 10136: 10136: } 10136: # 68 "/usr/include/c++/8/memory" 2 3 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/iosfwd" 1 3 10136: # 36 "/usr/include/c++/8/iosfwd" 3 10136: 10136: # 37 "/usr/include/c++/8/iosfwd" 3 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/stringfwd.h" 1 3 10136: # 37 "/usr/include/c++/8/bits/stringfwd.h" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/stringfwd.h" 3 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct char_traits; 10136: 10136: template<> struct char_traits; 10136: 10136: 10136: template<> struct char_traits; 10136: 10136: 10136: 10136: 10136: template<> struct char_traits; 10136: template<> struct char_traits; 10136: 10136: 10136: namespace __cxx11 { 10136: 10136: template, 10136: typename _Alloc = allocator<_CharT> > 10136: class basic_string; 10136: 10136: 10136: typedef basic_string string; 10136: 10136: 10136: 10136: typedef basic_string wstring; 10136: 10136: 10136: 10136: 10136: 10136: typedef basic_string u16string; 10136: 10136: 10136: typedef basic_string u32string; 10136: 10136: 10136: } 10136: 10136: 10136: 10136: 10136: } 10136: # 40 "/usr/include/c++/8/iosfwd" 2 3 10136: # 1 "/usr/include/c++/8/bits/postypes.h" 1 3 10136: # 38 "/usr/include/c++/8/bits/postypes.h" 3 10136: 10136: # 39 "/usr/include/c++/8/bits/postypes.h" 3 10136: 10136: # 1 "/usr/include/c++/8/cwchar" 1 3 10136: # 39 "/usr/include/c++/8/cwchar" 3 10136: 10136: # 40 "/usr/include/c++/8/cwchar" 3 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/wchar.h" 1 3 4 10136: # 27 "/usr/include/wchar.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 10136: # 28 "/usr/include/wchar.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 10136: # 31 "/usr/include/wchar.h" 2 3 4 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 36 "/usr/include/wchar.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 1 3 4 10136: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 3 4 10136: typedef unsigned int wint_t; 10136: # 42 "/usr/include/wchar.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: typedef __mbstate_t mbstate_t; 10136: # 43 "/usr/include/wchar.h" 2 3 4 10136: # 79 "/usr/include/wchar.h" 3 4 10136: extern "C" { 10136: 10136: 10136: 10136: struct tm; 10136: 10136: 10136: 10136: extern wchar_t *wcscpy (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern wchar_t *wcscat (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern wchar_t *wcsncat (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, size_t __n) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 10136: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) throw (); 10136: 10136: 10136: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, 10136: size_t __n) throw (); 10136: 10136: 10136: 10136: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 10136: locale_t __loc) throw (); 10136: 10136: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 10136: size_t __n, locale_t __loc) throw (); 10136: 10136: 10136: 10136: 10136: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) throw (); 10136: 10136: 10136: 10136: extern size_t wcsxfrm (wchar_t *__restrict __s1, 10136: const wchar_t *__restrict __s2, size_t __n) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, 10136: locale_t __loc) throw (); 10136: 10136: 10136: 10136: 10136: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, 10136: size_t __n, locale_t __loc) throw (); 10136: 10136: 10136: extern wchar_t *wcsdup (const wchar_t *__s) throw () __attribute__ ((__malloc__)); 10136: 10136: 10136: 10136: 10136: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) 10136: throw () __asm ("wcschr") __attribute__ ((__pure__)); 10136: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) 10136: throw () __asm ("wcschr") __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) 10136: throw () __asm ("wcsrchr") __attribute__ ((__pure__)); 10136: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) 10136: throw () __asm ("wcsrchr") __attribute__ ((__pure__)); 10136: # 181 "/usr/include/wchar.h" 3 4 10136: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) 10136: throw () __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: 10136: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) 10136: throw () __attribute__ ((__pure__)); 10136: 10136: 10136: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) 10136: throw () __attribute__ ((__pure__)); 10136: 10136: 10136: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) 10136: throw () __asm ("wcspbrk") __attribute__ ((__pure__)); 10136: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, 10136: const wchar_t *__accept) 10136: throw () __asm ("wcspbrk") __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) 10136: throw () __asm ("wcsstr") __attribute__ ((__pure__)); 10136: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, 10136: const wchar_t *__needle) 10136: throw () __asm ("wcsstr") __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wchar_t *wcstok (wchar_t *__restrict __s, 10136: const wchar_t *__restrict __delim, 10136: wchar_t **__restrict __ptr) throw (); 10136: 10136: 10136: extern size_t wcslen (const wchar_t *__s) throw () __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: 10136: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) 10136: throw () __asm ("wcswcs") __attribute__ ((__pure__)); 10136: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, 10136: const wchar_t *__needle) 10136: throw () __asm ("wcswcs") __attribute__ ((__pure__)); 10136: # 240 "/usr/include/wchar.h" 3 4 10136: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) 10136: throw () __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: 10136: 10136: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) 10136: throw () __asm ("wmemchr") __attribute__ ((__pure__)); 10136: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, 10136: size_t __n) 10136: throw () __asm ("wmemchr") __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 10136: throw () __attribute__ ((__pure__)); 10136: 10136: 10136: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, 10136: const wchar_t *__restrict __s2, size_t __n) throw (); 10136: 10136: 10136: 10136: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) 10136: throw (); 10136: 10136: 10136: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw (); 10136: 10136: 10136: 10136: 10136: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, 10136: const wchar_t *__restrict __s2, size_t __n) 10136: throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t btowc (int __c) throw (); 10136: 10136: 10136: 10136: extern int wctob (wint_t __c) throw (); 10136: 10136: 10136: 10136: extern int mbsinit (const mbstate_t *__ps) throw () __attribute__ ((__pure__)); 10136: 10136: 10136: 10136: extern size_t mbrtowc (wchar_t *__restrict __pwc, 10136: const char *__restrict __s, size_t __n, 10136: mbstate_t *__restrict __p) throw (); 10136: 10136: 10136: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, 10136: mbstate_t *__restrict __ps) throw (); 10136: 10136: 10136: extern size_t __mbrlen (const char *__restrict __s, size_t __n, 10136: mbstate_t *__restrict __ps) throw (); 10136: extern size_t mbrlen (const char *__restrict __s, size_t __n, 10136: mbstate_t *__restrict __ps) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t __btowc_alias (int __c) __asm ("btowc"); 10136: extern __inline __attribute__ ((__gnu_inline__)) wint_t 10136: __attribute__ ((__leaf__)) btowc (int __c) throw () 10136: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' 10136: ? (wint_t) __c : __btowc_alias (__c)); } 10136: 10136: extern int __wctob_alias (wint_t __c) __asm ("wctob"); 10136: extern __inline __attribute__ ((__gnu_inline__)) int 10136: __attribute__ ((__leaf__)) wctob (wint_t __wc) throw () 10136: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' 10136: ? (int) __wc : __wctob_alias (__wc)); } 10136: 10136: extern __inline __attribute__ ((__gnu_inline__)) size_t 10136: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw () 10136: 10136: { return (__ps != __null 10136: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } 10136: 10136: 10136: 10136: 10136: extern size_t mbsrtowcs (wchar_t *__restrict __dst, 10136: const char **__restrict __src, size_t __len, 10136: mbstate_t *__restrict __ps) throw (); 10136: 10136: 10136: 10136: extern size_t wcsrtombs (char *__restrict __dst, 10136: const wchar_t **__restrict __src, size_t __len, 10136: mbstate_t *__restrict __ps) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, 10136: const char **__restrict __src, size_t __nmc, 10136: size_t __len, mbstate_t *__restrict __ps) throw (); 10136: 10136: 10136: 10136: extern size_t wcsnrtombs (char *__restrict __dst, 10136: const wchar_t **__restrict __src, 10136: size_t __nwc, size_t __len, 10136: mbstate_t *__restrict __ps) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int wcwidth (wchar_t __c) throw (); 10136: 10136: 10136: 10136: extern int wcswidth (const wchar_t *__s, size_t __n) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern double wcstod (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr) throw (); 10136: 10136: 10136: 10136: extern float wcstof (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr) throw (); 10136: extern long double wcstold (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr) throw (); 10136: # 397 "/usr/include/wchar.h" 3 4 10136: extern long int wcstol (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, int __base) throw (); 10136: 10136: 10136: 10136: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, int __base) 10136: throw (); 10136: 10136: 10136: 10136: 10136: __extension__ 10136: extern long long int wcstoll (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, int __base) 10136: throw (); 10136: 10136: 10136: 10136: __extension__ 10136: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, 10136: int __base) throw (); 10136: 10136: 10136: 10136: 10136: 10136: __extension__ 10136: extern long long int wcstoq (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, int __base) 10136: throw (); 10136: 10136: 10136: 10136: __extension__ 10136: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, 10136: int __base) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern long int wcstol_l (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, int __base, 10136: locale_t __loc) throw (); 10136: 10136: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, 10136: int __base, locale_t __loc) throw (); 10136: 10136: __extension__ 10136: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, 10136: int __base, locale_t __loc) throw (); 10136: 10136: __extension__ 10136: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, 10136: int __base, locale_t __loc) 10136: throw (); 10136: 10136: extern double wcstod_l (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, locale_t __loc) 10136: throw (); 10136: 10136: extern float wcstof_l (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, locale_t __loc) 10136: throw (); 10136: 10136: extern long double wcstold_l (const wchar_t *__restrict __nptr, 10136: wchar_t **__restrict __endptr, 10136: locale_t __loc) throw (); 10136: # 484 "/usr/include/wchar.h" 3 4 10136: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src) throw (); 10136: 10136: 10136: 10136: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, size_t __n) 10136: throw (); 10136: # 500 "/usr/include/wchar.h" 3 4 10136: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int fwide (__FILE *__fp, int __mode) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fwprintf (__FILE *__restrict __stream, 10136: const wchar_t *__restrict __format, ...) 10136: ; 10136: 10136: 10136: 10136: 10136: extern int wprintf (const wchar_t *__restrict __format, ...) 10136: ; 10136: 10136: extern int swprintf (wchar_t *__restrict __s, size_t __n, 10136: const wchar_t *__restrict __format, ...) 10136: throw () ; 10136: 10136: 10136: 10136: 10136: 10136: extern int vfwprintf (__FILE *__restrict __s, 10136: const wchar_t *__restrict __format, 10136: __gnuc_va_list __arg) 10136: ; 10136: 10136: 10136: 10136: 10136: extern int vwprintf (const wchar_t *__restrict __format, 10136: __gnuc_va_list __arg) 10136: ; 10136: 10136: 10136: extern int vswprintf (wchar_t *__restrict __s, size_t __n, 10136: const wchar_t *__restrict __format, 10136: __gnuc_va_list __arg) 10136: throw () ; 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fwscanf (__FILE *__restrict __stream, 10136: const wchar_t *__restrict __format, ...) 10136: ; 10136: 10136: 10136: 10136: 10136: extern int wscanf (const wchar_t *__restrict __format, ...) 10136: ; 10136: 10136: extern int swscanf (const wchar_t *__restrict __s, 10136: const wchar_t *__restrict __format, ...) 10136: throw () ; 10136: # 606 "/usr/include/wchar.h" 3 4 10136: extern int vfwscanf (__FILE *__restrict __s, 10136: const wchar_t *__restrict __format, 10136: __gnuc_va_list __arg) 10136: ; 10136: 10136: 10136: 10136: 10136: extern int vwscanf (const wchar_t *__restrict __format, 10136: __gnuc_va_list __arg) 10136: ; 10136: 10136: extern int vswscanf (const wchar_t *__restrict __s, 10136: const wchar_t *__restrict __format, 10136: __gnuc_va_list __arg) 10136: throw () ; 10136: # 660 "/usr/include/wchar.h" 3 4 10136: extern wint_t fgetwc (__FILE *__stream); 10136: extern wint_t getwc (__FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t getwchar (void); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); 10136: extern wint_t putwc (wchar_t __wc, __FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t putwchar (wchar_t __wc); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, 10136: __FILE *__restrict __stream); 10136: 10136: 10136: 10136: 10136: 10136: extern int fputws (const wchar_t *__restrict __ws, 10136: __FILE *__restrict __stream); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); 10136: # 715 "/usr/include/wchar.h" 3 4 10136: extern wint_t getwc_unlocked (__FILE *__stream); 10136: extern wint_t getwchar_unlocked (void); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t fgetwc_unlocked (__FILE *__stream); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); 10136: # 741 "/usr/include/wchar.h" 3 4 10136: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); 10136: extern wint_t putwchar_unlocked (wchar_t __wc); 10136: # 751 "/usr/include/wchar.h" 3 4 10136: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, 10136: __FILE *__restrict __stream); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fputws_unlocked (const wchar_t *__restrict __ws, 10136: __FILE *__restrict __stream); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, 10136: const wchar_t *__restrict __format, 10136: const struct tm *__restrict __tp) throw (); 10136: 10136: 10136: 10136: 10136: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, 10136: const wchar_t *__restrict __format, 10136: const struct tm *__restrict __tp, 10136: locale_t __loc) throw (); 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 10136: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, 10136: const wchar_t *__restrict __s2, size_t __n, 10136: size_t __ns1) throw (); 10136: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmemcpy") 10136: 10136: 10136: ; 10136: extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemcpy_chk") 10136: 10136: 10136: 10136: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () 10136: 10136: { 10136: if (__builtin_object_size (__s1, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n)) 10136: return __wmemcpy_chk (__s1, __s2, __n, 10136: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 10136: 10136: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 10136: return __wmemcpy_chk_warn (__s1, __s2, __n, 10136: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 10136: } 10136: return __wmemcpy_alias (__s1, __s2, __n); 10136: } 10136: 10136: 10136: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, 10136: size_t __n, size_t __ns1) throw (); 10136: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () __asm__ ("" "wmemmove") 10136: 10136: ; 10136: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemmove_chk") 10136: 10136: 10136: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () 10136: { 10136: if (__builtin_object_size (__s1, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n)) 10136: return __wmemmove_chk (__s1, __s2, __n, 10136: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 10136: 10136: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 10136: return __wmemmove_chk_warn (__s1, __s2, __n, 10136: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 10136: } 10136: return __wmemmove_alias (__s1, __s2, __n); 10136: } 10136: 10136: 10136: 10136: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, 10136: const wchar_t *__restrict __s2, size_t __n, 10136: size_t __ns1) throw (); 10136: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmempcpy") 10136: 10136: 10136: ; 10136: extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmempcpy_chk") 10136: 10136: 10136: 10136: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () 10136: 10136: { 10136: if (__builtin_object_size (__s1, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n)) 10136: return __wmempcpy_chk (__s1, __s2, __n, 10136: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 10136: 10136: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 10136: return __wmempcpy_chk_warn (__s1, __s2, __n, 10136: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 10136: } 10136: return __wmempcpy_alias (__s1, __s2, __n); 10136: } 10136: 10136: 10136: 10136: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, 10136: size_t __ns) throw (); 10136: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) throw () __asm__ ("" "wmemset") 10136: ; 10136: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) throw () __asm__ ("" "__wmemset_chk") 10136: 10136: 10136: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw () 10136: { 10136: if (__builtin_object_size (__s, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n)) 10136: return __wmemset_chk (__s, __c, __n, __builtin_object_size (__s, 0) / sizeof (wchar_t)); 10136: 10136: if (__n > __builtin_object_size (__s, 0) / sizeof (wchar_t)) 10136: return __wmemset_chk_warn (__s, __c, __n, 10136: __builtin_object_size (__s, 0) / sizeof (wchar_t)); 10136: } 10136: return __wmemset_alias (__s, __c, __n); 10136: } 10136: 10136: 10136: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, 10136: size_t __n) throw (); 10136: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscpy") 10136: 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 10136: { 10136: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 10136: return __wcscpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 10136: return __wcscpy_alias (__dest, __src); 10136: } 10136: 10136: 10136: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, 10136: size_t __destlen) throw (); 10136: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcpcpy") 10136: 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 10136: { 10136: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 10136: return __wcpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 10136: return __wcpcpy_alias (__dest, __src); 10136: } 10136: 10136: 10136: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, size_t __n, 10136: size_t __destlen) throw (); 10136: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncpy") 10136: 10136: 10136: ; 10136: extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcsncpy_chk") 10136: 10136: 10136: 10136: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n)) 10136: return __wcsncpy_chk (__dest, __src, __n, 10136: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 10136: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) 10136: return __wcsncpy_chk_warn (__dest, __src, __n, 10136: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 10136: } 10136: return __wcsncpy_alias (__dest, __src, __n); 10136: } 10136: 10136: 10136: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, size_t __n, 10136: size_t __destlen) throw (); 10136: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcpncpy") 10136: 10136: 10136: ; 10136: extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcpncpy_chk") 10136: 10136: 10136: 10136: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n)) 10136: return __wcpncpy_chk (__dest, __src, __n, 10136: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 10136: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) 10136: return __wcpncpy_chk_warn (__dest, __src, __n, 10136: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 10136: } 10136: return __wcpncpy_alias (__dest, __src, __n); 10136: } 10136: 10136: 10136: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, 10136: size_t __destlen) throw (); 10136: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscat") 10136: 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 10136: { 10136: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 10136: return __wcscat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 10136: return __wcscat_alias (__dest, __src); 10136: } 10136: 10136: 10136: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, 10136: const wchar_t *__restrict __src, 10136: size_t __n, size_t __destlen) throw (); 10136: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncat") 10136: 10136: 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 10136: __attribute__ ((__leaf__)) wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 10136: return __wcsncat_chk (__dest, __src, __n, 10136: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 10136: return __wcsncat_alias (__dest, __src, __n); 10136: } 10136: 10136: 10136: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, 10136: int __flag, size_t __s_len, 10136: const wchar_t *__restrict __format, ...) 10136: throw () ; 10136: 10136: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () __asm__ ("" "swprintf") 10136: 10136: 10136: ; 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () 10136: 10136: { 10136: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) 10136: return __swprintf_chk (__s, __n, 2 - 1, 10136: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 10136: __fmt, __builtin_va_arg_pack ()); 10136: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); 10136: } 10136: # 303 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 10136: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, 10136: int __flag, size_t __s_len, 10136: const wchar_t *__restrict __format, 10136: __gnuc_va_list __arg) 10136: throw () ; 10136: 10136: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () __asm__ ("" "vswprintf") 10136: 10136: 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () 10136: 10136: { 10136: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) 10136: return __vswprintf_chk (__s, __n, 2 - 1, 10136: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), __fmt, __ap); 10136: return __vswprintf_alias (__s, __n, __fmt, __ap); 10136: } 10136: 10136: 10136: 10136: 10136: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, 10136: const wchar_t *__restrict __format, ...); 10136: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, 10136: ...); 10136: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, 10136: const wchar_t *__restrict __format, 10136: __gnuc_va_list __ap); 10136: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, 10136: __gnuc_va_list __ap); 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: wprintf (const wchar_t *__restrict __fmt, ...) 10136: { 10136: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) 10136: { 10136: return __fwprintf_chk (__stream, 2 - 1, __fmt, 10136: __builtin_va_arg_pack ()); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 10136: { 10136: return __vwprintf_chk (2 - 1, __fmt, __ap); 10136: } 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: vfwprintf (__FILE *__restrict __stream, 10136: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 10136: { 10136: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); 10136: } 10136: 10136: 10136: 10136: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, 10136: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 10136: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 10136: fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 10136: { 10136: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n) || __n <= 0) 10136: return __fgetws_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 10136: __n, __stream); 10136: 10136: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) 10136: return __fgetws_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 10136: __n, __stream); 10136: } 10136: return __fgetws_alias (__s, __n, __stream); 10136: } 10136: 10136: 10136: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, 10136: int __n, __FILE *__restrict __stream) 10136: __attribute__ ((__warn_unused_result__)); 10136: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") 10136: 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 10136: fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 10136: { 10136: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__n) || __n <= 0) 10136: return __fgetws_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 10136: __n, __stream); 10136: 10136: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) 10136: return __fgetws_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 10136: __n, __stream); 10136: } 10136: return __fgetws_unlocked_alias (__s, __n, __stream); 10136: } 10136: 10136: 10136: 10136: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, 10136: mbstate_t *__restrict __p, 10136: size_t __buflen) throw () __attribute__ ((__warn_unused_result__)); 10136: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcrtomb") 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 10136: __attribute__ ((__leaf__)) wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () 10136: 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) 10136: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); 10136: return __wcrtomb_alias (__s, __wchar, __ps); 10136: } 10136: 10136: 10136: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, 10136: const char **__restrict __src, 10136: size_t __len, mbstate_t *__restrict __ps, 10136: size_t __dstlen) throw (); 10136: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsrtowcs") 10136: 10136: 10136: 10136: ; 10136: extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsrtowcs_chk") 10136: 10136: 10136: 10136: 10136: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 10136: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __mbsrtowcs_chk (__dst, __src, __len, __ps, 10136: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 10136: 10136: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 10136: return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, 10136: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 10136: } 10136: return __mbsrtowcs_alias (__dst, __src, __len, __ps); 10136: } 10136: 10136: 10136: extern size_t __wcsrtombs_chk (char *__restrict __dst, 10136: const wchar_t **__restrict __src, 10136: size_t __len, mbstate_t *__restrict __ps, 10136: size_t __dstlen) throw (); 10136: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsrtombs") 10136: 10136: 10136: 10136: ; 10136: extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsrtombs_chk") 10136: 10136: 10136: 10136: 10136: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 10136: __attribute__ ((__leaf__)) wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); 10136: 10136: if (__len > __builtin_object_size (__dst, 2 > 1)) 10136: return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); 10136: } 10136: return __wcsrtombs_alias (__dst, __src, __len, __ps); 10136: } 10136: 10136: 10136: 10136: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, 10136: const char **__restrict __src, size_t __nmc, 10136: size_t __len, mbstate_t *__restrict __ps, 10136: size_t __dstlen) throw (); 10136: extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsnrtowcs") 10136: 10136: 10136: 10136: ; 10136: extern size_t __mbsnrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsnrtowcs_chk") 10136: 10136: 10136: 10136: 10136: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 10136: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, 10136: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 10136: 10136: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 10136: return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, 10136: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 10136: } 10136: return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps); 10136: } 10136: 10136: 10136: extern size_t __wcsnrtombs_chk (char *__restrict __dst, 10136: const wchar_t **__restrict __src, 10136: size_t __nwc, size_t __len, 10136: mbstate_t *__restrict __ps, size_t __dstlen) 10136: throw (); 10136: extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsnrtombs") 10136: 10136: 10136: 10136: ; 10136: extern size_t __wcsnrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsnrtombs_chk") 10136: 10136: 10136: 10136: 10136: 10136: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 10136: __attribute__ ((__leaf__)) wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () 10136: 10136: { 10136: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, 10136: __builtin_object_size (__dst, 2 > 1)); 10136: 10136: if (__len > __builtin_object_size (__dst, 2 > 1)) 10136: return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, 10136: __builtin_object_size (__dst, 2 > 1)); 10136: } 10136: return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps); 10136: } 10136: # 784 "/usr/include/wchar.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: } 10136: # 45 "/usr/include/c++/8/cwchar" 2 3 10136: # 62 "/usr/include/c++/8/cwchar" 3 10136: namespace std 10136: { 10136: using ::mbstate_t; 10136: } 10136: # 135 "/usr/include/c++/8/cwchar" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: using ::wint_t; 10136: 10136: using ::btowc; 10136: using ::fgetwc; 10136: using ::fgetws; 10136: using ::fputwc; 10136: using ::fputws; 10136: using ::fwide; 10136: using ::fwprintf; 10136: using ::fwscanf; 10136: using ::getwc; 10136: using ::getwchar; 10136: using ::mbrlen; 10136: using ::mbrtowc; 10136: using ::mbsinit; 10136: using ::mbsrtowcs; 10136: using ::putwc; 10136: using ::putwchar; 10136: 10136: using ::swprintf; 10136: 10136: using ::swscanf; 10136: using ::ungetwc; 10136: using ::vfwprintf; 10136: 10136: using ::vfwscanf; 10136: 10136: 10136: using ::vswprintf; 10136: 10136: 10136: using ::vswscanf; 10136: 10136: using ::vwprintf; 10136: 10136: using ::vwscanf; 10136: 10136: using ::wcrtomb; 10136: using ::wcscat; 10136: using ::wcscmp; 10136: using ::wcscoll; 10136: using ::wcscpy; 10136: using ::wcscspn; 10136: using ::wcsftime; 10136: using ::wcslen; 10136: using ::wcsncat; 10136: using ::wcsncmp; 10136: using ::wcsncpy; 10136: using ::wcsrtombs; 10136: using ::wcsspn; 10136: using ::wcstod; 10136: 10136: using ::wcstof; 10136: 10136: using ::wcstok; 10136: using ::wcstol; 10136: using ::wcstoul; 10136: using ::wcsxfrm; 10136: using ::wctob; 10136: using ::wmemcmp; 10136: using ::wmemcpy; 10136: using ::wmemmove; 10136: using ::wmemset; 10136: using ::wprintf; 10136: using ::wscanf; 10136: using ::wcschr; 10136: using ::wcspbrk; 10136: using ::wcsrchr; 10136: using ::wcsstr; 10136: using ::wmemchr; 10136: # 232 "/usr/include/c++/8/cwchar" 3 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace __gnu_cxx 10136: { 10136: 10136: 10136: 10136: 10136: 10136: using ::wcstold; 10136: # 257 "/usr/include/c++/8/cwchar" 3 10136: using ::wcstoll; 10136: using ::wcstoull; 10136: 10136: } 10136: 10136: namespace std 10136: { 10136: using ::__gnu_cxx::wcstold; 10136: using ::__gnu_cxx::wcstoll; 10136: using ::__gnu_cxx::wcstoull; 10136: } 10136: # 277 "/usr/include/c++/8/cwchar" 3 10136: namespace std 10136: { 10136: 10136: using std::wcstof; 10136: 10136: 10136: using std::vfwscanf; 10136: 10136: 10136: using std::vswscanf; 10136: 10136: 10136: using std::vwscanf; 10136: 10136: 10136: 10136: using std::wcstold; 10136: using std::wcstoll; 10136: using std::wcstoull; 10136: 10136: } 10136: # 41 "/usr/include/c++/8/bits/postypes.h" 2 3 10136: # 68 "/usr/include/c++/8/bits/postypes.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 90 "/usr/include/c++/8/bits/postypes.h" 3 10136: typedef long long streamoff; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef ptrdiff_t streamsize; 10136: # 111 "/usr/include/c++/8/bits/postypes.h" 3 10136: template 10136: class fpos 10136: { 10136: private: 10136: streamoff _M_off; 10136: _StateT _M_state; 10136: 10136: public: 10136: 10136: 10136: 10136: 10136: fpos() 10136: : _M_off(0), _M_state() { } 10136: # 133 "/usr/include/c++/8/bits/postypes.h" 3 10136: fpos(streamoff __off) 10136: : _M_off(__off), _M_state() { } 10136: 10136: 10136: operator streamoff() const { return _M_off; } 10136: 10136: 10136: void 10136: state(_StateT __st) 10136: { _M_state = __st; } 10136: 10136: 10136: _StateT 10136: state() const 10136: { return _M_state; } 10136: 10136: 10136: 10136: 10136: 10136: fpos& 10136: operator+=(streamoff __off) 10136: { 10136: _M_off += __off; 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: fpos& 10136: operator-=(streamoff __off) 10136: { 10136: _M_off -= __off; 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: fpos 10136: operator+(streamoff __off) const 10136: { 10136: fpos __pos(*this); 10136: __pos += __off; 10136: return __pos; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: fpos 10136: operator-(streamoff __off) const 10136: { 10136: fpos __pos(*this); 10136: __pos -= __off; 10136: return __pos; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: streamoff 10136: operator-(const fpos& __other) const 10136: { return _M_off - __other._M_off; } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 10136: { return streamoff(__lhs) == streamoff(__rhs); } 10136: 10136: template 10136: inline bool 10136: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 10136: { return streamoff(__lhs) != streamoff(__rhs); } 10136: 10136: 10136: 10136: 10136: 10136: typedef fpos streampos; 10136: 10136: typedef fpos wstreampos; 10136: 10136: 10136: 10136: typedef fpos u16streampos; 10136: 10136: typedef fpos u32streampos; 10136: 10136: 10136: 10136: } 10136: # 41 "/usr/include/c++/8/iosfwd" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 74 "/usr/include/c++/8/iosfwd" 3 10136: class ios_base; 10136: 10136: template > 10136: class basic_ios; 10136: 10136: template > 10136: class basic_streambuf; 10136: 10136: template > 10136: class basic_istream; 10136: 10136: template > 10136: class basic_ostream; 10136: 10136: template > 10136: class basic_iostream; 10136: 10136: 10136: namespace __cxx11 { 10136: 10136: template, 10136: typename _Alloc = allocator<_CharT> > 10136: class basic_stringbuf; 10136: 10136: template, 10136: typename _Alloc = allocator<_CharT> > 10136: class basic_istringstream; 10136: 10136: template, 10136: typename _Alloc = allocator<_CharT> > 10136: class basic_ostringstream; 10136: 10136: template, 10136: typename _Alloc = allocator<_CharT> > 10136: class basic_stringstream; 10136: 10136: } 10136: 10136: template > 10136: class basic_filebuf; 10136: 10136: template > 10136: class basic_ifstream; 10136: 10136: template > 10136: class basic_ofstream; 10136: 10136: template > 10136: class basic_fstream; 10136: 10136: template > 10136: class istreambuf_iterator; 10136: 10136: template > 10136: class ostreambuf_iterator; 10136: 10136: 10136: 10136: typedef basic_ios ios; 10136: 10136: 10136: typedef basic_streambuf streambuf; 10136: 10136: 10136: typedef basic_istream istream; 10136: 10136: 10136: typedef basic_ostream ostream; 10136: 10136: 10136: typedef basic_iostream iostream; 10136: 10136: 10136: typedef basic_stringbuf stringbuf; 10136: 10136: 10136: typedef basic_istringstream istringstream; 10136: 10136: 10136: typedef basic_ostringstream ostringstream; 10136: 10136: 10136: typedef basic_stringstream stringstream; 10136: 10136: 10136: typedef basic_filebuf filebuf; 10136: 10136: 10136: typedef basic_ifstream ifstream; 10136: 10136: 10136: typedef basic_ofstream ofstream; 10136: 10136: 10136: typedef basic_fstream fstream; 10136: 10136: 10136: 10136: typedef basic_ios wios; 10136: 10136: 10136: typedef basic_streambuf wstreambuf; 10136: 10136: 10136: typedef basic_istream wistream; 10136: 10136: 10136: typedef basic_ostream wostream; 10136: 10136: 10136: typedef basic_iostream wiostream; 10136: 10136: 10136: typedef basic_stringbuf wstringbuf; 10136: 10136: 10136: typedef basic_istringstream wistringstream; 10136: 10136: 10136: typedef basic_ostringstream wostringstream; 10136: 10136: 10136: typedef basic_stringstream wstringstream; 10136: 10136: 10136: typedef basic_filebuf wfilebuf; 10136: 10136: 10136: typedef basic_ifstream wifstream; 10136: 10136: 10136: typedef basic_ofstream wofstream; 10136: 10136: 10136: typedef basic_fstream wfstream; 10136: 10136: 10136: 10136: 10136: } 10136: # 73 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/ext/atomicity.h" 1 3 10136: # 32 "/usr/include/c++/8/ext/atomicity.h" 3 10136: 10136: # 33 "/usr/include/c++/8/ext/atomicity.h" 3 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr.h" 1 3 10136: # 30 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr.h" 3 10136: #pragma GCC visibility push(default) 10136: # 148 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr.h" 3 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr-default.h" 1 3 10136: # 47 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr-default.h" 3 10136: typedef pthread_t __gthread_t; 10136: typedef pthread_key_t __gthread_key_t; 10136: typedef pthread_once_t __gthread_once_t; 10136: typedef pthread_mutex_t __gthread_mutex_t; 10136: typedef pthread_mutex_t __gthread_recursive_mutex_t; 10136: typedef pthread_cond_t __gthread_cond_t; 10136: typedef struct timespec __gthread_time_t; 10136: # 101 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr-default.h" 3 10136: static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once"))); 10136: static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific"))); 10136: static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific"))); 10136: 10136: static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create"))); 10136: static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join"))); 10136: static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal"))); 10136: static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self"))); 10136: static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach"))); 10136: 10136: static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel"))); 10136: 10136: static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield"))); 10136: 10136: static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock"))); 10136: static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock"))); 10136: 10136: static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock"))); 10136: 10136: static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock"))); 10136: static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init"))); 10136: static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy"))); 10136: 10136: static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init"))); 10136: static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast"))); 10136: static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal"))); 10136: static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait"))); 10136: static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait"))); 10136: static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy"))); 10136: 10136: static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create"))); 10136: static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete"))); 10136: static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init"))); 10136: static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype"))); 10136: static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy"))); 10136: # 236 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr-default.h" 3 10136: static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create"))); 10136: # 246 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr-default.h" 3 10136: static inline int 10136: __gthread_active_p (void) 10136: { 10136: static void *const __gthread_active_ptr 10136: = __extension__ (void *) &__gthrw___pthread_key_create; 10136: return __gthread_active_ptr != 0; 10136: } 10136: # 658 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr-default.h" 3 10136: static inline int 10136: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), 10136: void *__args) 10136: { 10136: return __gthrw_pthread_create (__threadid, __null, __func, __args); 10136: } 10136: 10136: static inline int 10136: __gthread_join (__gthread_t __threadid, void **__value_ptr) 10136: { 10136: return __gthrw_pthread_join (__threadid, __value_ptr); 10136: } 10136: 10136: static inline int 10136: __gthread_detach (__gthread_t __threadid) 10136: { 10136: return __gthrw_pthread_detach (__threadid); 10136: } 10136: 10136: static inline int 10136: __gthread_equal (__gthread_t __t1, __gthread_t __t2) 10136: { 10136: return __gthrw_pthread_equal (__t1, __t2); 10136: } 10136: 10136: static inline __gthread_t 10136: __gthread_self (void) 10136: { 10136: return __gthrw_pthread_self (); 10136: } 10136: 10136: static inline int 10136: __gthread_yield (void) 10136: { 10136: return __gthrw_sched_yield (); 10136: } 10136: 10136: static inline int 10136: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) 10136: { 10136: if (__gthread_active_p ()) 10136: return __gthrw_pthread_once (__once, __func); 10136: else 10136: return -1; 10136: } 10136: 10136: static inline int 10136: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) 10136: { 10136: return __gthrw_pthread_key_create (__key, __dtor); 10136: } 10136: 10136: static inline int 10136: __gthread_key_delete (__gthread_key_t __key) 10136: { 10136: return __gthrw_pthread_key_delete (__key); 10136: } 10136: 10136: static inline void * 10136: __gthread_getspecific (__gthread_key_t __key) 10136: { 10136: return __gthrw_pthread_getspecific (__key); 10136: } 10136: 10136: static inline int 10136: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) 10136: { 10136: return __gthrw_pthread_setspecific (__key, __ptr); 10136: } 10136: 10136: static inline void 10136: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) 10136: { 10136: if (__gthread_active_p ()) 10136: __gthrw_pthread_mutex_init (__mutex, __null); 10136: } 10136: 10136: static inline int 10136: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) 10136: { 10136: if (__gthread_active_p ()) 10136: return __gthrw_pthread_mutex_destroy (__mutex); 10136: else 10136: return 0; 10136: } 10136: 10136: static inline int 10136: __gthread_mutex_lock (__gthread_mutex_t *__mutex) 10136: { 10136: if (__gthread_active_p ()) 10136: return __gthrw_pthread_mutex_lock (__mutex); 10136: else 10136: return 0; 10136: } 10136: 10136: static inline int 10136: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) 10136: { 10136: if (__gthread_active_p ()) 10136: return __gthrw_pthread_mutex_trylock (__mutex); 10136: else 10136: return 0; 10136: } 10136: 10136: 10136: static inline int 10136: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, 10136: const __gthread_time_t *__abs_timeout) 10136: { 10136: if (__gthread_active_p ()) 10136: return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout); 10136: else 10136: return 0; 10136: } 10136: 10136: 10136: static inline int 10136: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) 10136: { 10136: if (__gthread_active_p ()) 10136: return __gthrw_pthread_mutex_unlock (__mutex); 10136: else 10136: return 0; 10136: } 10136: # 807 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr-default.h" 3 10136: static inline int 10136: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) 10136: { 10136: return __gthread_mutex_lock (__mutex); 10136: } 10136: 10136: static inline int 10136: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) 10136: { 10136: return __gthread_mutex_trylock (__mutex); 10136: } 10136: 10136: 10136: static inline int 10136: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, 10136: const __gthread_time_t *__abs_timeout) 10136: { 10136: return __gthread_mutex_timedlock (__mutex, __abs_timeout); 10136: } 10136: 10136: 10136: static inline int 10136: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) 10136: { 10136: return __gthread_mutex_unlock (__mutex); 10136: } 10136: 10136: static inline int 10136: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) 10136: { 10136: return __gthread_mutex_destroy (__mutex); 10136: } 10136: # 849 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr-default.h" 3 10136: static inline int 10136: __gthread_cond_broadcast (__gthread_cond_t *__cond) 10136: { 10136: return __gthrw_pthread_cond_broadcast (__cond); 10136: } 10136: 10136: static inline int 10136: __gthread_cond_signal (__gthread_cond_t *__cond) 10136: { 10136: return __gthrw_pthread_cond_signal (__cond); 10136: } 10136: 10136: static inline int 10136: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) 10136: { 10136: return __gthrw_pthread_cond_wait (__cond, __mutex); 10136: } 10136: 10136: static inline int 10136: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, 10136: const __gthread_time_t *__abs_timeout) 10136: { 10136: return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout); 10136: } 10136: 10136: static inline int 10136: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, 10136: __gthread_recursive_mutex_t *__mutex) 10136: { 10136: return __gthread_cond_wait (__cond, __mutex); 10136: } 10136: 10136: static inline int 10136: __gthread_cond_destroy (__gthread_cond_t* __cond) 10136: { 10136: return __gthrw_pthread_cond_destroy (__cond); 10136: } 10136: # 149 "/usr/include/arm-linux-gnueabihf/c++/8/bits/gthr.h" 2 3 10136: 10136: 10136: #pragma GCC visibility pop 10136: # 36 "/usr/include/c++/8/ext/atomicity.h" 2 3 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/atomic_word.h" 1 3 10136: # 32 "/usr/include/arm-linux-gnueabihf/c++/8/bits/atomic_word.h" 3 10136: typedef int _Atomic_word; 10136: # 37 "/usr/include/c++/8/ext/atomicity.h" 2 3 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: static inline _Atomic_word 10136: __exchange_and_add(volatile _Atomic_word* __mem, int __val) 10136: { return __atomic_fetch_add(__mem, __val, 4); } 10136: 10136: static inline void 10136: __atomic_add(volatile _Atomic_word* __mem, int __val) 10136: { __atomic_fetch_add(__mem, __val, 4); } 10136: # 64 "/usr/include/c++/8/ext/atomicity.h" 3 10136: static inline _Atomic_word 10136: __exchange_and_add_single(_Atomic_word* __mem, int __val) 10136: { 10136: _Atomic_word __result = *__mem; 10136: *__mem += __val; 10136: return __result; 10136: } 10136: 10136: static inline void 10136: __atomic_add_single(_Atomic_word* __mem, int __val) 10136: { *__mem += __val; } 10136: 10136: static inline _Atomic_word 10136: __attribute__ ((__unused__)) 10136: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) 10136: { 10136: 10136: if (__gthread_active_p()) 10136: return __exchange_and_add(__mem, __val); 10136: else 10136: return __exchange_and_add_single(__mem, __val); 10136: 10136: 10136: 10136: } 10136: 10136: static inline void 10136: __attribute__ ((__unused__)) 10136: __atomic_add_dispatch(_Atomic_word* __mem, int __val) 10136: { 10136: 10136: if (__gthread_active_p()) 10136: __atomic_add(__mem, __val); 10136: else 10136: __atomic_add_single(__mem, __val); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: } 10136: # 74 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/ext/concurrence.h" 1 3 10136: # 32 "/usr/include/c++/8/ext/concurrence.h" 3 10136: 10136: # 33 "/usr/include/c++/8/ext/concurrence.h" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; 10136: 10136: 10136: 10136: static const _Lock_policy __default_lock_policy = 10136: 10136: 10136: 10136: _S_atomic; 10136: # 67 "/usr/include/c++/8/ext/concurrence.h" 3 10136: class __concurrence_lock_error : public std::exception 10136: { 10136: public: 10136: virtual char const* 10136: what() const throw() 10136: { return "__gnu_cxx::__concurrence_lock_error"; } 10136: }; 10136: 10136: class __concurrence_unlock_error : public std::exception 10136: { 10136: public: 10136: virtual char const* 10136: what() const throw() 10136: { return "__gnu_cxx::__concurrence_unlock_error"; } 10136: }; 10136: 10136: class __concurrence_broadcast_error : public std::exception 10136: { 10136: public: 10136: virtual char const* 10136: what() const throw() 10136: { return "__gnu_cxx::__concurrence_broadcast_error"; } 10136: }; 10136: 10136: class __concurrence_wait_error : public std::exception 10136: { 10136: public: 10136: virtual char const* 10136: what() const throw() 10136: { return "__gnu_cxx::__concurrence_wait_error"; } 10136: }; 10136: 10136: 10136: inline void 10136: __throw_concurrence_lock_error() 10136: { (throw (__concurrence_lock_error())); } 10136: 10136: inline void 10136: __throw_concurrence_unlock_error() 10136: { (throw (__concurrence_unlock_error())); } 10136: 10136: 10136: inline void 10136: __throw_concurrence_broadcast_error() 10136: { (throw (__concurrence_broadcast_error())); } 10136: 10136: inline void 10136: __throw_concurrence_wait_error() 10136: { (throw (__concurrence_wait_error())); } 10136: 10136: 10136: class __mutex 10136: { 10136: private: 10136: 10136: __gthread_mutex_t _M_mutex = { { 0, 0, 0, 0, 0, { 0 } } }; 10136: 10136: 10136: 10136: 10136: __mutex(const __mutex&); 10136: __mutex& operator=(const __mutex&); 10136: 10136: public: 10136: __mutex() 10136: { 10136: 10136: 10136: 10136: 10136: } 10136: # 147 "/usr/include/c++/8/ext/concurrence.h" 3 10136: void lock() 10136: { 10136: 10136: if (__gthread_active_p()) 10136: { 10136: if (__gthread_mutex_lock(&_M_mutex) != 0) 10136: __throw_concurrence_lock_error(); 10136: } 10136: 10136: } 10136: 10136: void unlock() 10136: { 10136: 10136: if (__gthread_active_p()) 10136: { 10136: if (__gthread_mutex_unlock(&_M_mutex) != 0) 10136: __throw_concurrence_unlock_error(); 10136: } 10136: 10136: } 10136: 10136: __gthread_mutex_t* gthread_mutex(void) 10136: { return &_M_mutex; } 10136: }; 10136: 10136: class __recursive_mutex 10136: { 10136: private: 10136: 10136: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }; 10136: 10136: 10136: 10136: 10136: __recursive_mutex(const __recursive_mutex&); 10136: __recursive_mutex& operator=(const __recursive_mutex&); 10136: 10136: public: 10136: __recursive_mutex() 10136: { 10136: 10136: 10136: 10136: 10136: } 10136: # 202 "/usr/include/c++/8/ext/concurrence.h" 3 10136: void lock() 10136: { 10136: 10136: if (__gthread_active_p()) 10136: { 10136: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) 10136: __throw_concurrence_lock_error(); 10136: } 10136: 10136: } 10136: 10136: void unlock() 10136: { 10136: 10136: if (__gthread_active_p()) 10136: { 10136: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) 10136: __throw_concurrence_unlock_error(); 10136: } 10136: 10136: } 10136: 10136: __gthread_recursive_mutex_t* gthread_recursive_mutex(void) 10136: { return &_M_mutex; } 10136: }; 10136: 10136: 10136: 10136: 10136: class __scoped_lock 10136: { 10136: public: 10136: typedef __mutex __mutex_type; 10136: 10136: private: 10136: __mutex_type& _M_device; 10136: 10136: __scoped_lock(const __scoped_lock&); 10136: __scoped_lock& operator=(const __scoped_lock&); 10136: 10136: public: 10136: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) 10136: { _M_device.lock(); } 10136: 10136: ~__scoped_lock() throw() 10136: { _M_device.unlock(); } 10136: }; 10136: 10136: 10136: class __cond 10136: { 10136: private: 10136: 10136: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; 10136: 10136: 10136: 10136: 10136: __cond(const __cond&); 10136: __cond& operator=(const __cond&); 10136: 10136: public: 10136: __cond() 10136: { 10136: 10136: 10136: 10136: 10136: } 10136: # 280 "/usr/include/c++/8/ext/concurrence.h" 3 10136: void broadcast() 10136: { 10136: 10136: if (__gthread_active_p()) 10136: { 10136: if (__gthread_cond_broadcast(&_M_cond) != 0) 10136: __throw_concurrence_broadcast_error(); 10136: } 10136: 10136: } 10136: 10136: void wait(__mutex *mutex) 10136: { 10136: 10136: { 10136: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) 10136: __throw_concurrence_wait_error(); 10136: } 10136: 10136: } 10136: 10136: void wait_recursive(__recursive_mutex *mutex) 10136: { 10136: 10136: { 10136: if (__gthread_cond_wait_recursive(&_M_cond, 10136: mutex->gthread_recursive_mutex()) 10136: != 0) 10136: __throw_concurrence_wait_error(); 10136: } 10136: 10136: } 10136: }; 10136: 10136: 10136: 10136: } 10136: # 75 "/usr/include/c++/8/memory" 2 3 10136: 10136: # 1 "/usr/include/c++/8/bits/stl_function.h" 1 3 10136: # 63 "/usr/include/c++/8/bits/stl_function.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 104 "/usr/include/c++/8/bits/stl_function.h" 3 10136: template 10136: struct unary_function 10136: { 10136: 10136: typedef _Arg argument_type; 10136: 10136: 10136: typedef _Result result_type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct binary_function 10136: { 10136: 10136: typedef _Arg1 first_argument_type; 10136: 10136: 10136: typedef _Arg2 second_argument_type; 10136: 10136: 10136: typedef _Result result_type; 10136: }; 10136: # 144 "/usr/include/c++/8/bits/stl_function.h" 3 10136: struct __is_transparent; 10136: 10136: template 10136: struct plus; 10136: 10136: template 10136: struct minus; 10136: 10136: template 10136: struct multiplies; 10136: 10136: template 10136: struct divides; 10136: 10136: template 10136: struct modulus; 10136: 10136: template 10136: struct negate; 10136: 10136: 10136: 10136: template 10136: struct plus : public binary_function<_Tp, _Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x + __y; } 10136: }; 10136: 10136: 10136: template 10136: struct minus : public binary_function<_Tp, _Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x - __y; } 10136: }; 10136: 10136: 10136: template 10136: struct multiplies : public binary_function<_Tp, _Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x * __y; } 10136: }; 10136: 10136: 10136: template 10136: struct divides : public binary_function<_Tp, _Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x / __y; } 10136: }; 10136: 10136: 10136: template 10136: struct modulus : public binary_function<_Tp, _Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x % __y; } 10136: }; 10136: 10136: 10136: template 10136: struct negate : public unary_function<_Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x) const 10136: { return -__x; } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: struct plus 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) + std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct minus 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) - std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct multiplies 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) * std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct divides 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) / std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct modulus 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) % std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct negate 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t) const 10136: noexcept(noexcept(-std::forward<_Tp>(__t))) 10136: -> decltype(-std::forward<_Tp>(__t)) 10136: { return -std::forward<_Tp>(__t); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: # 330 "/usr/include/c++/8/bits/stl_function.h" 3 10136: template 10136: struct equal_to; 10136: 10136: template 10136: struct not_equal_to; 10136: 10136: template 10136: struct greater; 10136: 10136: template 10136: struct less; 10136: 10136: template 10136: struct greater_equal; 10136: 10136: template 10136: struct less_equal; 10136: 10136: 10136: 10136: template 10136: struct equal_to : public binary_function<_Tp, _Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x == __y; } 10136: }; 10136: 10136: 10136: template 10136: struct not_equal_to : public binary_function<_Tp, _Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x != __y; } 10136: }; 10136: 10136: 10136: template 10136: struct greater : public binary_function<_Tp, _Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x > __y; } 10136: }; 10136: 10136: 10136: template 10136: struct less : public binary_function<_Tp, _Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x < __y; } 10136: }; 10136: 10136: 10136: template 10136: struct greater_equal : public binary_function<_Tp, _Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x >= __y; } 10136: }; 10136: 10136: 10136: template 10136: struct less_equal : public binary_function<_Tp, _Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x <= __y; } 10136: }; 10136: 10136: 10136: 10136: template<> 10136: struct equal_to 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct not_equal_to 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) != std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct greater 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct less 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct greater_equal 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct less_equal 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: # 512 "/usr/include/c++/8/bits/stl_function.h" 3 10136: template 10136: struct logical_and; 10136: 10136: template 10136: struct logical_or; 10136: 10136: template 10136: struct logical_not; 10136: 10136: 10136: 10136: template 10136: struct logical_and : public binary_function<_Tp, _Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x && __y; } 10136: }; 10136: 10136: 10136: template 10136: struct logical_or : public binary_function<_Tp, _Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x || __y; } 10136: }; 10136: 10136: 10136: template 10136: struct logical_not : public unary_function<_Tp, bool> 10136: { 10136: constexpr 10136: bool 10136: operator()(const _Tp& __x) const 10136: { return !__x; } 10136: }; 10136: 10136: 10136: 10136: template<> 10136: struct logical_and 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) && std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct logical_or 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) || std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: template<> 10136: struct logical_not 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t) const 10136: noexcept(noexcept(!std::forward<_Tp>(__t))) 10136: -> decltype(!std::forward<_Tp>(__t)) 10136: { return !std::forward<_Tp>(__t); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct bit_and; 10136: 10136: template 10136: struct bit_or; 10136: 10136: template 10136: struct bit_xor; 10136: 10136: template 10136: struct bit_not; 10136: 10136: 10136: 10136: 10136: template 10136: struct bit_and : public binary_function<_Tp, _Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x & __y; } 10136: }; 10136: 10136: template 10136: struct bit_or : public binary_function<_Tp, _Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x | __y; } 10136: }; 10136: 10136: template 10136: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x, const _Tp& __y) const 10136: { return __x ^ __y; } 10136: }; 10136: 10136: template 10136: struct bit_not : public unary_function<_Tp, _Tp> 10136: { 10136: constexpr 10136: _Tp 10136: operator()(const _Tp& __x) const 10136: { return ~__x; } 10136: }; 10136: 10136: 10136: template <> 10136: struct bit_and 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) & std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: template <> 10136: struct bit_or 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) | std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: template <> 10136: struct bit_xor 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t, _Up&& __u) const 10136: noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))) 10136: -> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)) 10136: { return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: 10136: template <> 10136: struct bit_not 10136: { 10136: template 10136: constexpr 10136: auto 10136: operator()(_Tp&& __t) const 10136: noexcept(noexcept(~std::forward<_Tp>(__t))) 10136: -> decltype(~std::forward<_Tp>(__t)) 10136: { return ~std::forward<_Tp>(__t); } 10136: 10136: typedef __is_transparent is_transparent; 10136: }; 10136: # 740 "/usr/include/c++/8/bits/stl_function.h" 3 10136: template 10136: class unary_negate 10136: : public unary_function 10136: { 10136: protected: 10136: _Predicate _M_pred; 10136: 10136: public: 10136: constexpr 10136: explicit 10136: unary_negate(const _Predicate& __x) : _M_pred(__x) { } 10136: 10136: constexpr 10136: bool 10136: operator()(const typename _Predicate::argument_type& __x) const 10136: { return !_M_pred(__x); } 10136: }; 10136: 10136: 10136: template 10136: constexpr 10136: inline unary_negate<_Predicate> 10136: not1(const _Predicate& __pred) 10136: { return unary_negate<_Predicate>(__pred); } 10136: 10136: 10136: template 10136: class binary_negate 10136: : public binary_function 10136: { 10136: protected: 10136: _Predicate _M_pred; 10136: 10136: public: 10136: constexpr 10136: explicit 10136: binary_negate(const _Predicate& __x) : _M_pred(__x) { } 10136: 10136: constexpr 10136: bool 10136: operator()(const typename _Predicate::first_argument_type& __x, 10136: const typename _Predicate::second_argument_type& __y) const 10136: { return !_M_pred(__x, __y); } 10136: }; 10136: 10136: 10136: template 10136: constexpr 10136: inline binary_negate<_Predicate> 10136: not2(const _Predicate& __pred) 10136: { return binary_negate<_Predicate>(__pred); } 10136: # 817 "/usr/include/c++/8/bits/stl_function.h" 3 10136: template 10136: class pointer_to_unary_function : public unary_function<_Arg, _Result> 10136: { 10136: protected: 10136: _Result (*_M_ptr)(_Arg); 10136: 10136: public: 10136: pointer_to_unary_function() { } 10136: 10136: explicit 10136: pointer_to_unary_function(_Result (*__x)(_Arg)) 10136: : _M_ptr(__x) { } 10136: 10136: _Result 10136: operator()(_Arg __x) const 10136: { return _M_ptr(__x); } 10136: }; 10136: 10136: 10136: template 10136: inline pointer_to_unary_function<_Arg, _Result> 10136: ptr_fun(_Result (*__x)(_Arg)) 10136: { return pointer_to_unary_function<_Arg, _Result>(__x); } 10136: 10136: 10136: template 10136: class pointer_to_binary_function 10136: : public binary_function<_Arg1, _Arg2, _Result> 10136: { 10136: protected: 10136: _Result (*_M_ptr)(_Arg1, _Arg2); 10136: 10136: public: 10136: pointer_to_binary_function() { } 10136: 10136: explicit 10136: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 10136: : _M_ptr(__x) { } 10136: 10136: _Result 10136: operator()(_Arg1 __x, _Arg2 __y) const 10136: { return _M_ptr(__x, __y); } 10136: }; 10136: 10136: 10136: template 10136: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> 10136: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) 10136: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } 10136: 10136: 10136: template 10136: struct _Identity 10136: : public unary_function<_Tp, _Tp> 10136: { 10136: _Tp& 10136: operator()(_Tp& __x) const 10136: { return __x; } 10136: 10136: const _Tp& 10136: operator()(const _Tp& __x) const 10136: { return __x; } 10136: }; 10136: 10136: 10136: template struct _Identity : _Identity<_Tp> { }; 10136: 10136: template 10136: struct _Select1st 10136: : public unary_function<_Pair, typename _Pair::first_type> 10136: { 10136: typename _Pair::first_type& 10136: operator()(_Pair& __x) const 10136: { return __x.first; } 10136: 10136: const typename _Pair::first_type& 10136: operator()(const _Pair& __x) const 10136: { return __x.first; } 10136: 10136: 10136: template 10136: typename _Pair2::first_type& 10136: operator()(_Pair2& __x) const 10136: { return __x.first; } 10136: 10136: template 10136: const typename _Pair2::first_type& 10136: operator()(const _Pair2& __x) const 10136: { return __x.first; } 10136: 10136: }; 10136: 10136: template 10136: struct _Select2nd 10136: : public unary_function<_Pair, typename _Pair::second_type> 10136: { 10136: typename _Pair::second_type& 10136: operator()(_Pair& __x) const 10136: { return __x.second; } 10136: 10136: const typename _Pair::second_type& 10136: operator()(const _Pair& __x) const 10136: { return __x.second; } 10136: }; 10136: # 940 "/usr/include/c++/8/bits/stl_function.h" 3 10136: template 10136: class mem_fun_t : public unary_function<_Tp*, _Ret> 10136: { 10136: public: 10136: explicit 10136: mem_fun_t(_Ret (_Tp::*__pf)()) 10136: : _M_f(__pf) { } 10136: 10136: _Ret 10136: operator()(_Tp* __p) const 10136: { return (__p->*_M_f)(); } 10136: 10136: private: 10136: _Ret (_Tp::*_M_f)(); 10136: }; 10136: 10136: 10136: 10136: template 10136: class const_mem_fun_t : public unary_function 10136: { 10136: public: 10136: explicit 10136: const_mem_fun_t(_Ret (_Tp::*__pf)() const) 10136: : _M_f(__pf) { } 10136: 10136: _Ret 10136: operator()(const _Tp* __p) const 10136: { return (__p->*_M_f)(); } 10136: 10136: private: 10136: _Ret (_Tp::*_M_f)() const; 10136: }; 10136: 10136: 10136: 10136: template 10136: class mem_fun_ref_t : public unary_function<_Tp, _Ret> 10136: { 10136: public: 10136: explicit 10136: mem_fun_ref_t(_Ret (_Tp::*__pf)()) 10136: : _M_f(__pf) { } 10136: 10136: _Ret 10136: operator()(_Tp& __r) const 10136: { return (__r.*_M_f)(); } 10136: 10136: private: 10136: _Ret (_Tp::*_M_f)(); 10136: }; 10136: 10136: 10136: 10136: template 10136: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> 10136: { 10136: public: 10136: explicit 10136: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) 10136: : _M_f(__pf) { } 10136: 10136: _Ret 10136: operator()(const _Tp& __r) const 10136: { return (__r.*_M_f)(); } 10136: 10136: private: 10136: _Ret (_Tp::*_M_f)() const; 10136: }; 10136: 10136: 10136: 10136: template 10136: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> 10136: { 10136: public: 10136: explicit 10136: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) 10136: : _M_f(__pf) { } 10136: 10136: _Ret 10136: operator()(_Tp* __p, _Arg __x) const 10136: { return (__p->*_M_f)(__x); } 10136: 10136: private: 10136: _Ret (_Tp::*_M_f)(_Arg); 10136: }; 10136: 10136: 10136: 10136: template 10136: class const_mem_fun1_t : public binary_function 10136: { 10136: public: 10136: explicit 10136: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) 10136: : _M_f(__pf) { } 10136: 10136: _Ret 10136: operator()(const _Tp* __p, _Arg __x) const 10136: { return (__p->*_M_f)(__x); } 10136: 10136: private: 10136: _Ret (_Tp::*_M_f)(_Arg) const; 10136: }; 10136: 10136: 10136: 10136: template 10136: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 10136: { 10136: public: 10136: explicit 10136: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) 10136: : _M_f(__pf) { } 10136: 10136: _Ret 10136: operator()(_Tp& __r, _Arg __x) const 10136: { return (__r.*_M_f)(__x); } 10136: 10136: private: 10136: _Ret (_Tp::*_M_f)(_Arg); 10136: }; 10136: 10136: 10136: 10136: template 10136: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 10136: { 10136: public: 10136: explicit 10136: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) 10136: : _M_f(__pf) { } 10136: 10136: _Ret 10136: operator()(const _Tp& __r, _Arg __x) const 10136: { return (__r.*_M_f)(__x); } 10136: 10136: private: 10136: _Ret (_Tp::*_M_f)(_Arg) const; 10136: }; 10136: 10136: 10136: 10136: template 10136: inline mem_fun_t<_Ret, _Tp> 10136: mem_fun(_Ret (_Tp::*__f)()) 10136: { return mem_fun_t<_Ret, _Tp>(__f); } 10136: 10136: template 10136: inline const_mem_fun_t<_Ret, _Tp> 10136: mem_fun(_Ret (_Tp::*__f)() const) 10136: { return const_mem_fun_t<_Ret, _Tp>(__f); } 10136: 10136: template 10136: inline mem_fun_ref_t<_Ret, _Tp> 10136: mem_fun_ref(_Ret (_Tp::*__f)()) 10136: { return mem_fun_ref_t<_Ret, _Tp>(__f); } 10136: 10136: template 10136: inline const_mem_fun_ref_t<_Ret, _Tp> 10136: mem_fun_ref(_Ret (_Tp::*__f)() const) 10136: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } 10136: 10136: template 10136: inline mem_fun1_t<_Ret, _Tp, _Arg> 10136: mem_fun(_Ret (_Tp::*__f)(_Arg)) 10136: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 10136: 10136: template 10136: inline const_mem_fun1_t<_Ret, _Tp, _Arg> 10136: mem_fun(_Ret (_Tp::*__f)(_Arg) const) 10136: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 10136: 10136: template 10136: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> 10136: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) 10136: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 10136: 10136: template 10136: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> 10136: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) 10136: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 10136: 10136: 10136: 10136: 10136: } 10136: 10136: 10136: # 1 "/usr/include/c++/8/backward/binders.h" 1 3 10136: # 60 "/usr/include/c++/8/backward/binders.h" 3 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 107 "/usr/include/c++/8/backward/binders.h" 3 10136: template 10136: class binder1st 10136: : public unary_function 10136: { 10136: protected: 10136: _Operation op; 10136: typename _Operation::first_argument_type value; 10136: 10136: public: 10136: binder1st(const _Operation& __x, 10136: const typename _Operation::first_argument_type& __y) 10136: : op(__x), value(__y) { } 10136: 10136: typename _Operation::result_type 10136: operator()(const typename _Operation::second_argument_type& __x) const 10136: { return op(value, __x); } 10136: 10136: 10136: 10136: typename _Operation::result_type 10136: operator()(typename _Operation::second_argument_type& __x) const 10136: { return op(value, __x); } 10136: } __attribute__ ((__deprecated__)); 10136: 10136: 10136: template 10136: inline binder1st<_Operation> 10136: bind1st(const _Operation& __fn, const _Tp& __x) 10136: { 10136: typedef typename _Operation::first_argument_type _Arg1_type; 10136: return binder1st<_Operation>(__fn, _Arg1_type(__x)); 10136: } 10136: 10136: 10136: template 10136: class binder2nd 10136: : public unary_function 10136: { 10136: protected: 10136: _Operation op; 10136: typename _Operation::second_argument_type value; 10136: 10136: public: 10136: binder2nd(const _Operation& __x, 10136: const typename _Operation::second_argument_type& __y) 10136: : op(__x), value(__y) { } 10136: 10136: typename _Operation::result_type 10136: operator()(const typename _Operation::first_argument_type& __x) const 10136: { return op(__x, value); } 10136: 10136: 10136: 10136: typename _Operation::result_type 10136: operator()(typename _Operation::first_argument_type& __x) const 10136: { return op(__x, value); } 10136: } __attribute__ ((__deprecated__)); 10136: 10136: 10136: template 10136: inline binder2nd<_Operation> 10136: bind2nd(const _Operation& __fn, const _Tp& __x) 10136: { 10136: typedef typename _Operation::second_argument_type _Arg2_type; 10136: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); 10136: } 10136: 10136: 10136: 10136: } 10136: 10136: #pragma GCC diagnostic pop 10136: # 1131 "/usr/include/c++/8/bits/stl_function.h" 2 3 10136: # 77 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/bits/uses_allocator.h" 1 3 10136: # 35 "/usr/include/c++/8/bits/uses_allocator.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: struct __erased_type { }; 10136: 10136: template 10136: using __is_erased_or_convertible 10136: = __or_, is_convertible<_Alloc, _Tp>>; 10136: 10136: 10136: struct allocator_arg_t { explicit allocator_arg_t() = default; }; 10136: 10136: constexpr allocator_arg_t allocator_arg = 10136: allocator_arg_t(); 10136: 10136: template> 10136: struct __uses_allocator_helper 10136: : false_type { }; 10136: 10136: template 10136: struct __uses_allocator_helper<_Tp, _Alloc, 10136: __void_t> 10136: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type 10136: { }; 10136: 10136: 10136: template 10136: struct uses_allocator 10136: : __uses_allocator_helper<_Tp, _Alloc>::type 10136: { }; 10136: 10136: struct __uses_alloc_base { }; 10136: 10136: struct __uses_alloc0 : __uses_alloc_base 10136: { 10136: struct _Sink { void operator=(const void*) { } } _M_a; 10136: }; 10136: 10136: template 10136: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; 10136: 10136: template 10136: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; 10136: 10136: template 10136: struct __uses_alloc; 10136: 10136: template 10136: struct __uses_alloc 10136: : conditional< 10136: is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value, 10136: __uses_alloc1<_Alloc>, 10136: __uses_alloc2<_Alloc>>::type 10136: { 10136: static_assert(__or_< 10136: is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>, 10136: is_constructible<_Tp, _Args..., _Alloc>>::value, "construction with" 10136: " an allocator must be possible if uses_allocator is true"); 10136: }; 10136: 10136: template 10136: struct __uses_alloc 10136: : __uses_alloc0 { }; 10136: 10136: template 10136: using __uses_alloc_t = 10136: __uses_alloc::value, _Tp, _Alloc, _Args...>; 10136: 10136: template 10136: inline __uses_alloc_t<_Tp, _Alloc, _Args...> 10136: __use_alloc(const _Alloc& __a) 10136: { 10136: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; 10136: __ret._M_a = std::__addressof(__a); 10136: return __ret; 10136: } 10136: 10136: template 10136: void 10136: __use_alloc(const _Alloc&&) = delete; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template class _Predicate, 10136: typename _Tp, typename _Alloc, typename... _Args> 10136: struct __is_uses_allocator_predicate 10136: : conditional::value, 10136: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, 10136: _Predicate<_Tp, _Args..., _Alloc>>, 10136: _Predicate<_Tp, _Args...>>::type { }; 10136: 10136: template 10136: struct __is_uses_allocator_constructible 10136: : __is_uses_allocator_predicate 10136: { }; 10136: 10136: 10136: template 10136: constexpr bool __is_uses_allocator_constructible_v = 10136: __is_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; 10136: 10136: 10136: template 10136: struct __is_nothrow_uses_allocator_constructible 10136: : __is_uses_allocator_predicate 10136: { }; 10136: 10136: 10136: 10136: template 10136: constexpr bool 10136: __is_nothrow_uses_allocator_constructible_v = 10136: __is_nothrow_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; 10136: 10136: 10136: template 10136: void __uses_allocator_construct_impl(__uses_alloc0 __a, _Tp* __ptr, 10136: _Args&&... __args) 10136: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } 10136: 10136: template 10136: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, 10136: _Args&&... __args) 10136: { 10136: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, 10136: std::forward<_Args>(__args)...); 10136: } 10136: 10136: template 10136: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, 10136: _Args&&... __args) 10136: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } 10136: 10136: template 10136: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, 10136: _Args&&... __args) 10136: { 10136: __uses_allocator_construct_impl(__use_alloc<_Tp, _Alloc, _Args...>(__a), 10136: __ptr, std::forward<_Args>(__args)...); 10136: } 10136: 10136: 10136: } 10136: # 78 "/usr/include/c++/8/memory" 2 3 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/unique_ptr.h" 1 3 10136: # 36 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: # 1 "/usr/include/c++/8/utility" 1 3 10136: # 58 "/usr/include/c++/8/utility" 3 10136: 10136: # 59 "/usr/include/c++/8/utility" 3 10136: # 69 "/usr/include/c++/8/utility" 3 10136: # 1 "/usr/include/c++/8/bits/stl_relops.h" 1 3 10136: # 67 "/usr/include/c++/8/bits/stl_relops.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: namespace rel_ops 10136: { 10136: # 85 "/usr/include/c++/8/bits/stl_relops.h" 3 10136: template 10136: inline bool 10136: operator!=(const _Tp& __x, const _Tp& __y) 10136: { return !(__x == __y); } 10136: # 98 "/usr/include/c++/8/bits/stl_relops.h" 3 10136: template 10136: inline bool 10136: operator>(const _Tp& __x, const _Tp& __y) 10136: { return __y < __x; } 10136: # 111 "/usr/include/c++/8/bits/stl_relops.h" 3 10136: template 10136: inline bool 10136: operator<=(const _Tp& __x, const _Tp& __y) 10136: { return !(__y < __x); } 10136: # 124 "/usr/include/c++/8/bits/stl_relops.h" 3 10136: template 10136: inline bool 10136: operator>=(const _Tp& __x, const _Tp& __y) 10136: { return !(__x < __y); } 10136: } 10136: 10136: 10136: } 10136: # 70 "/usr/include/c++/8/utility" 2 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/initializer_list" 1 3 10136: # 33 "/usr/include/c++/8/initializer_list" 3 10136: 10136: # 34 "/usr/include/c++/8/initializer_list" 3 10136: 10136: 10136: 10136: 10136: 10136: #pragma GCC visibility push(default) 10136: 10136: 10136: 10136: namespace std 10136: { 10136: 10136: template 10136: class initializer_list 10136: { 10136: public: 10136: typedef _E value_type; 10136: typedef const _E& reference; 10136: typedef const _E& const_reference; 10136: typedef size_t size_type; 10136: typedef const _E* iterator; 10136: typedef const _E* const_iterator; 10136: 10136: private: 10136: iterator _M_array; 10136: size_type _M_len; 10136: 10136: 10136: constexpr initializer_list(const_iterator __a, size_type __l) 10136: : _M_array(__a), _M_len(__l) { } 10136: 10136: public: 10136: constexpr initializer_list() noexcept 10136: : _M_array(0), _M_len(0) { } 10136: 10136: 10136: constexpr size_type 10136: size() const noexcept { return _M_len; } 10136: 10136: 10136: constexpr const_iterator 10136: begin() const noexcept { return _M_array; } 10136: 10136: 10136: constexpr const_iterator 10136: end() const noexcept { return begin() + size(); } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: constexpr const _Tp* 10136: begin(initializer_list<_Tp> __ils) noexcept 10136: { return __ils.begin(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: constexpr const _Tp* 10136: end(initializer_list<_Tp> __ils) noexcept 10136: { return __ils.end(); } 10136: } 10136: 10136: #pragma GCC visibility pop 10136: # 77 "/usr/include/c++/8/utility" 2 3 10136: 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: template 10136: struct tuple_size; 10136: 10136: 10136: 10136: 10136: 10136: template::type, 10136: typename = typename enable_if::value>::type, 10136: size_t = tuple_size<_Tp>::value> 10136: using __enable_if_has_tuple_size = _Tp; 10136: 10136: template 10136: struct tuple_size> 10136: : public tuple_size<_Tp> { }; 10136: 10136: template 10136: struct tuple_size> 10136: : public tuple_size<_Tp> { }; 10136: 10136: template 10136: struct tuple_size> 10136: : public tuple_size<_Tp> { }; 10136: 10136: 10136: template 10136: struct tuple_element; 10136: 10136: 10136: template 10136: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; 10136: 10136: template 10136: struct tuple_element<__i, const _Tp> 10136: { 10136: typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; 10136: }; 10136: 10136: template 10136: struct tuple_element<__i, volatile _Tp> 10136: { 10136: typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; 10136: }; 10136: 10136: template 10136: struct tuple_element<__i, const volatile _Tp> 10136: { 10136: typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: using tuple_element_t = typename tuple_element<__i, _Tp>::type; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_tuple_like_impl> : true_type 10136: { }; 10136: 10136: 10136: template 10136: struct tuple_size> 10136: : public integral_constant { }; 10136: 10136: 10136: template 10136: struct tuple_element<0, std::pair<_Tp1, _Tp2>> 10136: { typedef _Tp1 type; }; 10136: 10136: 10136: template 10136: struct tuple_element<1, std::pair<_Tp1, _Tp2>> 10136: { typedef _Tp2 type; }; 10136: 10136: template 10136: struct __pair_get; 10136: 10136: template<> 10136: struct __pair_get<0> 10136: { 10136: template 10136: static constexpr _Tp1& 10136: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept 10136: { return __pair.first; } 10136: 10136: template 10136: static constexpr _Tp1&& 10136: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept 10136: { return std::forward<_Tp1>(__pair.first); } 10136: 10136: template 10136: static constexpr const _Tp1& 10136: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept 10136: { return __pair.first; } 10136: 10136: template 10136: static constexpr const _Tp1&& 10136: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept 10136: { return std::forward(__pair.first); } 10136: }; 10136: 10136: template<> 10136: struct __pair_get<1> 10136: { 10136: template 10136: static constexpr _Tp2& 10136: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept 10136: { return __pair.second; } 10136: 10136: template 10136: static constexpr _Tp2&& 10136: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept 10136: { return std::forward<_Tp2>(__pair.second); } 10136: 10136: template 10136: static constexpr const _Tp2& 10136: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept 10136: { return __pair.second; } 10136: 10136: template 10136: static constexpr const _Tp2&& 10136: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept 10136: { return std::forward(__pair.second); } 10136: }; 10136: 10136: template 10136: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& 10136: get(std::pair<_Tp1, _Tp2>& __in) noexcept 10136: { return __pair_get<_Int>::__get(__in); } 10136: 10136: template 10136: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& 10136: get(std::pair<_Tp1, _Tp2>&& __in) noexcept 10136: { return __pair_get<_Int>::__move_get(std::move(__in)); } 10136: 10136: template 10136: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& 10136: get(const std::pair<_Tp1, _Tp2>& __in) noexcept 10136: { return __pair_get<_Int>::__const_get(__in); } 10136: 10136: template 10136: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& 10136: get(const std::pair<_Tp1, _Tp2>&& __in) noexcept 10136: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: constexpr _Tp& 10136: get(pair<_Tp, _Up>& __p) noexcept 10136: { return __p.first; } 10136: 10136: template 10136: constexpr const _Tp& 10136: get(const pair<_Tp, _Up>& __p) noexcept 10136: { return __p.first; } 10136: 10136: template 10136: constexpr _Tp&& 10136: get(pair<_Tp, _Up>&& __p) noexcept 10136: { return std::move(__p.first); } 10136: 10136: template 10136: constexpr const _Tp&& 10136: get(const pair<_Tp, _Up>&& __p) noexcept 10136: { return std::move(__p.first); } 10136: 10136: template 10136: constexpr _Tp& 10136: get(pair<_Up, _Tp>& __p) noexcept 10136: { return __p.second; } 10136: 10136: template 10136: constexpr const _Tp& 10136: get(const pair<_Up, _Tp>& __p) noexcept 10136: { return __p.second; } 10136: 10136: template 10136: constexpr _Tp&& 10136: get(pair<_Up, _Tp>&& __p) noexcept 10136: { return std::move(__p.second); } 10136: 10136: template 10136: constexpr const _Tp&& 10136: get(const pair<_Up, _Tp>&& __p) noexcept 10136: { return std::move(__p.second); } 10136: 10136: 10136: 10136: 10136: template 10136: inline _Tp 10136: exchange(_Tp& __obj, _Up&& __new_val) 10136: { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } 10136: 10136: 10136: 10136: 10136: template struct _Index_tuple { }; 10136: # 302 "/usr/include/c++/8/utility" 3 10136: template 10136: struct _Build_index_tuple 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: using __type = _Index_tuple<__integer_pack(_Num)...>; 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct integer_sequence 10136: { 10136: typedef _Tp value_type; 10136: static constexpr size_t size() noexcept { return sizeof...(_Idx); } 10136: }; 10136: 10136: 10136: template 10136: using make_integer_sequence 10136: 10136: 10136: 10136: = integer_sequence<_Tp, __integer_pack(_Num)...>; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: using index_sequence = integer_sequence; 10136: 10136: 10136: template 10136: using make_index_sequence = make_integer_sequence; 10136: 10136: 10136: template 10136: using index_sequence_for = make_index_sequence; 10136: # 397 "/usr/include/c++/8/utility" 3 10136: 10136: } 10136: # 37 "/usr/include/c++/8/bits/unique_ptr.h" 2 3 10136: # 1 "/usr/include/c++/8/tuple" 1 3 10136: # 32 "/usr/include/c++/8/tuple" 3 10136: 10136: # 33 "/usr/include/c++/8/tuple" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/array" 1 3 10136: # 32 "/usr/include/c++/8/array" 3 10136: 10136: # 33 "/usr/include/c++/8/array" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/stdexcept" 1 3 10136: # 36 "/usr/include/c++/8/stdexcept" 3 10136: 10136: # 37 "/usr/include/c++/8/stdexcept" 3 10136: 10136: 10136: # 1 "/usr/include/c++/8/string" 1 3 10136: # 36 "/usr/include/c++/8/string" 3 10136: 10136: # 37 "/usr/include/c++/8/string" 3 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/char_traits.h" 1 3 10136: # 37 "/usr/include/c++/8/bits/char_traits.h" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/char_traits.h" 3 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/cwchar" 1 3 10136: # 39 "/usr/include/c++/8/cwchar" 3 10136: 10136: # 40 "/usr/include/c++/8/cwchar" 3 10136: # 42 "/usr/include/c++/8/bits/char_traits.h" 2 3 10136: 10136: 10136: 10136: 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 61 "/usr/include/c++/8/bits/char_traits.h" 3 10136: template 10136: struct _Char_types 10136: { 10136: typedef unsigned long int_type; 10136: typedef std::streampos pos_type; 10136: typedef std::streamoff off_type; 10136: typedef std::mbstate_t state_type; 10136: }; 10136: # 86 "/usr/include/c++/8/bits/char_traits.h" 3 10136: template 10136: struct char_traits 10136: { 10136: typedef _CharT char_type; 10136: typedef typename _Char_types<_CharT>::int_type int_type; 10136: typedef typename _Char_types<_CharT>::pos_type pos_type; 10136: typedef typename _Char_types<_CharT>::off_type off_type; 10136: typedef typename _Char_types<_CharT>::state_type state_type; 10136: 10136: static constexpr void 10136: assign(char_type& __c1, const char_type& __c2) 10136: { __c1 = __c2; } 10136: 10136: static constexpr bool 10136: eq(const char_type& __c1, const char_type& __c2) 10136: { return __c1 == __c2; } 10136: 10136: static constexpr bool 10136: lt(const char_type& __c1, const char_type& __c2) 10136: { return __c1 < __c2; } 10136: 10136: static constexpr int 10136: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); 10136: 10136: static constexpr std::size_t 10136: length(const char_type* __s); 10136: 10136: static constexpr const char_type* 10136: find(const char_type* __s, std::size_t __n, const char_type& __a); 10136: 10136: static char_type* 10136: move(char_type* __s1, const char_type* __s2, std::size_t __n); 10136: 10136: static char_type* 10136: copy(char_type* __s1, const char_type* __s2, std::size_t __n); 10136: 10136: static char_type* 10136: assign(char_type* __s, std::size_t __n, char_type __a); 10136: 10136: static constexpr char_type 10136: to_char_type(const int_type& __c) 10136: { return static_cast(__c); } 10136: 10136: static constexpr int_type 10136: to_int_type(const char_type& __c) 10136: { return static_cast(__c); } 10136: 10136: static constexpr bool 10136: eq_int_type(const int_type& __c1, const int_type& __c2) 10136: { return __c1 == __c2; } 10136: 10136: static constexpr int_type 10136: eof() 10136: { return static_cast(-1); } 10136: 10136: static constexpr int_type 10136: not_eof(const int_type& __c) 10136: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } 10136: }; 10136: 10136: 10136: 10136: template 10136: constexpr int 10136: char_traits<_CharT>:: 10136: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) 10136: { 10136: for (std::size_t __i = 0; __i < __n; ++__i) 10136: if (lt(__s1[__i], __s2[__i])) 10136: return -1; 10136: else if (lt(__s2[__i], __s1[__i])) 10136: return 1; 10136: return 0; 10136: } 10136: 10136: template 10136: constexpr std::size_t 10136: char_traits<_CharT>:: 10136: length(const char_type* __p) 10136: { 10136: std::size_t __i = 0; 10136: while (!eq(__p[__i], char_type())) 10136: ++__i; 10136: return __i; 10136: } 10136: 10136: template 10136: constexpr const typename char_traits<_CharT>::char_type* 10136: char_traits<_CharT>:: 10136: find(const char_type* __s, std::size_t __n, const char_type& __a) 10136: { 10136: for (std::size_t __i = 0; __i < __n; ++__i) 10136: if (eq(__s[__i], __a)) 10136: return __s + __i; 10136: return 0; 10136: } 10136: 10136: template 10136: typename char_traits<_CharT>::char_type* 10136: char_traits<_CharT>:: 10136: move(char_type* __s1, const char_type* __s2, std::size_t __n) 10136: { 10136: return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, 10136: __n * sizeof(char_type))); 10136: } 10136: 10136: template 10136: typename char_traits<_CharT>::char_type* 10136: char_traits<_CharT>:: 10136: copy(char_type* __s1, const char_type* __s2, std::size_t __n) 10136: { 10136: 10136: std::copy(__s2, __s2 + __n, __s1); 10136: return __s1; 10136: } 10136: 10136: template 10136: typename char_traits<_CharT>::char_type* 10136: char_traits<_CharT>:: 10136: assign(char_type* __s, std::size_t __n, char_type __a) 10136: { 10136: 10136: std::fill_n(__s, __n, __a); 10136: return __s; 10136: } 10136: 10136: 10136: } 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 268 "/usr/include/c++/8/bits/char_traits.h" 3 10136: template 10136: struct char_traits : public __gnu_cxx::char_traits<_CharT> 10136: { }; 10136: 10136: 10136: 10136: template<> 10136: struct char_traits 10136: { 10136: typedef char char_type; 10136: typedef int int_type; 10136: typedef streampos pos_type; 10136: typedef streamoff off_type; 10136: typedef mbstate_t state_type; 10136: 10136: static void 10136: assign(char_type& __c1, const char_type& __c2) noexcept 10136: { __c1 = __c2; } 10136: 10136: static constexpr bool 10136: eq(const char_type& __c1, const char_type& __c2) noexcept 10136: { return __c1 == __c2; } 10136: 10136: static constexpr bool 10136: lt(const char_type& __c1, const char_type& __c2) noexcept 10136: { 10136: 10136: return (static_cast(__c1) 10136: < static_cast(__c2)); 10136: } 10136: 10136: static int 10136: compare(const char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: if (__n == 0) 10136: return 0; 10136: return __builtin_memcmp(__s1, __s2, __n); 10136: } 10136: 10136: static size_t 10136: length(const char_type* __s) 10136: { 10136: 10136: 10136: 10136: 10136: return __builtin_strlen(__s); 10136: } 10136: 10136: static const char_type* 10136: find(const char_type* __s, size_t __n, const char_type& __a) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: if (__n == 0) 10136: return 0; 10136: return static_cast(__builtin_memchr(__s, __a, __n)); 10136: } 10136: 10136: static char_type* 10136: move(char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: if (__n == 0) 10136: return __s1; 10136: return static_cast(__builtin_memmove(__s1, __s2, __n)); 10136: } 10136: 10136: static char_type* 10136: copy(char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: if (__n == 0) 10136: return __s1; 10136: return static_cast(__builtin_memcpy(__s1, __s2, __n)); 10136: } 10136: 10136: static char_type* 10136: assign(char_type* __s, size_t __n, char_type __a) 10136: { 10136: if (__n == 0) 10136: return __s; 10136: return static_cast(__builtin_memset(__s, __a, __n)); 10136: } 10136: 10136: static constexpr char_type 10136: to_char_type(const int_type& __c) noexcept 10136: { return static_cast(__c); } 10136: 10136: 10136: 10136: static constexpr int_type 10136: to_int_type(const char_type& __c) noexcept 10136: { return static_cast(static_cast(__c)); } 10136: 10136: static constexpr bool 10136: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 10136: { return __c1 == __c2; } 10136: 10136: static constexpr int_type 10136: eof() noexcept 10136: { return static_cast(-1); } 10136: 10136: static constexpr int_type 10136: not_eof(const int_type& __c) noexcept 10136: { return (__c == eof()) ? 0 : __c; } 10136: }; 10136: 10136: 10136: 10136: 10136: template<> 10136: struct char_traits 10136: { 10136: typedef wchar_t char_type; 10136: typedef wint_t int_type; 10136: typedef streamoff off_type; 10136: typedef wstreampos pos_type; 10136: typedef mbstate_t state_type; 10136: 10136: static void 10136: assign(char_type& __c1, const char_type& __c2) noexcept 10136: { __c1 = __c2; } 10136: 10136: static constexpr bool 10136: eq(const char_type& __c1, const char_type& __c2) noexcept 10136: { return __c1 == __c2; } 10136: 10136: static constexpr bool 10136: lt(const char_type& __c1, const char_type& __c2) noexcept 10136: { return __c1 < __c2; } 10136: 10136: static int 10136: compare(const char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: if (__n == 0) 10136: return 0; 10136: else 10136: return wmemcmp(__s1, __s2, __n); 10136: } 10136: 10136: static size_t 10136: length(const char_type* __s) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: return wcslen(__s); 10136: } 10136: 10136: static const char_type* 10136: find(const char_type* __s, size_t __n, const char_type& __a) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: if (__n == 0) 10136: return 0; 10136: else 10136: return wmemchr(__s, __a, __n); 10136: } 10136: 10136: static char_type* 10136: move(char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: if (__n == 0) 10136: return __s1; 10136: return wmemmove(__s1, __s2, __n); 10136: } 10136: 10136: static char_type* 10136: copy(char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: if (__n == 0) 10136: return __s1; 10136: return wmemcpy(__s1, __s2, __n); 10136: } 10136: 10136: static char_type* 10136: assign(char_type* __s, size_t __n, char_type __a) 10136: { 10136: if (__n == 0) 10136: return __s; 10136: return wmemset(__s, __a, __n); 10136: } 10136: 10136: static constexpr char_type 10136: to_char_type(const int_type& __c) noexcept 10136: { return char_type(__c); } 10136: 10136: static constexpr int_type 10136: to_int_type(const char_type& __c) noexcept 10136: { return int_type(__c); } 10136: 10136: static constexpr bool 10136: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 10136: { return __c1 == __c2; } 10136: 10136: static constexpr int_type 10136: eof() noexcept 10136: { return static_cast((0xffffffffu)); } 10136: 10136: static constexpr int_type 10136: not_eof(const int_type& __c) noexcept 10136: { return eq_int_type(__c, eof()) ? 0 : __c; } 10136: }; 10136: 10136: 10136: 10136: } 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/cstdint" 1 3 10136: # 32 "/usr/include/c++/8/cstdint" 3 10136: 10136: # 33 "/usr/include/c++/8/cstdint" 3 10136: # 46 "/usr/include/c++/8/cstdint" 3 10136: namespace std 10136: { 10136: using ::int8_t; 10136: using ::int16_t; 10136: using ::int32_t; 10136: using ::int64_t; 10136: 10136: using ::int_fast8_t; 10136: using ::int_fast16_t; 10136: using ::int_fast32_t; 10136: using ::int_fast64_t; 10136: 10136: using ::int_least8_t; 10136: using ::int_least16_t; 10136: using ::int_least32_t; 10136: using ::int_least64_t; 10136: 10136: using ::intmax_t; 10136: using ::intptr_t; 10136: 10136: using ::uint8_t; 10136: using ::uint16_t; 10136: using ::uint32_t; 10136: using ::uint64_t; 10136: 10136: using ::uint_fast8_t; 10136: using ::uint_fast16_t; 10136: using ::uint_fast32_t; 10136: using ::uint_fast64_t; 10136: 10136: using ::uint_least8_t; 10136: using ::uint_least16_t; 10136: using ::uint_least32_t; 10136: using ::uint_least64_t; 10136: 10136: using ::uintmax_t; 10136: using ::uintptr_t; 10136: } 10136: # 502 "/usr/include/c++/8/bits/char_traits.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template<> 10136: struct char_traits 10136: { 10136: typedef char16_t char_type; 10136: typedef uint_least16_t int_type; 10136: typedef streamoff off_type; 10136: typedef u16streampos pos_type; 10136: typedef mbstate_t state_type; 10136: 10136: static void 10136: assign(char_type& __c1, const char_type& __c2) noexcept 10136: { __c1 = __c2; } 10136: 10136: static constexpr bool 10136: eq(const char_type& __c1, const char_type& __c2) noexcept 10136: { return __c1 == __c2; } 10136: 10136: static constexpr bool 10136: lt(const char_type& __c1, const char_type& __c2) noexcept 10136: { return __c1 < __c2; } 10136: 10136: static int 10136: compare(const char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: for (size_t __i = 0; __i < __n; ++__i) 10136: if (lt(__s1[__i], __s2[__i])) 10136: return -1; 10136: else if (lt(__s2[__i], __s1[__i])) 10136: return 1; 10136: return 0; 10136: } 10136: 10136: static size_t 10136: length(const char_type* __s) 10136: { 10136: size_t __i = 0; 10136: while (!eq(__s[__i], char_type())) 10136: ++__i; 10136: return __i; 10136: } 10136: 10136: static const char_type* 10136: find(const char_type* __s, size_t __n, const char_type& __a) 10136: { 10136: for (size_t __i = 0; __i < __n; ++__i) 10136: if (eq(__s[__i], __a)) 10136: return __s + __i; 10136: return 0; 10136: } 10136: 10136: static char_type* 10136: move(char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: if (__n == 0) 10136: return __s1; 10136: return (static_cast 10136: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 10136: } 10136: 10136: static char_type* 10136: copy(char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: if (__n == 0) 10136: return __s1; 10136: return (static_cast 10136: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 10136: } 10136: 10136: static char_type* 10136: assign(char_type* __s, size_t __n, char_type __a) 10136: { 10136: for (size_t __i = 0; __i < __n; ++__i) 10136: assign(__s[__i], __a); 10136: return __s; 10136: } 10136: 10136: static constexpr char_type 10136: to_char_type(const int_type& __c) noexcept 10136: { return char_type(__c); } 10136: 10136: static constexpr int_type 10136: to_int_type(const char_type& __c) noexcept 10136: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } 10136: 10136: static constexpr bool 10136: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 10136: { return __c1 == __c2; } 10136: 10136: static constexpr int_type 10136: eof() noexcept 10136: { return static_cast(-1); } 10136: 10136: static constexpr int_type 10136: not_eof(const int_type& __c) noexcept 10136: { return eq_int_type(__c, eof()) ? 0 : __c; } 10136: }; 10136: 10136: template<> 10136: struct char_traits 10136: { 10136: typedef char32_t char_type; 10136: typedef uint_least32_t int_type; 10136: typedef streamoff off_type; 10136: typedef u32streampos pos_type; 10136: typedef mbstate_t state_type; 10136: 10136: static void 10136: assign(char_type& __c1, const char_type& __c2) noexcept 10136: { __c1 = __c2; } 10136: 10136: static constexpr bool 10136: eq(const char_type& __c1, const char_type& __c2) noexcept 10136: { return __c1 == __c2; } 10136: 10136: static constexpr bool 10136: lt(const char_type& __c1, const char_type& __c2) noexcept 10136: { return __c1 < __c2; } 10136: 10136: static int 10136: compare(const char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: for (size_t __i = 0; __i < __n; ++__i) 10136: if (lt(__s1[__i], __s2[__i])) 10136: return -1; 10136: else if (lt(__s2[__i], __s1[__i])) 10136: return 1; 10136: return 0; 10136: } 10136: 10136: static size_t 10136: length(const char_type* __s) 10136: { 10136: size_t __i = 0; 10136: while (!eq(__s[__i], char_type())) 10136: ++__i; 10136: return __i; 10136: } 10136: 10136: static const char_type* 10136: find(const char_type* __s, size_t __n, const char_type& __a) 10136: { 10136: for (size_t __i = 0; __i < __n; ++__i) 10136: if (eq(__s[__i], __a)) 10136: return __s + __i; 10136: return 0; 10136: } 10136: 10136: static char_type* 10136: move(char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: if (__n == 0) 10136: return __s1; 10136: return (static_cast 10136: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 10136: } 10136: 10136: static char_type* 10136: copy(char_type* __s1, const char_type* __s2, size_t __n) 10136: { 10136: if (__n == 0) 10136: return __s1; 10136: return (static_cast 10136: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 10136: } 10136: 10136: static char_type* 10136: assign(char_type* __s, size_t __n, char_type __a) 10136: { 10136: for (size_t __i = 0; __i < __n; ++__i) 10136: assign(__s[__i], __a); 10136: return __s; 10136: } 10136: 10136: static constexpr char_type 10136: to_char_type(const int_type& __c) noexcept 10136: { return char_type(__c); } 10136: 10136: static constexpr int_type 10136: to_int_type(const char_type& __c) noexcept 10136: { return int_type(__c); } 10136: 10136: static constexpr bool 10136: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 10136: { return __c1 == __c2; } 10136: 10136: static constexpr int_type 10136: eof() noexcept 10136: { return static_cast(-1); } 10136: 10136: static constexpr int_type 10136: not_eof(const int_type& __c) noexcept 10136: { return eq_int_type(__c, eof()) ? 0 : __c; } 10136: }; 10136: 10136: 10136: } 10136: # 41 "/usr/include/c++/8/string" 2 3 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/localefwd.h" 1 3 10136: # 37 "/usr/include/c++/8/bits/localefwd.h" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/localefwd.h" 3 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++locale.h" 1 3 10136: # 39 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++locale.h" 3 10136: 10136: # 40 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++locale.h" 3 10136: 10136: # 1 "/usr/include/c++/8/clocale" 1 3 10136: # 39 "/usr/include/c++/8/clocale" 3 10136: 10136: # 40 "/usr/include/c++/8/clocale" 3 10136: 10136: 10136: # 1 "/usr/include/locale.h" 1 3 4 10136: # 28 "/usr/include/locale.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 29 "/usr/include/locale.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/locale.h" 1 3 4 10136: # 30 "/usr/include/locale.h" 2 3 4 10136: 10136: extern "C" { 10136: # 51 "/usr/include/locale.h" 3 4 10136: struct lconv 10136: { 10136: 10136: 10136: char *decimal_point; 10136: char *thousands_sep; 10136: 10136: 10136: 10136: 10136: 10136: char *grouping; 10136: 10136: 10136: 10136: 10136: 10136: char *int_curr_symbol; 10136: char *currency_symbol; 10136: char *mon_decimal_point; 10136: char *mon_thousands_sep; 10136: char *mon_grouping; 10136: char *positive_sign; 10136: char *negative_sign; 10136: char int_frac_digits; 10136: char frac_digits; 10136: 10136: char p_cs_precedes; 10136: 10136: char p_sep_by_space; 10136: 10136: char n_cs_precedes; 10136: 10136: char n_sep_by_space; 10136: 10136: 10136: 10136: 10136: 10136: 10136: char p_sign_posn; 10136: char n_sign_posn; 10136: 10136: 10136: char int_p_cs_precedes; 10136: 10136: char int_p_sep_by_space; 10136: 10136: char int_n_cs_precedes; 10136: 10136: char int_n_sep_by_space; 10136: 10136: 10136: 10136: 10136: 10136: 10136: char int_p_sign_posn; 10136: char int_n_sign_posn; 10136: # 118 "/usr/include/locale.h" 3 4 10136: }; 10136: 10136: 10136: 10136: extern char *setlocale (int __category, const char *__locale) throw (); 10136: 10136: 10136: extern struct lconv *localeconv (void) throw (); 10136: # 141 "/usr/include/locale.h" 3 4 10136: extern locale_t newlocale (int __category_mask, const char *__locale, 10136: locale_t __base) throw (); 10136: # 176 "/usr/include/locale.h" 3 4 10136: extern locale_t duplocale (locale_t __dataset) throw (); 10136: 10136: 10136: 10136: extern void freelocale (locale_t __dataset) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern locale_t uselocale (locale_t __dataset) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: } 10136: # 43 "/usr/include/c++/8/clocale" 2 3 10136: # 51 "/usr/include/c++/8/clocale" 3 10136: namespace std 10136: { 10136: using ::lconv; 10136: using ::setlocale; 10136: using ::localeconv; 10136: } 10136: # 42 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++locale.h" 2 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: extern "C" __typeof(uselocale) __uselocale; 10136: 10136: 10136: } 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: typedef __locale_t __c_locale; 10136: 10136: 10136: 10136: 10136: 10136: inline int 10136: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), 10136: char* __out, 10136: const int __size __attribute__ ((__unused__)), 10136: const char* __fmt, ...) 10136: { 10136: 10136: __c_locale __old = __gnu_cxx::__uselocale(__cloc); 10136: # 88 "/usr/include/arm-linux-gnueabihf/c++/8/bits/c++locale.h" 3 10136: __builtin_va_list __args; 10136: __builtin_va_start(__args, __fmt); 10136: 10136: 10136: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); 10136: 10136: 10136: 10136: 10136: __builtin_va_end(__args); 10136: 10136: 10136: __gnu_cxx::__uselocale(__old); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: return __ret; 10136: } 10136: 10136: 10136: } 10136: # 41 "/usr/include/c++/8/bits/localefwd.h" 2 3 10136: 10136: # 1 "/usr/include/c++/8/cctype" 1 3 10136: # 39 "/usr/include/c++/8/cctype" 3 10136: 10136: # 40 "/usr/include/c++/8/cctype" 3 10136: 10136: 10136: # 1 "/usr/include/ctype.h" 1 3 4 10136: # 28 "/usr/include/ctype.h" 3 4 10136: extern "C" { 10136: # 46 "/usr/include/ctype.h" 3 4 10136: enum 10136: { 10136: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), 10136: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), 10136: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), 10136: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), 10136: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), 10136: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), 10136: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), 10136: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), 10136: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), 10136: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), 10136: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), 10136: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) 10136: }; 10136: # 79 "/usr/include/ctype.h" 3 4 10136: extern const unsigned short int **__ctype_b_loc (void) 10136: throw () __attribute__ ((__const__)); 10136: extern const __int32_t **__ctype_tolower_loc (void) 10136: throw () __attribute__ ((__const__)); 10136: extern const __int32_t **__ctype_toupper_loc (void) 10136: throw () __attribute__ ((__const__)); 10136: # 108 "/usr/include/ctype.h" 3 4 10136: extern int isalnum (int) throw (); 10136: extern int isalpha (int) throw (); 10136: extern int iscntrl (int) throw (); 10136: extern int isdigit (int) throw (); 10136: extern int islower (int) throw (); 10136: extern int isgraph (int) throw (); 10136: extern int isprint (int) throw (); 10136: extern int ispunct (int) throw (); 10136: extern int isspace (int) throw (); 10136: extern int isupper (int) throw (); 10136: extern int isxdigit (int) throw (); 10136: 10136: 10136: 10136: extern int tolower (int __c) throw (); 10136: 10136: 10136: extern int toupper (int __c) throw (); 10136: 10136: 10136: 10136: 10136: extern int isblank (int) throw (); 10136: 10136: 10136: 10136: 10136: extern int isctype (int __c, int __mask) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int isascii (int __c) throw (); 10136: 10136: 10136: 10136: extern int toascii (int __c) throw (); 10136: 10136: 10136: 10136: extern int _toupper (int) throw (); 10136: extern int _tolower (int) throw (); 10136: # 251 "/usr/include/ctype.h" 3 4 10136: extern int isalnum_l (int, locale_t) throw (); 10136: extern int isalpha_l (int, locale_t) throw (); 10136: extern int iscntrl_l (int, locale_t) throw (); 10136: extern int isdigit_l (int, locale_t) throw (); 10136: extern int islower_l (int, locale_t) throw (); 10136: extern int isgraph_l (int, locale_t) throw (); 10136: extern int isprint_l (int, locale_t) throw (); 10136: extern int ispunct_l (int, locale_t) throw (); 10136: extern int isspace_l (int, locale_t) throw (); 10136: extern int isupper_l (int, locale_t) throw (); 10136: extern int isxdigit_l (int, locale_t) throw (); 10136: 10136: extern int isblank_l (int, locale_t) throw (); 10136: 10136: 10136: 10136: extern int __tolower_l (int __c, locale_t __l) throw (); 10136: extern int tolower_l (int __c, locale_t __l) throw (); 10136: 10136: 10136: extern int __toupper_l (int __c, locale_t __l) throw (); 10136: extern int toupper_l (int __c, locale_t __l) throw (); 10136: # 327 "/usr/include/ctype.h" 3 4 10136: } 10136: # 43 "/usr/include/c++/8/cctype" 2 3 10136: # 62 "/usr/include/c++/8/cctype" 3 10136: namespace std 10136: { 10136: using ::isalnum; 10136: using ::isalpha; 10136: using ::iscntrl; 10136: using ::isdigit; 10136: using ::isgraph; 10136: using ::islower; 10136: using ::isprint; 10136: using ::ispunct; 10136: using ::isspace; 10136: using ::isupper; 10136: using ::isxdigit; 10136: using ::tolower; 10136: using ::toupper; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace std 10136: { 10136: using ::isblank; 10136: } 10136: # 43 "/usr/include/c++/8/bits/localefwd.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 55 "/usr/include/c++/8/bits/localefwd.h" 3 10136: class locale; 10136: 10136: template 10136: bool 10136: has_facet(const locale&) throw(); 10136: 10136: template 10136: const _Facet& 10136: use_facet(const locale&); 10136: 10136: 10136: template 10136: bool 10136: isspace(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: isprint(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: iscntrl(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: isupper(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: islower(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: isalpha(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: isdigit(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: ispunct(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: isxdigit(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: isalnum(_CharT, const locale&); 10136: 10136: template 10136: bool 10136: isgraph(_CharT, const locale&); 10136: 10136: 10136: template 10136: bool 10136: isblank(_CharT, const locale&); 10136: 10136: 10136: template 10136: _CharT 10136: toupper(_CharT, const locale&); 10136: 10136: template 10136: _CharT 10136: tolower(_CharT, const locale&); 10136: 10136: 10136: class ctype_base; 10136: template 10136: class ctype; 10136: template<> class ctype; 10136: 10136: template<> class ctype; 10136: 10136: template 10136: class ctype_byname; 10136: 10136: 10136: class codecvt_base; 10136: template 10136: class codecvt; 10136: template<> class codecvt; 10136: 10136: template<> class codecvt; 10136: 10136: template 10136: class codecvt_byname; 10136: 10136: 10136: 10136: template > 10136: class num_get; 10136: template > 10136: class num_put; 10136: 10136: namespace __cxx11 { 10136: template class numpunct; 10136: template class numpunct_byname; 10136: } 10136: 10136: namespace __cxx11 { 10136: 10136: template 10136: class collate; 10136: template 10136: class collate_byname; 10136: } 10136: 10136: 10136: class time_base; 10136: namespace __cxx11 { 10136: template > 10136: class time_get; 10136: template > 10136: class time_get_byname; 10136: } 10136: template > 10136: class time_put; 10136: template > 10136: class time_put_byname; 10136: 10136: 10136: class money_base; 10136: namespace __cxx11 { 10136: template > 10136: class money_get; 10136: template > 10136: class money_put; 10136: } 10136: namespace __cxx11 { 10136: template 10136: class moneypunct; 10136: template 10136: class moneypunct_byname; 10136: } 10136: 10136: 10136: class messages_base; 10136: namespace __cxx11 { 10136: template 10136: class messages; 10136: template 10136: class messages_byname; 10136: } 10136: 10136: 10136: } 10136: # 44 "/usr/include/c++/8/string" 2 3 10136: # 1 "/usr/include/c++/8/bits/ostream_insert.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/ostream_insert.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/ostream_insert.h" 3 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/cxxabi_forced.h" 1 3 10136: # 34 "/usr/include/c++/8/bits/cxxabi_forced.h" 3 10136: 10136: # 35 "/usr/include/c++/8/bits/cxxabi_forced.h" 3 10136: 10136: #pragma GCC visibility push(default) 10136: 10136: 10136: namespace __cxxabiv1 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: class __forced_unwind 10136: { 10136: virtual ~__forced_unwind() throw(); 10136: 10136: 10136: virtual void __pure_dummy() = 0; 10136: }; 10136: } 10136: 10136: 10136: #pragma GCC visibility pop 10136: # 37 "/usr/include/c++/8/bits/ostream_insert.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: inline void 10136: __ostream_write(basic_ostream<_CharT, _Traits>& __out, 10136: const _CharT* __s, streamsize __n) 10136: { 10136: typedef basic_ostream<_CharT, _Traits> __ostream_type; 10136: typedef typename __ostream_type::ios_base __ios_base; 10136: 10136: const streamsize __put = __out.rdbuf()->sputn(__s, __n); 10136: if (__put != __n) 10136: __out.setstate(__ios_base::badbit); 10136: } 10136: 10136: template 10136: inline void 10136: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) 10136: { 10136: typedef basic_ostream<_CharT, _Traits> __ostream_type; 10136: typedef typename __ostream_type::ios_base __ios_base; 10136: 10136: const _CharT __c = __out.fill(); 10136: for (; __n > 0; --__n) 10136: { 10136: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); 10136: if (_Traits::eq_int_type(__put, _Traits::eof())) 10136: { 10136: __out.setstate(__ios_base::badbit); 10136: break; 10136: } 10136: } 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, 10136: const _CharT* __s, streamsize __n) 10136: { 10136: typedef basic_ostream<_CharT, _Traits> __ostream_type; 10136: typedef typename __ostream_type::ios_base __ios_base; 10136: 10136: typename __ostream_type::sentry __cerb(__out); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: const streamsize __w = __out.width(); 10136: if (__w > __n) 10136: { 10136: const bool __left = ((__out.flags() 10136: & __ios_base::adjustfield) 10136: == __ios_base::left); 10136: if (!__left) 10136: __ostream_fill(__out, __w - __n); 10136: if (__out.good()) 10136: __ostream_write(__out, __s, __n); 10136: if (__left && __out.good()) 10136: __ostream_fill(__out, __w - __n); 10136: } 10136: else 10136: __ostream_write(__out, __s, __n); 10136: __out.width(0); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: __out._M_setstate(__ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { __out._M_setstate(__ios_base::badbit); } 10136: } 10136: return __out; 10136: } 10136: 10136: 10136: 10136: 10136: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); 10136: 10136: 10136: extern template wostream& __ostream_insert(wostream&, const wchar_t*, 10136: streamsize); 10136: 10136: 10136: 10136: 10136: } 10136: # 45 "/usr/include/c++/8/string" 2 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/range_access.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/range_access.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/range_access.h" 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: begin(_Container& __cont) -> decltype(__cont.begin()) 10136: { return __cont.begin(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: begin(const _Container& __cont) -> decltype(__cont.begin()) 10136: { return __cont.begin(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: end(_Container& __cont) -> decltype(__cont.end()) 10136: { return __cont.end(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: end(const _Container& __cont) -> decltype(__cont.end()) 10136: { return __cont.end(); } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline constexpr _Tp* 10136: begin(_Tp (&__arr)[_Nm]) 10136: { return __arr; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline constexpr _Tp* 10136: end(_Tp (&__arr)[_Nm]) 10136: { return __arr + _Nm; } 10136: 10136: 10136: 10136: template class valarray; 10136: 10136: template _Tp* begin(valarray<_Tp>&); 10136: template const _Tp* begin(const valarray<_Tp>&); 10136: template _Tp* end(valarray<_Tp>&); 10136: template const _Tp* end(const valarray<_Tp>&); 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline constexpr auto 10136: cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont))) 10136: -> decltype(std::begin(__cont)) 10136: { return std::begin(__cont); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline constexpr auto 10136: cend(const _Container& __cont) noexcept(noexcept(std::end(__cont))) 10136: -> decltype(std::end(__cont)) 10136: { return std::end(__cont); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: rbegin(_Container& __cont) -> decltype(__cont.rbegin()) 10136: { return __cont.rbegin(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: rbegin(const _Container& __cont) -> decltype(__cont.rbegin()) 10136: { return __cont.rbegin(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: rend(_Container& __cont) -> decltype(__cont.rend()) 10136: { return __cont.rend(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: rend(const _Container& __cont) -> decltype(__cont.rend()) 10136: { return __cont.rend(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline reverse_iterator<_Tp*> 10136: rbegin(_Tp (&__arr)[_Nm]) 10136: { return reverse_iterator<_Tp*>(__arr + _Nm); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline reverse_iterator<_Tp*> 10136: rend(_Tp (&__arr)[_Nm]) 10136: { return reverse_iterator<_Tp*>(__arr); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline reverse_iterator 10136: rbegin(initializer_list<_Tp> __il) 10136: { return reverse_iterator(__il.end()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline reverse_iterator 10136: rend(initializer_list<_Tp> __il) 10136: { return reverse_iterator(__il.begin()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont)) 10136: { return std::rbegin(__cont); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline auto 10136: crend(const _Container& __cont) -> decltype(std::rend(__cont)) 10136: { return std::rend(__cont); } 10136: # 323 "/usr/include/c++/8/bits/range_access.h" 3 10136: 10136: } 10136: # 52 "/usr/include/c++/8/string" 2 3 10136: # 1 "/usr/include/c++/8/bits/basic_string.h" 1 3 10136: # 37 "/usr/include/c++/8/bits/basic_string.h" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/basic_string.h" 3 10136: # 52 "/usr/include/c++/8/bits/basic_string.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: namespace __cxx11 { 10136: # 76 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: class basic_string 10136: { 10136: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 10136: rebind<_CharT>::other _Char_alloc_type; 10136: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; 10136: 10136: 10136: public: 10136: typedef _Traits traits_type; 10136: typedef typename _Traits::char_type value_type; 10136: typedef _Char_alloc_type allocator_type; 10136: typedef typename _Alloc_traits::size_type size_type; 10136: typedef typename _Alloc_traits::difference_type difference_type; 10136: typedef typename _Alloc_traits::reference reference; 10136: typedef typename _Alloc_traits::const_reference const_reference; 10136: typedef typename _Alloc_traits::pointer pointer; 10136: typedef typename _Alloc_traits::const_pointer const_pointer; 10136: typedef __gnu_cxx::__normal_iterator iterator; 10136: typedef __gnu_cxx::__normal_iterator 10136: const_iterator; 10136: typedef std::reverse_iterator const_reverse_iterator; 10136: typedef std::reverse_iterator reverse_iterator; 10136: 10136: 10136: static const size_type npos = static_cast(-1); 10136: 10136: private: 10136: 10136: 10136: 10136: 10136: typedef const_iterator __const_iterator; 10136: # 139 "/usr/include/c++/8/bits/basic_string.h" 3 10136: struct _Alloc_hider : allocator_type 10136: { 10136: 10136: 10136: 10136: 10136: _Alloc_hider(pointer __dat, const _Alloc& __a) 10136: : allocator_type(__a), _M_p(__dat) { } 10136: 10136: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) 10136: : allocator_type(std::move(__a)), _M_p(__dat) { } 10136: 10136: 10136: pointer _M_p; 10136: }; 10136: 10136: _Alloc_hider _M_dataplus; 10136: size_type _M_string_length; 10136: 10136: enum { _S_local_capacity = 15 / sizeof(_CharT) }; 10136: 10136: union 10136: { 10136: _CharT _M_local_buf[_S_local_capacity + 1]; 10136: size_type _M_allocated_capacity; 10136: }; 10136: 10136: void 10136: _M_data(pointer __p) 10136: { _M_dataplus._M_p = __p; } 10136: 10136: void 10136: _M_length(size_type __length) 10136: { _M_string_length = __length; } 10136: 10136: pointer 10136: _M_data() const 10136: { return _M_dataplus._M_p; } 10136: 10136: pointer 10136: _M_local_data() 10136: { 10136: 10136: return std::pointer_traits::pointer_to(*_M_local_buf); 10136: 10136: 10136: 10136: } 10136: 10136: const_pointer 10136: _M_local_data() const 10136: { 10136: 10136: return std::pointer_traits::pointer_to(*_M_local_buf); 10136: 10136: 10136: 10136: } 10136: 10136: void 10136: _M_capacity(size_type __capacity) 10136: { _M_allocated_capacity = __capacity; } 10136: 10136: void 10136: _M_set_length(size_type __n) 10136: { 10136: _M_length(__n); 10136: traits_type::assign(_M_data()[__n], _CharT()); 10136: } 10136: 10136: bool 10136: _M_is_local() const 10136: { return _M_data() == _M_local_data(); } 10136: 10136: 10136: pointer 10136: _M_create(size_type&, size_type); 10136: 10136: void 10136: _M_dispose() 10136: { 10136: if (!_M_is_local()) 10136: _M_destroy(_M_allocated_capacity); 10136: } 10136: 10136: void 10136: _M_destroy(size_type __size) throw() 10136: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } 10136: 10136: 10136: 10136: template 10136: void 10136: _M_construct_aux(_InIterator __beg, _InIterator __end, 10136: std::__false_type) 10136: { 10136: typedef typename iterator_traits<_InIterator>::iterator_category _Tag; 10136: _M_construct(__beg, __end, _Tag()); 10136: } 10136: 10136: 10136: 10136: template 10136: void 10136: _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type) 10136: { _M_construct_aux_2(static_cast(__beg), __end); } 10136: 10136: void 10136: _M_construct_aux_2(size_type __req, _CharT __c) 10136: { _M_construct(__req, __c); } 10136: 10136: template 10136: void 10136: _M_construct(_InIterator __beg, _InIterator __end) 10136: { 10136: typedef typename std::__is_integer<_InIterator>::__type _Integral; 10136: _M_construct_aux(__beg, __end, _Integral()); 10136: } 10136: 10136: 10136: template 10136: void 10136: _M_construct(_InIterator __beg, _InIterator __end, 10136: std::input_iterator_tag); 10136: 10136: 10136: 10136: template 10136: void 10136: _M_construct(_FwdIterator __beg, _FwdIterator __end, 10136: std::forward_iterator_tag); 10136: 10136: void 10136: _M_construct(size_type __req, _CharT __c); 10136: 10136: allocator_type& 10136: _M_get_allocator() 10136: { return _M_dataplus; } 10136: 10136: const allocator_type& 10136: _M_get_allocator() const 10136: { return _M_dataplus; } 10136: 10136: private: 10136: # 298 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: _M_check(size_type __pos, const char* __s) const 10136: { 10136: if (__pos > this->size()) 10136: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") 10136: , 10136: __s, __pos, this->size()); 10136: return __pos; 10136: } 10136: 10136: void 10136: _M_check_length(size_type __n1, size_type __n2, const char* __s) const 10136: { 10136: if (this->max_size() - (this->size() - __n1) < __n2) 10136: __throw_length_error((__s)); 10136: } 10136: 10136: 10136: 10136: size_type 10136: _M_limit(size_type __pos, size_type __off) const noexcept 10136: { 10136: const bool __testoff = __off < this->size() - __pos; 10136: return __testoff ? __off : this->size() - __pos; 10136: } 10136: 10136: 10136: bool 10136: _M_disjunct(const _CharT* __s) const noexcept 10136: { 10136: return (less()(__s, _M_data()) 10136: || less()(_M_data() + this->size(), __s)); 10136: } 10136: 10136: 10136: 10136: static void 10136: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) 10136: { 10136: if (__n == 1) 10136: traits_type::assign(*__d, *__s); 10136: else 10136: traits_type::copy(__d, __s, __n); 10136: } 10136: 10136: static void 10136: _S_move(_CharT* __d, const _CharT* __s, size_type __n) 10136: { 10136: if (__n == 1) 10136: traits_type::assign(*__d, *__s); 10136: else 10136: traits_type::move(__d, __s, __n); 10136: } 10136: 10136: static void 10136: _S_assign(_CharT* __d, size_type __n, _CharT __c) 10136: { 10136: if (__n == 1) 10136: traits_type::assign(*__d, __c); 10136: else 10136: traits_type::assign(__d, __n, __c); 10136: } 10136: 10136: 10136: 10136: template 10136: static void 10136: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 10136: { 10136: for (; __k1 != __k2; ++__k1, (void)++__p) 10136: traits_type::assign(*__p, *__k1); 10136: } 10136: 10136: static void 10136: _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept 10136: { _S_copy_chars(__p, __k1.base(), __k2.base()); } 10136: 10136: static void 10136: _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) 10136: noexcept 10136: { _S_copy_chars(__p, __k1.base(), __k2.base()); } 10136: 10136: static void 10136: _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept 10136: { _S_copy(__p, __k1, __k2 - __k1); } 10136: 10136: static void 10136: _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) 10136: noexcept 10136: { _S_copy(__p, __k1, __k2 - __k1); } 10136: 10136: static int 10136: _S_compare(size_type __n1, size_type __n2) noexcept 10136: { 10136: const difference_type __d = difference_type(__n1 - __n2); 10136: 10136: if (__d > __gnu_cxx::__numeric_traits::__max) 10136: return __gnu_cxx::__numeric_traits::__max; 10136: else if (__d < __gnu_cxx::__numeric_traits::__min) 10136: return __gnu_cxx::__numeric_traits::__min; 10136: else 10136: return int(__d); 10136: } 10136: 10136: void 10136: _M_assign(const basic_string&); 10136: 10136: void 10136: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 10136: size_type __len2); 10136: 10136: void 10136: _M_erase(size_type __pos, size_type __n); 10136: 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string() 10136: noexcept(is_nothrow_default_constructible<_Alloc>::value) 10136: : _M_dataplus(_M_local_data()) 10136: { _M_set_length(0); } 10136: 10136: 10136: 10136: 10136: explicit 10136: basic_string(const _Alloc& __a) noexcept 10136: : _M_dataplus(_M_local_data(), __a) 10136: { _M_set_length(0); } 10136: 10136: 10136: 10136: 10136: 10136: basic_string(const basic_string& __str) 10136: : _M_dataplus(_M_local_data(), 10136: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) 10136: { _M_construct(__str._M_data(), __str._M_data() + __str.length()); } 10136: # 450 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string(const basic_string& __str, size_type __pos, 10136: const _Alloc& __a = _Alloc()) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { 10136: const _CharT* __start = __str._M_data() 10136: + __str._M_check(__pos, "basic_string::basic_string"); 10136: _M_construct(__start, __start + __str._M_limit(__pos, npos)); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string(const basic_string& __str, size_type __pos, 10136: size_type __n) 10136: : _M_dataplus(_M_local_data()) 10136: { 10136: const _CharT* __start = __str._M_data() 10136: + __str._M_check(__pos, "basic_string::basic_string"); 10136: _M_construct(__start, __start + __str._M_limit(__pos, __n)); 10136: } 10136: # 481 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string(const basic_string& __str, size_type __pos, 10136: size_type __n, const _Alloc& __a) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { 10136: const _CharT* __start 10136: = __str._M_data() + __str._M_check(__pos, "string::string"); 10136: _M_construct(__start, __start + __str._M_limit(__pos, __n)); 10136: } 10136: # 499 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string(const _CharT* __s, size_type __n, 10136: const _Alloc& __a = _Alloc()) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { _M_construct(__s, __s + __n); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { _M_construct(__n, __c); } 10136: # 531 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string(basic_string&& __str) noexcept 10136: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) 10136: { 10136: if (__str._M_is_local()) 10136: { 10136: traits_type::copy(_M_local_buf, __str._M_local_buf, 10136: _S_local_capacity + 1); 10136: } 10136: else 10136: { 10136: _M_data(__str._M_data()); 10136: _M_capacity(__str._M_allocated_capacity); 10136: } 10136: 10136: 10136: 10136: 10136: _M_length(__str.length()); 10136: __str._M_data(__str._M_local_data()); 10136: __str._M_set_length(0); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { _M_construct(__l.begin(), __l.end()); } 10136: 10136: basic_string(const basic_string& __str, const _Alloc& __a) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { _M_construct(__str.begin(), __str.end()); } 10136: 10136: basic_string(basic_string&& __str, const _Alloc& __a) 10136: noexcept(_Alloc_traits::_S_always_equal()) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { 10136: if (__str._M_is_local()) 10136: { 10136: traits_type::copy(_M_local_buf, __str._M_local_buf, 10136: _S_local_capacity + 1); 10136: _M_length(__str.length()); 10136: __str._M_set_length(0); 10136: } 10136: else if (_Alloc_traits::_S_always_equal() 10136: || __str.get_allocator() == __a) 10136: { 10136: _M_data(__str._M_data()); 10136: _M_length(__str.length()); 10136: _M_capacity(__str._M_allocated_capacity); 10136: __str._M_data(__str._M_local_buf); 10136: __str._M_set_length(0); 10136: } 10136: else 10136: _M_construct(__str.begin(), __str.end()); 10136: } 10136: # 599 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template> 10136: 10136: 10136: 10136: basic_string(_InputIterator __beg, _InputIterator __end, 10136: const _Alloc& __a = _Alloc()) 10136: : _M_dataplus(_M_local_data(), __a) 10136: { _M_construct(__beg, __end); } 10136: # 646 "/usr/include/c++/8/bits/basic_string.h" 3 10136: ~basic_string() 10136: { _M_dispose(); } 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: operator=(const basic_string& __str) 10136: { 10136: 10136: if (_Alloc_traits::_S_propagate_on_copy_assign()) 10136: { 10136: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() 10136: && _M_get_allocator() != __str._M_get_allocator()) 10136: { 10136: 10136: 10136: if (__str.size() <= _S_local_capacity) 10136: { 10136: _M_destroy(_M_allocated_capacity); 10136: _M_data(_M_local_data()); 10136: _M_set_length(0); 10136: } 10136: else 10136: { 10136: const auto __len = __str.size(); 10136: auto __alloc = __str._M_get_allocator(); 10136: 10136: auto __ptr = _Alloc_traits::allocate(__alloc, __len + 1); 10136: _M_destroy(_M_allocated_capacity); 10136: _M_data(__ptr); 10136: _M_capacity(__len); 10136: _M_set_length(__len); 10136: } 10136: } 10136: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); 10136: } 10136: 10136: return this->assign(__str); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: operator=(const _CharT* __s) 10136: { return this->assign(__s); } 10136: # 703 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: operator=(_CharT __c) 10136: { 10136: this->assign(1, __c); 10136: return *this; 10136: } 10136: # 721 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: operator=(basic_string&& __str) 10136: noexcept(_Alloc_traits::_S_nothrow_move()) 10136: { 10136: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() 10136: && !_Alloc_traits::_S_always_equal() 10136: && _M_get_allocator() != __str._M_get_allocator()) 10136: { 10136: 10136: _M_destroy(_M_allocated_capacity); 10136: _M_data(_M_local_data()); 10136: _M_set_length(0); 10136: } 10136: 10136: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); 10136: 10136: if (!__str._M_is_local() 10136: && (_Alloc_traits::_S_propagate_on_move_assign() 10136: || _Alloc_traits::_S_always_equal())) 10136: { 10136: pointer __data = nullptr; 10136: size_type __capacity; 10136: if (!_M_is_local()) 10136: { 10136: if (_Alloc_traits::_S_always_equal()) 10136: { 10136: __data = _M_data(); 10136: __capacity = _M_allocated_capacity; 10136: } 10136: else 10136: _M_destroy(_M_allocated_capacity); 10136: } 10136: 10136: _M_data(__str._M_data()); 10136: _M_length(__str.length()); 10136: _M_capacity(__str._M_allocated_capacity); 10136: if (__data) 10136: { 10136: __str._M_data(__data); 10136: __str._M_capacity(__capacity); 10136: } 10136: else 10136: __str._M_data(__str._M_local_buf); 10136: } 10136: else 10136: assign(__str); 10136: __str.clear(); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: operator=(initializer_list<_CharT> __l) 10136: { 10136: this->assign(__l.begin(), __l.size()); 10136: return *this; 10136: } 10136: # 806 "/usr/include/c++/8/bits/basic_string.h" 3 10136: iterator 10136: begin() noexcept 10136: { return iterator(_M_data()); } 10136: 10136: 10136: 10136: 10136: 10136: const_iterator 10136: begin() const noexcept 10136: { return const_iterator(_M_data()); } 10136: 10136: 10136: 10136: 10136: 10136: iterator 10136: end() noexcept 10136: { return iterator(_M_data() + this->size()); } 10136: 10136: 10136: 10136: 10136: 10136: const_iterator 10136: end() const noexcept 10136: { return const_iterator(_M_data() + this->size()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator 10136: rbegin() noexcept 10136: { return reverse_iterator(this->end()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: const_reverse_iterator 10136: rbegin() const noexcept 10136: { return const_reverse_iterator(this->end()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reverse_iterator 10136: rend() noexcept 10136: { return reverse_iterator(this->begin()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: const_reverse_iterator 10136: rend() const noexcept 10136: { return const_reverse_iterator(this->begin()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: const_iterator 10136: cbegin() const noexcept 10136: { return const_iterator(this->_M_data()); } 10136: 10136: 10136: 10136: 10136: 10136: const_iterator 10136: cend() const noexcept 10136: { return const_iterator(this->_M_data() + this->size()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: const_reverse_iterator 10136: crbegin() const noexcept 10136: { return const_reverse_iterator(this->end()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: const_reverse_iterator 10136: crend() const noexcept 10136: { return const_reverse_iterator(this->begin()); } 10136: 10136: 10136: public: 10136: 10136: 10136: 10136: size_type 10136: size() const noexcept 10136: { return _M_string_length; } 10136: 10136: 10136: 10136: size_type 10136: length() const noexcept 10136: { return _M_string_length; } 10136: 10136: 10136: size_type 10136: max_size() const noexcept 10136: { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; } 10136: # 935 "/usr/include/c++/8/bits/basic_string.h" 3 10136: void 10136: resize(size_type __n, _CharT __c); 10136: # 948 "/usr/include/c++/8/bits/basic_string.h" 3 10136: void 10136: resize(size_type __n) 10136: { this->resize(__n, _CharT()); } 10136: 10136: 10136: 10136: void 10136: shrink_to_fit() noexcept 10136: { 10136: 10136: if (capacity() > size()) 10136: { 10136: try 10136: { reserve(0); } 10136: catch(...) 10136: { } 10136: } 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: size_type 10136: capacity() const noexcept 10136: { 10136: return _M_is_local() ? size_type(_S_local_capacity) 10136: : _M_allocated_capacity; 10136: } 10136: # 997 "/usr/include/c++/8/bits/basic_string.h" 3 10136: void 10136: reserve(size_type __res_arg = 0); 10136: 10136: 10136: 10136: 10136: void 10136: clear() noexcept 10136: { _M_set_length(0); } 10136: 10136: 10136: 10136: 10136: 10136: bool 10136: empty() const noexcept 10136: { return this->size() == 0; } 10136: # 1026 "/usr/include/c++/8/bits/basic_string.h" 3 10136: const_reference 10136: operator[] (size_type __pos) const noexcept 10136: { 10136: ; 10136: return _M_data()[__pos]; 10136: } 10136: # 1043 "/usr/include/c++/8/bits/basic_string.h" 3 10136: reference 10136: operator[](size_type __pos) 10136: { 10136: 10136: 10136: ; 10136: 10136: ; 10136: return _M_data()[__pos]; 10136: } 10136: # 1064 "/usr/include/c++/8/bits/basic_string.h" 3 10136: const_reference 10136: at(size_type __n) const 10136: { 10136: if (__n >= this->size()) 10136: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 10136: 10136: , 10136: __n, this->size()); 10136: return _M_data()[__n]; 10136: } 10136: # 1085 "/usr/include/c++/8/bits/basic_string.h" 3 10136: reference 10136: at(size_type __n) 10136: { 10136: if (__n >= size()) 10136: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 10136: 10136: , 10136: __n, this->size()); 10136: return _M_data()[__n]; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: reference 10136: front() noexcept 10136: { 10136: ; 10136: return operator[](0); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: const_reference 10136: front() const noexcept 10136: { 10136: ; 10136: return operator[](0); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: reference 10136: back() noexcept 10136: { 10136: ; 10136: return operator[](this->size() - 1); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: const_reference 10136: back() const noexcept 10136: { 10136: ; 10136: return operator[](this->size() - 1); 10136: } 10136: # 1148 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: operator+=(const basic_string& __str) 10136: { return this->append(__str); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: operator+=(const _CharT* __s) 10136: { return this->append(__s); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: operator+=(_CharT __c) 10136: { 10136: this->push_back(__c); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: operator+=(initializer_list<_CharT> __l) 10136: { return this->append(__l.begin(), __l.size()); } 10136: # 1201 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: append(const basic_string& __str) 10136: { return _M_append(__str._M_data(), __str.size()); } 10136: # 1218 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: append(const basic_string& __str, size_type __pos, size_type __n) 10136: { return _M_append(__str._M_data() 10136: + __str._M_check(__pos, "basic_string::append"), 10136: __str._M_limit(__pos, __n)); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: append(const _CharT* __s, size_type __n) 10136: { 10136: ; 10136: _M_check_length(size_type(0), __n, "basic_string::append"); 10136: return _M_append(__s, __n); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: append(const _CharT* __s) 10136: { 10136: ; 10136: const size_type __n = traits_type::length(__s); 10136: _M_check_length(size_type(0), __n, "basic_string::append"); 10136: return _M_append(__s, __n); 10136: } 10136: # 1260 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: append(size_type __n, _CharT __c) 10136: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: append(initializer_list<_CharT> __l) 10136: { return this->append(__l.begin(), __l.size()); } 10136: # 1284 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template> 10136: 10136: 10136: 10136: basic_string& 10136: append(_InputIterator __first, _InputIterator __last) 10136: { return this->replace(end(), end(), __first, __last); } 10136: # 1329 "/usr/include/c++/8/bits/basic_string.h" 3 10136: void 10136: push_back(_CharT __c) 10136: { 10136: const size_type __size = this->size(); 10136: if (__size + 1 > this->capacity()) 10136: this->_M_mutate(__size, size_type(0), 0, size_type(1)); 10136: traits_type::assign(this->_M_data()[__size], __c); 10136: this->_M_set_length(__size + 1); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: assign(const basic_string& __str) 10136: { 10136: this->_M_assign(__str); 10136: return *this; 10136: } 10136: # 1360 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: assign(basic_string&& __str) 10136: noexcept(_Alloc_traits::_S_nothrow_move()) 10136: { 10136: 10136: 10136: return *this = std::move(__str); 10136: } 10136: # 1383 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: assign(const basic_string& __str, size_type __pos, size_type __n) 10136: { return _M_replace(size_type(0), this->size(), __str._M_data() 10136: + __str._M_check(__pos, "basic_string::assign"), 10136: __str._M_limit(__pos, __n)); } 10136: # 1399 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: assign(const _CharT* __s, size_type __n) 10136: { 10136: ; 10136: return _M_replace(size_type(0), this->size(), __s, __n); 10136: } 10136: # 1415 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: assign(const _CharT* __s) 10136: { 10136: ; 10136: return _M_replace(size_type(0), this->size(), __s, 10136: traits_type::length(__s)); 10136: } 10136: # 1432 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: assign(size_type __n, _CharT __c) 10136: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } 10136: # 1445 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template> 10136: 10136: 10136: 10136: basic_string& 10136: assign(_InputIterator __first, _InputIterator __last) 10136: { return this->replace(begin(), end(), __first, __last); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_string& 10136: assign(initializer_list<_CharT> __l) 10136: { return this->assign(__l.begin(), __l.size()); } 10136: # 1513 "/usr/include/c++/8/bits/basic_string.h" 3 10136: iterator 10136: insert(const_iterator __p, size_type __n, _CharT __c) 10136: { 10136: ; 10136: const size_type __pos = __p - begin(); 10136: this->replace(__p, __p, __n, __c); 10136: return iterator(this->_M_data() + __pos); 10136: } 10136: # 1555 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template> 10136: iterator 10136: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) 10136: { 10136: ; 10136: const size_type __pos = __p - begin(); 10136: this->replace(__p, __p, __beg, __end); 10136: return iterator(this->_M_data() + __pos); 10136: } 10136: # 1591 "/usr/include/c++/8/bits/basic_string.h" 3 10136: void 10136: insert(iterator __p, initializer_list<_CharT> __l) 10136: { 10136: ; 10136: this->insert(__p - begin(), __l.begin(), __l.size()); 10136: } 10136: # 1611 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: insert(size_type __pos1, const basic_string& __str) 10136: { return this->replace(__pos1, size_type(0), 10136: __str._M_data(), __str.size()); } 10136: # 1634 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: insert(size_type __pos1, const basic_string& __str, 10136: size_type __pos2, size_type __n) 10136: { return this->replace(__pos1, size_type(0), __str._M_data() 10136: + __str._M_check(__pos2, "basic_string::insert"), 10136: __str._M_limit(__pos2, __n)); } 10136: # 1657 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: insert(size_type __pos, const _CharT* __s, size_type __n) 10136: { return this->replace(__pos, size_type(0), __s, __n); } 10136: # 1676 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: insert(size_type __pos, const _CharT* __s) 10136: { 10136: ; 10136: return this->replace(__pos, size_type(0), __s, 10136: traits_type::length(__s)); 10136: } 10136: # 1700 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: insert(size_type __pos, size_type __n, _CharT __c) 10136: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), 10136: size_type(0), __n, __c); } 10136: # 1718 "/usr/include/c++/8/bits/basic_string.h" 3 10136: iterator 10136: insert(__const_iterator __p, _CharT __c) 10136: { 10136: ; 10136: const size_type __pos = __p - begin(); 10136: _M_replace_aux(__pos, size_type(0), size_type(1), __c); 10136: return iterator(_M_data() + __pos); 10136: } 10136: # 1778 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: erase(size_type __pos = 0, size_type __n = npos) 10136: { 10136: _M_check(__pos, "basic_string::erase"); 10136: if (__n == npos) 10136: this->_M_set_length(__pos); 10136: else if (__n != 0) 10136: this->_M_erase(__pos, _M_limit(__pos, __n)); 10136: return *this; 10136: } 10136: # 1797 "/usr/include/c++/8/bits/basic_string.h" 3 10136: iterator 10136: erase(__const_iterator __position) 10136: { 10136: 10136: ; 10136: const size_type __pos = __position - begin(); 10136: this->_M_erase(__pos, size_type(1)); 10136: return iterator(_M_data() + __pos); 10136: } 10136: # 1816 "/usr/include/c++/8/bits/basic_string.h" 3 10136: iterator 10136: erase(__const_iterator __first, __const_iterator __last) 10136: { 10136: 10136: ; 10136: const size_type __pos = __first - begin(); 10136: if (__last == end()) 10136: this->_M_set_length(__pos); 10136: else 10136: this->_M_erase(__pos, __last - __first); 10136: return iterator(this->_M_data() + __pos); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void 10136: pop_back() noexcept 10136: { 10136: ; 10136: _M_erase(size() - 1, 1); 10136: } 10136: # 1860 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(size_type __pos, size_type __n, const basic_string& __str) 10136: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 10136: # 1882 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(size_type __pos1, size_type __n1, const basic_string& __str, 10136: size_type __pos2, size_type __n2) 10136: { return this->replace(__pos1, __n1, __str._M_data() 10136: + __str._M_check(__pos2, "basic_string::replace"), 10136: __str._M_limit(__pos2, __n2)); } 10136: # 1907 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(size_type __pos, size_type __n1, const _CharT* __s, 10136: size_type __n2) 10136: { 10136: ; 10136: return _M_replace(_M_check(__pos, "basic_string::replace"), 10136: _M_limit(__pos, __n1), __s, __n2); 10136: } 10136: # 1932 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(size_type __pos, size_type __n1, const _CharT* __s) 10136: { 10136: ; 10136: return this->replace(__pos, __n1, __s, traits_type::length(__s)); 10136: } 10136: # 1956 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 10136: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), 10136: _M_limit(__pos, __n1), __n2, __c); } 10136: # 1974 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(__const_iterator __i1, __const_iterator __i2, 10136: const basic_string& __str) 10136: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 10136: # 1994 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(__const_iterator __i1, __const_iterator __i2, 10136: const _CharT* __s, size_type __n) 10136: { 10136: 10136: ; 10136: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); 10136: } 10136: # 2016 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) 10136: { 10136: ; 10136: return this->replace(__i1, __i2, __s, traits_type::length(__s)); 10136: } 10136: # 2037 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, 10136: _CharT __c) 10136: { 10136: 10136: ; 10136: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); 10136: } 10136: # 2062 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template> 10136: basic_string& 10136: replace(const_iterator __i1, const_iterator __i2, 10136: _InputIterator __k1, _InputIterator __k2) 10136: { 10136: 10136: ; 10136: ; 10136: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, 10136: std::__false_type()); 10136: } 10136: # 2094 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& 10136: replace(__const_iterator __i1, __const_iterator __i2, 10136: _CharT* __k1, _CharT* __k2) 10136: { 10136: 10136: ; 10136: ; 10136: return this->replace(__i1 - begin(), __i2 - __i1, 10136: __k1, __k2 - __k1); 10136: } 10136: 10136: basic_string& 10136: replace(__const_iterator __i1, __const_iterator __i2, 10136: const _CharT* __k1, const _CharT* __k2) 10136: { 10136: 10136: ; 10136: ; 10136: return this->replace(__i1 - begin(), __i2 - __i1, 10136: __k1, __k2 - __k1); 10136: } 10136: 10136: basic_string& 10136: replace(__const_iterator __i1, __const_iterator __i2, 10136: iterator __k1, iterator __k2) 10136: { 10136: 10136: ; 10136: ; 10136: return this->replace(__i1 - begin(), __i2 - __i1, 10136: __k1.base(), __k2 - __k1); 10136: } 10136: 10136: basic_string& 10136: replace(__const_iterator __i1, __const_iterator __i2, 10136: const_iterator __k1, const_iterator __k2) 10136: { 10136: 10136: ; 10136: ; 10136: return this->replace(__i1 - begin(), __i2 - __i1, 10136: __k1.base(), __k2 - __k1); 10136: } 10136: # 2153 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string& replace(const_iterator __i1, const_iterator __i2, 10136: initializer_list<_CharT> __l) 10136: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } 10136: # 2212 "/usr/include/c++/8/bits/basic_string.h" 3 10136: private: 10136: template 10136: basic_string& 10136: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 10136: _Integer __n, _Integer __val, __true_type) 10136: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } 10136: 10136: template 10136: basic_string& 10136: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 10136: _InputIterator __k1, _InputIterator __k2, 10136: __false_type); 10136: 10136: basic_string& 10136: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 10136: _CharT __c); 10136: 10136: basic_string& 10136: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 10136: const size_type __len2); 10136: 10136: basic_string& 10136: _M_append(const _CharT* __s, size_type __n); 10136: 10136: public: 10136: # 2250 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 10136: # 2260 "/usr/include/c++/8/bits/basic_string.h" 3 10136: void 10136: swap(basic_string& __s) noexcept; 10136: # 2270 "/usr/include/c++/8/bits/basic_string.h" 3 10136: const _CharT* 10136: c_str() const noexcept 10136: { return _M_data(); } 10136: # 2282 "/usr/include/c++/8/bits/basic_string.h" 3 10136: const _CharT* 10136: data() const noexcept 10136: { return _M_data(); } 10136: # 2301 "/usr/include/c++/8/bits/basic_string.h" 3 10136: allocator_type 10136: get_allocator() const noexcept 10136: { return _M_get_allocator(); } 10136: # 2317 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept; 10136: # 2331 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find(const basic_string& __str, size_type __pos = 0) const 10136: noexcept 10136: { return this->find(__str.data(), __pos, __str.size()); } 10136: # 2363 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find(const _CharT* __s, size_type __pos = 0) const noexcept 10136: { 10136: ; 10136: return this->find(__s, __pos, traits_type::length(__s)); 10136: } 10136: # 2380 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find(_CharT __c, size_type __pos = 0) const noexcept; 10136: # 2393 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: rfind(const basic_string& __str, size_type __pos = npos) const 10136: noexcept 10136: { return this->rfind(__str.data(), __pos, __str.size()); } 10136: # 2427 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: rfind(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept; 10136: # 2441 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: rfind(const _CharT* __s, size_type __pos = npos) const 10136: { 10136: ; 10136: return this->rfind(__s, __pos, traits_type::length(__s)); 10136: } 10136: # 2458 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: rfind(_CharT __c, size_type __pos = npos) const noexcept; 10136: # 2472 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_first_of(const basic_string& __str, size_type __pos = 0) const 10136: noexcept 10136: { return this->find_first_of(__str.data(), __pos, __str.size()); } 10136: # 2507 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept; 10136: # 2521 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_first_of(const _CharT* __s, size_type __pos = 0) const 10136: noexcept 10136: { 10136: ; 10136: return this->find_first_of(__s, __pos, traits_type::length(__s)); 10136: } 10136: # 2541 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_first_of(_CharT __c, size_type __pos = 0) const noexcept 10136: { return this->find(__c, __pos); } 10136: # 2556 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_last_of(const basic_string& __str, size_type __pos = npos) const 10136: noexcept 10136: { return this->find_last_of(__str.data(), __pos, __str.size()); } 10136: # 2591 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept; 10136: # 2605 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_last_of(const _CharT* __s, size_type __pos = npos) const 10136: noexcept 10136: { 10136: ; 10136: return this->find_last_of(__s, __pos, traits_type::length(__s)); 10136: } 10136: # 2625 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_last_of(_CharT __c, size_type __pos = npos) const noexcept 10136: { return this->rfind(__c, __pos); } 10136: # 2639 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_first_not_of(const basic_string& __str, size_type __pos = 0) const 10136: noexcept 10136: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 10136: # 2674 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_first_not_of(const _CharT* __s, size_type __pos, 10136: size_type __n) const noexcept; 10136: # 2688 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_first_not_of(const _CharT* __s, size_type __pos = 0) const 10136: noexcept 10136: { 10136: ; 10136: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); 10136: } 10136: # 2706 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_first_not_of(_CharT __c, size_type __pos = 0) const 10136: noexcept; 10136: # 2721 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_last_not_of(const basic_string& __str, size_type __pos = npos) const 10136: noexcept 10136: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 10136: # 2756 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_last_not_of(const _CharT* __s, size_type __pos, 10136: size_type __n) const noexcept; 10136: # 2770 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_last_not_of(const _CharT* __s, size_type __pos = npos) const 10136: noexcept 10136: { 10136: ; 10136: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); 10136: } 10136: # 2788 "/usr/include/c++/8/bits/basic_string.h" 3 10136: size_type 10136: find_last_not_of(_CharT __c, size_type __pos = npos) const 10136: noexcept; 10136: # 2804 "/usr/include/c++/8/bits/basic_string.h" 3 10136: basic_string 10136: substr(size_type __pos = 0, size_type __n = npos) const 10136: { return basic_string(*this, 10136: _M_check(__pos, "basic_string::substr"), __n); } 10136: # 2823 "/usr/include/c++/8/bits/basic_string.h" 3 10136: int 10136: compare(const basic_string& __str) const 10136: { 10136: const size_type __size = this->size(); 10136: const size_type __osize = __str.size(); 10136: const size_type __len = std::min(__size, __osize); 10136: 10136: int __r = traits_type::compare(_M_data(), __str.data(), __len); 10136: if (!__r) 10136: __r = _S_compare(__size, __osize); 10136: return __r; 10136: } 10136: # 2916 "/usr/include/c++/8/bits/basic_string.h" 3 10136: int 10136: compare(size_type __pos, size_type __n, const basic_string& __str) const; 10136: # 2942 "/usr/include/c++/8/bits/basic_string.h" 3 10136: int 10136: compare(size_type __pos1, size_type __n1, const basic_string& __str, 10136: size_type __pos2, size_type __n2) const; 10136: # 2960 "/usr/include/c++/8/bits/basic_string.h" 3 10136: int 10136: compare(const _CharT* __s) const noexcept; 10136: # 2984 "/usr/include/c++/8/bits/basic_string.h" 3 10136: int 10136: compare(size_type __pos, size_type __n1, const _CharT* __s) const; 10136: # 3011 "/usr/include/c++/8/bits/basic_string.h" 3 10136: int 10136: compare(size_type __pos, size_type __n1, const _CharT* __s, 10136: size_type __n2) const; 10136: 10136: 10136: template friend class basic_stringbuf; 10136: }; 10136: } 10136: # 5886 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: basic_string<_CharT, _Traits, _Alloc> 10136: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { 10136: basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 10136: __str.append(__rhs); 10136: return __str; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: basic_string<_CharT,_Traits,_Alloc> 10136: operator+(const _CharT* __lhs, 10136: const basic_string<_CharT,_Traits,_Alloc>& __rhs); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: basic_string<_CharT,_Traits,_Alloc> 10136: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const _CharT* __rhs) 10136: { 10136: basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 10136: __str.append(__rhs); 10136: return __str; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) 10136: { 10136: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 10136: typedef typename __string_type::size_type __size_type; 10136: __string_type __str(__lhs); 10136: __str.append(__size_type(1), __rhs); 10136: return __str; 10136: } 10136: 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { return std::move(__lhs.append(__rhs)); } 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 10136: { return std::move(__rhs.insert(0, __lhs)); } 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 10136: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 10136: { 10136: const auto __size = __lhs.size() + __rhs.size(); 10136: const bool __cond = (__size > __lhs.capacity() 10136: && __size <= __rhs.capacity()); 10136: return __cond ? std::move(__rhs.insert(0, __lhs)) 10136: : std::move(__lhs.append(__rhs)); 10136: } 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(const _CharT* __lhs, 10136: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 10136: { return std::move(__rhs.insert(0, __lhs)); } 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(_CharT __lhs, 10136: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 10136: { return std::move(__rhs.insert(0, 1, __lhs)); } 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 10136: const _CharT* __rhs) 10136: { return std::move(__lhs.append(__rhs)); } 10136: 10136: template 10136: inline basic_string<_CharT, _Traits, _Alloc> 10136: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 10136: _CharT __rhs) 10136: { return std::move(__lhs.append(1, __rhs)); } 10136: # 6007 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline bool 10136: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: noexcept 10136: { return __lhs.compare(__rhs) == 0; } 10136: 10136: template 10136: inline 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type 10136: operator==(const basic_string<_CharT>& __lhs, 10136: const basic_string<_CharT>& __rhs) noexcept 10136: { return (__lhs.size() == __rhs.size() 10136: && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(), 10136: __lhs.size())); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator==(const _CharT* __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { return __rhs.compare(__lhs) == 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const _CharT* __rhs) 10136: { return __lhs.compare(__rhs) == 0; } 10136: # 6054 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline bool 10136: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: noexcept 10136: { return !(__lhs == __rhs); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator!=(const _CharT* __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { return !(__lhs == __rhs); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const _CharT* __rhs) 10136: { return !(__lhs == __rhs); } 10136: # 6092 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline bool 10136: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: noexcept 10136: { return __lhs.compare(__rhs) < 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const _CharT* __rhs) 10136: { return __lhs.compare(__rhs) < 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator<(const _CharT* __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { return __rhs.compare(__lhs) > 0; } 10136: # 6130 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline bool 10136: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: noexcept 10136: { return __lhs.compare(__rhs) > 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const _CharT* __rhs) 10136: { return __lhs.compare(__rhs) > 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator>(const _CharT* __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { return __rhs.compare(__lhs) < 0; } 10136: # 6168 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline bool 10136: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: noexcept 10136: { return __lhs.compare(__rhs) <= 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const _CharT* __rhs) 10136: { return __lhs.compare(__rhs) <= 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator<=(const _CharT* __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { return __rhs.compare(__lhs) >= 0; } 10136: # 6206 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline bool 10136: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: noexcept 10136: { return __lhs.compare(__rhs) >= 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: const _CharT* __rhs) 10136: { return __lhs.compare(__rhs) >= 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator>=(const _CharT* __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { return __rhs.compare(__lhs) <= 0; } 10136: # 6244 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline void 10136: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, 10136: basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: noexcept(noexcept(__lhs.swap(__rhs))) 10136: { __lhs.swap(__rhs); } 10136: # 6264 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: operator>>(basic_istream<_CharT, _Traits>& __is, 10136: basic_string<_CharT, _Traits, _Alloc>& __str); 10136: 10136: template<> 10136: basic_istream& 10136: operator>>(basic_istream& __is, basic_string& __str); 10136: # 6282 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline basic_ostream<_CharT, _Traits>& 10136: operator<<(basic_ostream<_CharT, _Traits>& __os, 10136: const basic_string<_CharT, _Traits, _Alloc>& __str) 10136: { 10136: 10136: 10136: return __ostream_insert(__os, __str.data(), __str.size()); 10136: } 10136: # 6305 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: getline(basic_istream<_CharT, _Traits>& __is, 10136: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); 10136: # 6322 "/usr/include/c++/8/bits/basic_string.h" 3 10136: template 10136: inline basic_istream<_CharT, _Traits>& 10136: getline(basic_istream<_CharT, _Traits>& __is, 10136: basic_string<_CharT, _Traits, _Alloc>& __str) 10136: { return std::getline(__is, __str, __is.widen('\n')); } 10136: 10136: 10136: 10136: template 10136: inline basic_istream<_CharT, _Traits>& 10136: getline(basic_istream<_CharT, _Traits>&& __is, 10136: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 10136: { return std::getline(__is, __str, __delim); } 10136: 10136: 10136: template 10136: inline basic_istream<_CharT, _Traits>& 10136: getline(basic_istream<_CharT, _Traits>&& __is, 10136: basic_string<_CharT, _Traits, _Alloc>& __str) 10136: { return std::getline(__is, __str); } 10136: 10136: 10136: template<> 10136: basic_istream& 10136: getline(basic_istream& __in, basic_string& __str, 10136: char __delim); 10136: 10136: 10136: template<> 10136: basic_istream& 10136: getline(basic_istream& __in, basic_string& __str, 10136: wchar_t __delim); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/ext/string_conversions.h" 1 3 10136: # 32 "/usr/include/c++/8/ext/string_conversions.h" 3 10136: 10136: # 33 "/usr/include/c++/8/ext/string_conversions.h" 3 10136: # 41 "/usr/include/c++/8/ext/string_conversions.h" 3 10136: # 1 "/usr/include/c++/8/cstdlib" 1 3 10136: # 39 "/usr/include/c++/8/cstdlib" 3 10136: 10136: # 40 "/usr/include/c++/8/cstdlib" 3 10136: # 42 "/usr/include/c++/8/ext/string_conversions.h" 2 3 10136: # 1 "/usr/include/c++/8/cwchar" 1 3 10136: # 39 "/usr/include/c++/8/cwchar" 3 10136: 10136: # 40 "/usr/include/c++/8/cwchar" 3 10136: # 43 "/usr/include/c++/8/ext/string_conversions.h" 2 3 10136: # 1 "/usr/include/c++/8/cstdio" 1 3 10136: # 39 "/usr/include/c++/8/cstdio" 3 10136: 10136: # 40 "/usr/include/c++/8/cstdio" 3 10136: # 44 "/usr/include/c++/8/ext/string_conversions.h" 2 3 10136: # 1 "/usr/include/c++/8/cerrno" 1 3 10136: # 39 "/usr/include/c++/8/cerrno" 3 10136: 10136: # 40 "/usr/include/c++/8/cerrno" 3 10136: # 45 "/usr/include/c++/8/ext/string_conversions.h" 2 3 10136: 10136: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: template 10136: _Ret 10136: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), 10136: const char* __name, const _CharT* __str, std::size_t* __idx, 10136: _Base... __base) 10136: { 10136: _Ret __ret; 10136: 10136: _CharT* __endptr; 10136: 10136: struct _Save_errno { 10136: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } 10136: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } 10136: int _M_errno; 10136: } const __save_errno; 10136: 10136: struct _Range_chk { 10136: static bool 10136: _S_chk(_TRet, std::false_type) { return false; } 10136: 10136: static bool 10136: _S_chk(_TRet __val, std::true_type) 10136: { 10136: return __val < _TRet(__numeric_traits::__min) 10136: || __val > _TRet(__numeric_traits::__max); 10136: } 10136: }; 10136: 10136: const _TRet __tmp = __convf(__str, &__endptr, __base...); 10136: 10136: if (__endptr == __str) 10136: std::__throw_invalid_argument(__name); 10136: else if ((*__errno_location ()) == 34 10136: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) 10136: std::__throw_out_of_range(__name); 10136: else 10136: __ret = __tmp; 10136: 10136: if (__idx) 10136: *__idx = __endptr - __str; 10136: 10136: return __ret; 10136: } 10136: 10136: 10136: template 10136: _String 10136: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, 10136: __builtin_va_list), std::size_t __n, 10136: const _CharT* __fmt, ...) 10136: { 10136: 10136: 10136: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 10136: * __n)); 10136: 10136: __builtin_va_list __args; 10136: __builtin_va_start(__args, __fmt); 10136: 10136: const int __len = __convf(__s, __n, __fmt, __args); 10136: 10136: __builtin_va_end(__args); 10136: 10136: return _String(__s, __s + __len); 10136: } 10136: 10136: 10136: } 10136: # 6362 "/usr/include/c++/8/bits/basic_string.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: namespace __cxx11 { 10136: 10136: 10136: 10136: inline int 10136: stoi(const string& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), 10136: __idx, __base); } 10136: 10136: inline long 10136: stol(const string& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), 10136: __idx, __base); } 10136: 10136: inline unsigned long 10136: stoul(const string& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), 10136: __idx, __base); } 10136: 10136: inline long long 10136: stoll(const string& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), 10136: __idx, __base); } 10136: 10136: inline unsigned long long 10136: stoull(const string& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), 10136: __idx, __base); } 10136: 10136: 10136: inline float 10136: stof(const string& __str, size_t* __idx = 0) 10136: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } 10136: 10136: inline double 10136: stod(const string& __str, size_t* __idx = 0) 10136: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } 10136: 10136: inline long double 10136: stold(const string& __str, size_t* __idx = 0) 10136: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: inline string 10136: to_string(int __val) 10136: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(int), 10136: "%d", __val); } 10136: 10136: inline string 10136: to_string(unsigned __val) 10136: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 10136: 4 * sizeof(unsigned), 10136: "%u", __val); } 10136: 10136: inline string 10136: to_string(long __val) 10136: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(long), 10136: "%ld", __val); } 10136: 10136: inline string 10136: to_string(unsigned long __val) 10136: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 10136: 4 * sizeof(unsigned long), 10136: "%lu", __val); } 10136: 10136: inline string 10136: to_string(long long __val) 10136: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 10136: 4 * sizeof(long long), 10136: "%lld", __val); } 10136: 10136: inline string 10136: to_string(unsigned long long __val) 10136: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 10136: 4 * sizeof(unsigned long long), 10136: "%llu", __val); } 10136: 10136: inline string 10136: to_string(float __val) 10136: { 10136: const int __n = 10136: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 10136: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 10136: "%f", __val); 10136: } 10136: 10136: inline string 10136: to_string(double __val) 10136: { 10136: const int __n = 10136: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 10136: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 10136: "%f", __val); 10136: } 10136: 10136: inline string 10136: to_string(long double __val) 10136: { 10136: const int __n = 10136: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 10136: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 10136: "%Lf", __val); 10136: } 10136: 10136: 10136: 10136: inline int 10136: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), 10136: __idx, __base); } 10136: 10136: inline long 10136: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), 10136: __idx, __base); } 10136: 10136: inline unsigned long 10136: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), 10136: __idx, __base); } 10136: 10136: inline long long 10136: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), 10136: __idx, __base); } 10136: 10136: inline unsigned long long 10136: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) 10136: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), 10136: __idx, __base); } 10136: 10136: 10136: inline float 10136: stof(const wstring& __str, size_t* __idx = 0) 10136: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } 10136: 10136: inline double 10136: stod(const wstring& __str, size_t* __idx = 0) 10136: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } 10136: 10136: inline long double 10136: stold(const wstring& __str, size_t* __idx = 0) 10136: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } 10136: 10136: 10136: 10136: inline wstring 10136: to_wstring(int __val) 10136: { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(int), 10136: L"%d", __val); } 10136: 10136: inline wstring 10136: to_wstring(unsigned __val) 10136: { return __gnu_cxx::__to_xstring(&std::vswprintf, 10136: 4 * sizeof(unsigned), 10136: L"%u", __val); } 10136: 10136: inline wstring 10136: to_wstring(long __val) 10136: { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(long), 10136: L"%ld", __val); } 10136: 10136: inline wstring 10136: to_wstring(unsigned long __val) 10136: { return __gnu_cxx::__to_xstring(&std::vswprintf, 10136: 4 * sizeof(unsigned long), 10136: L"%lu", __val); } 10136: 10136: inline wstring 10136: to_wstring(long long __val) 10136: { return __gnu_cxx::__to_xstring(&std::vswprintf, 10136: 4 * sizeof(long long), 10136: L"%lld", __val); } 10136: 10136: inline wstring 10136: to_wstring(unsigned long long __val) 10136: { return __gnu_cxx::__to_xstring(&std::vswprintf, 10136: 4 * sizeof(unsigned long long), 10136: L"%llu", __val); } 10136: 10136: inline wstring 10136: to_wstring(float __val) 10136: { 10136: const int __n = 10136: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 10136: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 10136: L"%f", __val); 10136: } 10136: 10136: inline wstring 10136: to_wstring(double __val) 10136: { 10136: const int __n = 10136: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 10136: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 10136: L"%f", __val); 10136: } 10136: 10136: inline wstring 10136: to_wstring(long double __val) 10136: { 10136: const int __n = 10136: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 10136: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 10136: L"%Lf", __val); 10136: } 10136: 10136: 10136: 10136: } 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/functional_hash.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/functional_hash.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/functional_hash.h" 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 49 "/usr/include/c++/8/bits/functional_hash.h" 3 10136: template 10136: struct __hash_base 10136: { 10136: typedef _Result result_type ; 10136: typedef _Arg argument_type ; 10136: }; 10136: 10136: 10136: template 10136: struct hash; 10136: 10136: template 10136: struct __poison_hash 10136: { 10136: static constexpr bool __enable_hash_call = false; 10136: private: 10136: 10136: __poison_hash(__poison_hash&&); 10136: ~__poison_hash(); 10136: }; 10136: 10136: template 10136: struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> 10136: { 10136: static constexpr bool __enable_hash_call = true; 10136: }; 10136: 10136: 10136: template::value> 10136: struct __hash_enum 10136: { 10136: private: 10136: 10136: __hash_enum(__hash_enum&&); 10136: ~__hash_enum(); 10136: }; 10136: 10136: 10136: template 10136: struct __hash_enum<_Tp, true> : public __hash_base 10136: { 10136: size_t 10136: operator()(_Tp __val) const noexcept 10136: { 10136: using __type = typename underlying_type<_Tp>::type; 10136: return hash<__type>{}(static_cast<__type>(__val)); 10136: } 10136: }; 10136: 10136: 10136: 10136: template 10136: struct hash : __hash_enum<_Tp> 10136: { }; 10136: 10136: 10136: template 10136: struct hash<_Tp*> : public __hash_base 10136: { 10136: size_t 10136: operator()(_Tp* __p) const noexcept 10136: { return reinterpret_cast(__p); } 10136: }; 10136: # 124 "/usr/include/c++/8/bits/functional_hash.h" 3 10136: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; 10136: 10136: 10136: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; 10136: # 187 "/usr/include/c++/8/bits/functional_hash.h" 3 10136: struct _Hash_impl 10136: { 10136: static size_t 10136: hash(const void* __ptr, size_t __clength, 10136: size_t __seed = static_cast(0xc70f6907UL)) 10136: { return _Hash_bytes(__ptr, __clength, __seed); } 10136: 10136: template 10136: static size_t 10136: hash(const _Tp& __val) 10136: { return hash(&__val, sizeof(__val)); } 10136: 10136: template 10136: static size_t 10136: __hash_combine(const _Tp& __val, size_t __hash) 10136: { return hash(&__val, sizeof(__val), __hash); } 10136: }; 10136: 10136: 10136: struct _Fnv_hash_impl 10136: { 10136: static size_t 10136: hash(const void* __ptr, size_t __clength, 10136: size_t __seed = static_cast(2166136261UL)) 10136: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } 10136: 10136: template 10136: static size_t 10136: hash(const _Tp& __val) 10136: { return hash(&__val, sizeof(__val)); } 10136: 10136: template 10136: static size_t 10136: __hash_combine(const _Tp& __val, size_t __hash) 10136: { return hash(&__val, sizeof(__val), __hash); } 10136: }; 10136: 10136: 10136: template<> 10136: struct hash : public __hash_base 10136: { 10136: size_t 10136: operator()(float __val) const noexcept 10136: { 10136: 10136: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; 10136: } 10136: }; 10136: 10136: 10136: template<> 10136: struct hash : public __hash_base 10136: { 10136: size_t 10136: operator()(double __val) const noexcept 10136: { 10136: 10136: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; 10136: } 10136: }; 10136: 10136: 10136: template<> 10136: struct hash 10136: : public __hash_base 10136: { 10136: __attribute__ ((__pure__)) size_t 10136: operator()(long double __val) const noexcept; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_fast_hash : public std::true_type 10136: { }; 10136: 10136: template<> 10136: struct __is_fast_hash> : public std::false_type 10136: { }; 10136: 10136: 10136: } 10136: # 6588 "/usr/include/c++/8/bits/basic_string.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: struct hash 10136: : public __hash_base 10136: { 10136: size_t 10136: operator()(const string& __s) const noexcept 10136: { return std::_Hash_impl::hash(__s.data(), __s.length()); } 10136: }; 10136: 10136: template<> 10136: struct __is_fast_hash> : std::false_type 10136: { }; 10136: 10136: 10136: 10136: template<> 10136: struct hash 10136: : public __hash_base 10136: { 10136: size_t 10136: operator()(const wstring& __s) const noexcept 10136: { return std::_Hash_impl::hash(__s.data(), 10136: __s.length() * sizeof(wchar_t)); } 10136: }; 10136: 10136: template<> 10136: struct __is_fast_hash> : std::false_type 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: struct hash 10136: : public __hash_base 10136: { 10136: size_t 10136: operator()(const u16string& __s) const noexcept 10136: { return std::_Hash_impl::hash(__s.data(), 10136: __s.length() * sizeof(char16_t)); } 10136: }; 10136: 10136: template<> 10136: struct __is_fast_hash> : std::false_type 10136: { }; 10136: 10136: 10136: template<> 10136: struct hash 10136: : public __hash_base 10136: { 10136: size_t 10136: operator()(const u32string& __s) const noexcept 10136: { return std::_Hash_impl::hash(__s.data(), 10136: __s.length() * sizeof(char32_t)); } 10136: }; 10136: 10136: template<> 10136: struct __is_fast_hash> : std::false_type 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: inline namespace literals 10136: { 10136: inline namespace string_literals 10136: { 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wliteral-suffix" 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: inline basic_string 10136: operator""s(const char* __str, size_t __len) 10136: { return basic_string{__str, __len}; } 10136: 10136: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: inline basic_string 10136: operator""s(const wchar_t* __str, size_t __len) 10136: { return basic_string{__str, __len}; } 10136: 10136: 10136: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: inline basic_string 10136: operator""s(const char16_t* __str, size_t __len) 10136: { return basic_string{__str, __len}; } 10136: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: inline basic_string 10136: operator""s(const char32_t* __str, size_t __len) 10136: { return basic_string{__str, __len}; } 10136: 10136: 10136: #pragma GCC diagnostic pop 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: } 10136: # 53 "/usr/include/c++/8/string" 2 3 10136: # 1 "/usr/include/c++/8/bits/basic_string.tcc" 1 3 10136: # 42 "/usr/include/c++/8/bits/basic_string.tcc" 3 10136: 10136: # 43 "/usr/include/c++/8/bits/basic_string.tcc" 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: template 10136: const typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>::npos; 10136: 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: swap(basic_string& __s) noexcept 10136: { 10136: if (this == &__s) 10136: return; 10136: 10136: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); 10136: 10136: if (_M_is_local()) 10136: if (__s._M_is_local()) 10136: { 10136: if (length() && __s.length()) 10136: { 10136: _CharT __tmp_data[_S_local_capacity + 1]; 10136: traits_type::copy(__tmp_data, __s._M_local_buf, 10136: _S_local_capacity + 1); 10136: traits_type::copy(__s._M_local_buf, _M_local_buf, 10136: _S_local_capacity + 1); 10136: traits_type::copy(_M_local_buf, __tmp_data, 10136: _S_local_capacity + 1); 10136: } 10136: else if (__s.length()) 10136: { 10136: traits_type::copy(_M_local_buf, __s._M_local_buf, 10136: _S_local_capacity + 1); 10136: _M_length(__s.length()); 10136: __s._M_set_length(0); 10136: return; 10136: } 10136: else if (length()) 10136: { 10136: traits_type::copy(__s._M_local_buf, _M_local_buf, 10136: _S_local_capacity + 1); 10136: __s._M_length(length()); 10136: _M_set_length(0); 10136: return; 10136: } 10136: } 10136: else 10136: { 10136: const size_type __tmp_capacity = __s._M_allocated_capacity; 10136: traits_type::copy(__s._M_local_buf, _M_local_buf, 10136: _S_local_capacity + 1); 10136: _M_data(__s._M_data()); 10136: __s._M_data(__s._M_local_buf); 10136: _M_capacity(__tmp_capacity); 10136: } 10136: else 10136: { 10136: const size_type __tmp_capacity = _M_allocated_capacity; 10136: if (__s._M_is_local()) 10136: { 10136: traits_type::copy(_M_local_buf, __s._M_local_buf, 10136: _S_local_capacity + 1); 10136: __s._M_data(_M_data()); 10136: _M_data(_M_local_buf); 10136: } 10136: else 10136: { 10136: pointer __tmp_ptr = _M_data(); 10136: _M_data(__s._M_data()); 10136: __s._M_data(__tmp_ptr); 10136: _M_capacity(__s._M_allocated_capacity); 10136: } 10136: __s._M_capacity(__tmp_capacity); 10136: } 10136: 10136: const size_type __tmp_length = length(); 10136: _M_length(__s.length()); 10136: __s._M_length(__tmp_length); 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::pointer 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_create(size_type& __capacity, size_type __old_capacity) 10136: { 10136: 10136: 10136: if (__capacity > max_size()) 10136: std::__throw_length_error(("basic_string::_M_create")); 10136: 10136: 10136: 10136: 10136: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) 10136: { 10136: __capacity = 2 * __old_capacity; 10136: 10136: if (__capacity > max_size()) 10136: __capacity = max_size(); 10136: } 10136: 10136: 10136: 10136: return _Alloc_traits::allocate(_M_get_allocator(), __capacity + 1); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_construct(_InIterator __beg, _InIterator __end, 10136: std::input_iterator_tag) 10136: { 10136: size_type __len = 0; 10136: size_type __capacity = size_type(_S_local_capacity); 10136: 10136: while (__beg != __end && __len < __capacity) 10136: { 10136: _M_data()[__len++] = *__beg; 10136: ++__beg; 10136: } 10136: 10136: try 10136: { 10136: while (__beg != __end) 10136: { 10136: if (__len == __capacity) 10136: { 10136: 10136: __capacity = __len + 1; 10136: pointer __another = _M_create(__capacity, __len); 10136: this->_S_copy(__another, _M_data(), __len); 10136: _M_dispose(); 10136: _M_data(__another); 10136: _M_capacity(__capacity); 10136: } 10136: _M_data()[__len++] = *__beg; 10136: ++__beg; 10136: } 10136: } 10136: catch(...) 10136: { 10136: _M_dispose(); 10136: throw; 10136: } 10136: 10136: _M_set_length(__len); 10136: } 10136: 10136: template 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_construct(_InIterator __beg, _InIterator __end, 10136: std::forward_iterator_tag) 10136: { 10136: 10136: if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) 10136: std::__throw_logic_error(("basic_string::" "_M_construct null not valid") 10136: ); 10136: 10136: size_type __dnew = static_cast(std::distance(__beg, __end)); 10136: 10136: if (__dnew > size_type(_S_local_capacity)) 10136: { 10136: _M_data(_M_create(__dnew, size_type(0))); 10136: _M_capacity(__dnew); 10136: } 10136: 10136: 10136: try 10136: { this->_S_copy_chars(_M_data(), __beg, __end); } 10136: catch(...) 10136: { 10136: _M_dispose(); 10136: throw; 10136: } 10136: 10136: _M_set_length(__dnew); 10136: } 10136: 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_construct(size_type __n, _CharT __c) 10136: { 10136: if (__n > size_type(_S_local_capacity)) 10136: { 10136: _M_data(_M_create(__n, size_type(0))); 10136: _M_capacity(__n); 10136: } 10136: 10136: if (__n) 10136: this->_S_assign(_M_data(), __n, __c); 10136: 10136: _M_set_length(__n); 10136: } 10136: 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_assign(const basic_string& __str) 10136: { 10136: if (this != &__str) 10136: { 10136: const size_type __rsize = __str.length(); 10136: const size_type __capacity = capacity(); 10136: 10136: if (__rsize > __capacity) 10136: { 10136: size_type __new_capacity = __rsize; 10136: pointer __tmp = _M_create(__new_capacity, __capacity); 10136: _M_dispose(); 10136: _M_data(__tmp); 10136: _M_capacity(__new_capacity); 10136: } 10136: 10136: if (__rsize) 10136: this->_S_copy(_M_data(), __str._M_data(), __rsize); 10136: 10136: _M_set_length(__rsize); 10136: } 10136: } 10136: 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: reserve(size_type __res) 10136: { 10136: 10136: if (__res < length()) 10136: __res = length(); 10136: 10136: const size_type __capacity = capacity(); 10136: if (__res != __capacity) 10136: { 10136: if (__res > __capacity 10136: || __res > size_type(_S_local_capacity)) 10136: { 10136: pointer __tmp = _M_create(__res, __capacity); 10136: this->_S_copy(__tmp, _M_data(), length() + 1); 10136: _M_dispose(); 10136: _M_data(__tmp); 10136: _M_capacity(__res); 10136: } 10136: else if (!_M_is_local()) 10136: { 10136: this->_S_copy(_M_local_data(), _M_data(), length() + 1); 10136: _M_destroy(__capacity); 10136: _M_data(_M_local_data()); 10136: } 10136: } 10136: } 10136: 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 10136: size_type __len2) 10136: { 10136: const size_type __how_much = length() - __pos - __len1; 10136: 10136: size_type __new_capacity = length() + __len2 - __len1; 10136: pointer __r = _M_create(__new_capacity, capacity()); 10136: 10136: if (__pos) 10136: this->_S_copy(__r, _M_data(), __pos); 10136: if (__s && __len2) 10136: this->_S_copy(__r + __pos, __s, __len2); 10136: if (__how_much) 10136: this->_S_copy(__r + __pos + __len2, 10136: _M_data() + __pos + __len1, __how_much); 10136: 10136: _M_dispose(); 10136: _M_data(__r); 10136: _M_capacity(__new_capacity); 10136: } 10136: 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_erase(size_type __pos, size_type __n) 10136: { 10136: const size_type __how_much = length() - __pos - __n; 10136: 10136: if (__how_much && __n) 10136: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); 10136: 10136: _M_set_length(length() - __n); 10136: } 10136: 10136: template 10136: void 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: resize(size_type __n, _CharT __c) 10136: { 10136: const size_type __size = this->size(); 10136: if (__size < __n) 10136: this->append(__n - __size, __c); 10136: else if (__n < __size) 10136: this->_M_set_length(__n); 10136: } 10136: 10136: template 10136: basic_string<_CharT, _Traits, _Alloc>& 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_append(const _CharT* __s, size_type __n) 10136: { 10136: const size_type __len = __n + this->size(); 10136: 10136: if (__len <= this->capacity()) 10136: { 10136: if (__n) 10136: this->_S_copy(this->_M_data() + this->size(), __s, __n); 10136: } 10136: else 10136: this->_M_mutate(this->size(), size_type(0), __s, __n); 10136: 10136: this->_M_set_length(__len); 10136: return *this; 10136: } 10136: 10136: template 10136: template 10136: basic_string<_CharT, _Traits, _Alloc>& 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 10136: _InputIterator __k1, _InputIterator __k2, 10136: std::__false_type) 10136: { 10136: const basic_string __s(__k1, __k2); 10136: const size_type __n1 = __i2 - __i1; 10136: return _M_replace(__i1 - begin(), __n1, __s._M_data(), 10136: __s.size()); 10136: } 10136: 10136: template 10136: basic_string<_CharT, _Traits, _Alloc>& 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 10136: _CharT __c) 10136: { 10136: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); 10136: 10136: const size_type __old_size = this->size(); 10136: const size_type __new_size = __old_size + __n2 - __n1; 10136: 10136: if (__new_size <= this->capacity()) 10136: { 10136: pointer __p = this->_M_data() + __pos1; 10136: 10136: const size_type __how_much = __old_size - __pos1 - __n1; 10136: if (__how_much && __n1 != __n2) 10136: this->_S_move(__p + __n2, __p + __n1, __how_much); 10136: } 10136: else 10136: this->_M_mutate(__pos1, __n1, 0, __n2); 10136: 10136: if (__n2) 10136: this->_S_assign(this->_M_data() + __pos1, __n2, __c); 10136: 10136: this->_M_set_length(__new_size); 10136: return *this; 10136: } 10136: 10136: template 10136: basic_string<_CharT, _Traits, _Alloc>& 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 10136: const size_type __len2) 10136: { 10136: _M_check_length(__len1, __len2, "basic_string::_M_replace"); 10136: 10136: const size_type __old_size = this->size(); 10136: const size_type __new_size = __old_size + __len2 - __len1; 10136: 10136: if (__new_size <= this->capacity()) 10136: { 10136: pointer __p = this->_M_data() + __pos; 10136: 10136: const size_type __how_much = __old_size - __pos - __len1; 10136: if (_M_disjunct(__s)) 10136: { 10136: if (__how_much && __len1 != __len2) 10136: this->_S_move(__p + __len2, __p + __len1, __how_much); 10136: if (__len2) 10136: this->_S_copy(__p, __s, __len2); 10136: } 10136: else 10136: { 10136: 10136: if (__len2 && __len2 <= __len1) 10136: this->_S_move(__p, __s, __len2); 10136: if (__how_much && __len1 != __len2) 10136: this->_S_move(__p + __len2, __p + __len1, __how_much); 10136: if (__len2 > __len1) 10136: { 10136: if (__s + __len2 <= __p + __len1) 10136: this->_S_move(__p, __s, __len2); 10136: else if (__s >= __p + __len1) 10136: this->_S_copy(__p, __s + __len2 - __len1, __len2); 10136: else 10136: { 10136: const size_type __nleft = (__p + __len1) - __s; 10136: this->_S_move(__p, __s, __nleft); 10136: this->_S_copy(__p + __nleft, __p + __len2, 10136: __len2 - __nleft); 10136: } 10136: } 10136: } 10136: } 10136: else 10136: this->_M_mutate(__pos, __len1, __s, __len2); 10136: 10136: this->_M_set_length(__new_size); 10136: return *this; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: copy(_CharT* __s, size_type __n, size_type __pos) const 10136: { 10136: _M_check(__pos, "basic_string::copy"); 10136: __n = _M_limit(__pos, __n); 10136: ; 10136: if (__n) 10136: _S_copy(__s, _M_data() + __pos, __n); 10136: 10136: return __n; 10136: } 10136: # 1155 "/usr/include/c++/8/bits/basic_string.tcc" 3 10136: template 10136: basic_string<_CharT, _Traits, _Alloc> 10136: operator+(const _CharT* __lhs, 10136: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { 10136: ; 10136: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 10136: typedef typename __string_type::size_type __size_type; 10136: const __size_type __len = _Traits::length(__lhs); 10136: __string_type __str; 10136: __str.reserve(__len + __rhs.size()); 10136: __str.append(__lhs, __len); 10136: __str.append(__rhs); 10136: return __str; 10136: } 10136: 10136: template 10136: basic_string<_CharT, _Traits, _Alloc> 10136: operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) 10136: { 10136: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 10136: typedef typename __string_type::size_type __size_type; 10136: __string_type __str; 10136: const __size_type __len = __rhs.size(); 10136: __str.reserve(__len + 1); 10136: __str.append(__size_type(1), __lhs); 10136: __str.append(__rhs); 10136: return __str; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: find(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept 10136: { 10136: ; 10136: const size_type __size = this->size(); 10136: 10136: if (__n == 0) 10136: return __pos <= __size ? __pos : npos; 10136: if (__pos >= __size) 10136: return npos; 10136: 10136: const _CharT __elem0 = __s[0]; 10136: const _CharT* const __data = data(); 10136: const _CharT* __first = __data + __pos; 10136: const _CharT* const __last = __data + __size; 10136: size_type __len = __size - __pos; 10136: 10136: while (__len >= __n) 10136: { 10136: 10136: __first = traits_type::find(__first, __len - __n + 1, __elem0); 10136: if (!__first) 10136: return npos; 10136: 10136: 10136: 10136: if (traits_type::compare(__first, __s, __n) == 0) 10136: return __first - __data; 10136: __len = __last - ++__first; 10136: } 10136: return npos; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: find(_CharT __c, size_type __pos) const noexcept 10136: { 10136: size_type __ret = npos; 10136: const size_type __size = this->size(); 10136: if (__pos < __size) 10136: { 10136: const _CharT* __data = _M_data(); 10136: const size_type __n = __size - __pos; 10136: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); 10136: if (__p) 10136: __ret = __p - __data; 10136: } 10136: return __ret; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: rfind(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept 10136: { 10136: ; 10136: const size_type __size = this->size(); 10136: if (__n <= __size) 10136: { 10136: __pos = std::min(size_type(__size - __n), __pos); 10136: const _CharT* __data = _M_data(); 10136: do 10136: { 10136: if (traits_type::compare(__data + __pos, __s, __n) == 0) 10136: return __pos; 10136: } 10136: while (__pos-- > 0); 10136: } 10136: return npos; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: rfind(_CharT __c, size_type __pos) const noexcept 10136: { 10136: size_type __size = this->size(); 10136: if (__size) 10136: { 10136: if (--__size > __pos) 10136: __size = __pos; 10136: for (++__size; __size-- > 0; ) 10136: if (traits_type::eq(_M_data()[__size], __c)) 10136: return __size; 10136: } 10136: return npos; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept 10136: { 10136: ; 10136: for (; __n && __pos < this->size(); ++__pos) 10136: { 10136: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); 10136: if (__p) 10136: return __pos; 10136: } 10136: return npos; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept 10136: { 10136: ; 10136: size_type __size = this->size(); 10136: if (__size && __n) 10136: { 10136: if (--__size > __pos) 10136: __size = __pos; 10136: do 10136: { 10136: if (traits_type::find(__s, __n, _M_data()[__size])) 10136: return __size; 10136: } 10136: while (__size-- != 0); 10136: } 10136: return npos; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept 10136: { 10136: ; 10136: for (; __pos < this->size(); ++__pos) 10136: if (!traits_type::find(__s, __n, _M_data()[__pos])) 10136: return __pos; 10136: return npos; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: find_first_not_of(_CharT __c, size_type __pos) const noexcept 10136: { 10136: for (; __pos < this->size(); ++__pos) 10136: if (!traits_type::eq(_M_data()[__pos], __c)) 10136: return __pos; 10136: return npos; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const 10136: noexcept 10136: { 10136: ; 10136: size_type __size = this->size(); 10136: if (__size) 10136: { 10136: if (--__size > __pos) 10136: __size = __pos; 10136: do 10136: { 10136: if (!traits_type::find(__s, __n, _M_data()[__size])) 10136: return __size; 10136: } 10136: while (__size--); 10136: } 10136: return npos; 10136: } 10136: 10136: template 10136: typename basic_string<_CharT, _Traits, _Alloc>::size_type 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: find_last_not_of(_CharT __c, size_type __pos) const noexcept 10136: { 10136: size_type __size = this->size(); 10136: if (__size) 10136: { 10136: if (--__size > __pos) 10136: __size = __pos; 10136: do 10136: { 10136: if (!traits_type::eq(_M_data()[__size], __c)) 10136: return __size; 10136: } 10136: while (__size--); 10136: } 10136: return npos; 10136: } 10136: 10136: template 10136: int 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: compare(size_type __pos, size_type __n, const basic_string& __str) const 10136: { 10136: _M_check(__pos, "basic_string::compare"); 10136: __n = _M_limit(__pos, __n); 10136: const size_type __osize = __str.size(); 10136: const size_type __len = std::min(__n, __osize); 10136: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); 10136: if (!__r) 10136: __r = _S_compare(__n, __osize); 10136: return __r; 10136: } 10136: 10136: template 10136: int 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: compare(size_type __pos1, size_type __n1, const basic_string& __str, 10136: size_type __pos2, size_type __n2) const 10136: { 10136: _M_check(__pos1, "basic_string::compare"); 10136: __str._M_check(__pos2, "basic_string::compare"); 10136: __n1 = _M_limit(__pos1, __n1); 10136: __n2 = __str._M_limit(__pos2, __n2); 10136: const size_type __len = std::min(__n1, __n2); 10136: int __r = traits_type::compare(_M_data() + __pos1, 10136: __str.data() + __pos2, __len); 10136: if (!__r) 10136: __r = _S_compare(__n1, __n2); 10136: return __r; 10136: } 10136: 10136: template 10136: int 10136: basic_string<_CharT, _Traits, _Alloc>:: 10136: compare(const _CharT* __s) const noexcept 10136: { 10136: ; 10136: const size_type __size = this->size(); 10136: const size_type __osize = traits_type::length(__s); 10136: const size_type __len = std::min(__size, __osize); 10136: int __r = traits_type::compare(_M_data(), __s, __len); 10136: if (!__r) 10136: __r = _S_compare(__size, __osize); 10136: return __r; 10136: } 10136: 10136: template 10136: int 10136: basic_string <_CharT, _Traits, _Alloc>:: 10136: compare(size_type __pos, size_type __n1, const _CharT* __s) const 10136: { 10136: ; 10136: _M_check(__pos, "basic_string::compare"); 10136: __n1 = _M_limit(__pos, __n1); 10136: const size_type __osize = traits_type::length(__s); 10136: const size_type __len = std::min(__n1, __osize); 10136: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 10136: if (!__r) 10136: __r = _S_compare(__n1, __osize); 10136: return __r; 10136: } 10136: 10136: template 10136: int 10136: basic_string <_CharT, _Traits, _Alloc>:: 10136: compare(size_type __pos, size_type __n1, const _CharT* __s, 10136: size_type __n2) const 10136: { 10136: ; 10136: _M_check(__pos, "basic_string::compare"); 10136: __n1 = _M_limit(__pos, __n1); 10136: const size_type __len = std::min(__n1, __n2); 10136: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 10136: if (!__r) 10136: __r = _S_compare(__n1, __n2); 10136: return __r; 10136: } 10136: 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: operator>>(basic_istream<_CharT, _Traits>& __in, 10136: basic_string<_CharT, _Traits, _Alloc>& __str) 10136: { 10136: typedef basic_istream<_CharT, _Traits> __istream_type; 10136: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 10136: typedef typename __istream_type::ios_base __ios_base; 10136: typedef typename __istream_type::int_type __int_type; 10136: typedef typename __string_type::size_type __size_type; 10136: typedef ctype<_CharT> __ctype_type; 10136: typedef typename __ctype_type::ctype_base __ctype_base; 10136: 10136: __size_type __extracted = 0; 10136: typename __ios_base::iostate __err = __ios_base::goodbit; 10136: typename __istream_type::sentry __cerb(__in, false); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: 10136: __str.erase(); 10136: _CharT __buf[128]; 10136: __size_type __len = 0; 10136: const streamsize __w = __in.width(); 10136: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) 10136: : __str.max_size(); 10136: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 10136: const __int_type __eof = _Traits::eof(); 10136: __int_type __c = __in.rdbuf()->sgetc(); 10136: 10136: while (__extracted < __n 10136: && !_Traits::eq_int_type(__c, __eof) 10136: && !__ct.is(__ctype_base::space, 10136: _Traits::to_char_type(__c))) 10136: { 10136: if (__len == sizeof(__buf) / sizeof(_CharT)) 10136: { 10136: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); 10136: __len = 0; 10136: } 10136: __buf[__len++] = _Traits::to_char_type(__c); 10136: ++__extracted; 10136: __c = __in.rdbuf()->snextc(); 10136: } 10136: __str.append(__buf, __len); 10136: 10136: if (_Traits::eq_int_type(__c, __eof)) 10136: __err |= __ios_base::eofbit; 10136: __in.width(0); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: __in._M_setstate(__ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { 10136: 10136: 10136: 10136: __in._M_setstate(__ios_base::badbit); 10136: } 10136: } 10136: 10136: if (!__extracted) 10136: __err |= __ios_base::failbit; 10136: if (__err) 10136: __in.setstate(__err); 10136: return __in; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: getline(basic_istream<_CharT, _Traits>& __in, 10136: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 10136: { 10136: typedef basic_istream<_CharT, _Traits> __istream_type; 10136: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 10136: typedef typename __istream_type::ios_base __ios_base; 10136: typedef typename __istream_type::int_type __int_type; 10136: typedef typename __string_type::size_type __size_type; 10136: 10136: __size_type __extracted = 0; 10136: const __size_type __n = __str.max_size(); 10136: typename __ios_base::iostate __err = __ios_base::goodbit; 10136: typename __istream_type::sentry __cerb(__in, true); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: __str.erase(); 10136: const __int_type __idelim = _Traits::to_int_type(__delim); 10136: const __int_type __eof = _Traits::eof(); 10136: __int_type __c = __in.rdbuf()->sgetc(); 10136: 10136: while (__extracted < __n 10136: && !_Traits::eq_int_type(__c, __eof) 10136: && !_Traits::eq_int_type(__c, __idelim)) 10136: { 10136: __str += _Traits::to_char_type(__c); 10136: ++__extracted; 10136: __c = __in.rdbuf()->snextc(); 10136: } 10136: 10136: if (_Traits::eq_int_type(__c, __eof)) 10136: __err |= __ios_base::eofbit; 10136: else if (_Traits::eq_int_type(__c, __idelim)) 10136: { 10136: ++__extracted; 10136: __in.rdbuf()->sbumpc(); 10136: } 10136: else 10136: __err |= __ios_base::failbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: __in._M_setstate(__ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { 10136: 10136: 10136: 10136: __in._M_setstate(__ios_base::badbit); 10136: } 10136: } 10136: if (!__extracted) 10136: __err |= __ios_base::failbit; 10136: if (__err) 10136: __in.setstate(__err); 10136: return __in; 10136: } 10136: 10136: 10136: 10136: 10136: extern template class basic_string; 10136: extern template 10136: basic_istream& 10136: operator>>(basic_istream&, string&); 10136: extern template 10136: basic_ostream& 10136: operator<<(basic_ostream&, const string&); 10136: extern template 10136: basic_istream& 10136: getline(basic_istream&, string&, char); 10136: extern template 10136: basic_istream& 10136: getline(basic_istream&, string&); 10136: 10136: 10136: extern template class basic_string; 10136: extern template 10136: basic_istream& 10136: operator>>(basic_istream&, wstring&); 10136: extern template 10136: basic_ostream& 10136: operator<<(basic_ostream&, const wstring&); 10136: extern template 10136: basic_istream& 10136: getline(basic_istream&, wstring&, wchar_t); 10136: extern template 10136: basic_istream& 10136: getline(basic_istream&, wstring&); 10136: 10136: 10136: 10136: 10136: } 10136: # 54 "/usr/include/c++/8/string" 2 3 10136: # 40 "/usr/include/c++/8/stdexcept" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: struct __cow_string 10136: { 10136: union { 10136: const char* _M_p; 10136: char _M_bytes[sizeof(const char*)]; 10136: }; 10136: 10136: __cow_string(); 10136: __cow_string(const std::string&); 10136: __cow_string(const char*, size_t); 10136: __cow_string(const __cow_string&) noexcept; 10136: __cow_string& operator=(const __cow_string&) noexcept; 10136: ~__cow_string(); 10136: 10136: __cow_string(__cow_string&&) noexcept; 10136: __cow_string& operator=(__cow_string&&) noexcept; 10136: 10136: }; 10136: 10136: typedef basic_string __sso_string; 10136: # 113 "/usr/include/c++/8/stdexcept" 3 10136: class logic_error : public exception 10136: { 10136: __cow_string _M_msg; 10136: 10136: public: 10136: 10136: explicit 10136: logic_error(const string& __arg) ; 10136: 10136: 10136: explicit 10136: logic_error(const char*) ; 10136: 10136: 10136: 10136: logic_error(const logic_error&) noexcept; 10136: logic_error& operator=(const logic_error&) noexcept; 10136: 10136: 10136: virtual ~logic_error() noexcept; 10136: 10136: 10136: 10136: virtual const char* 10136: what() const noexcept; 10136: 10136: 10136: 10136: 10136: 10136: }; 10136: 10136: 10136: 10136: class domain_error : public logic_error 10136: { 10136: public: 10136: explicit domain_error(const string& __arg) ; 10136: 10136: explicit domain_error(const char*) ; 10136: 10136: virtual ~domain_error() noexcept; 10136: }; 10136: 10136: 10136: class invalid_argument : public logic_error 10136: { 10136: public: 10136: explicit invalid_argument(const string& __arg) ; 10136: 10136: explicit invalid_argument(const char*) ; 10136: 10136: virtual ~invalid_argument() noexcept; 10136: }; 10136: 10136: 10136: 10136: class length_error : public logic_error 10136: { 10136: public: 10136: explicit length_error(const string& __arg) ; 10136: 10136: explicit length_error(const char*) ; 10136: 10136: virtual ~length_error() noexcept; 10136: }; 10136: 10136: 10136: 10136: class out_of_range : public logic_error 10136: { 10136: public: 10136: explicit out_of_range(const string& __arg) ; 10136: 10136: explicit out_of_range(const char*) ; 10136: 10136: virtual ~out_of_range() noexcept; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: class runtime_error : public exception 10136: { 10136: __cow_string _M_msg; 10136: 10136: public: 10136: 10136: explicit 10136: runtime_error(const string& __arg) ; 10136: 10136: 10136: explicit 10136: runtime_error(const char*) ; 10136: 10136: 10136: 10136: runtime_error(const runtime_error&) noexcept; 10136: runtime_error& operator=(const runtime_error&) noexcept; 10136: 10136: 10136: virtual ~runtime_error() noexcept; 10136: 10136: 10136: 10136: virtual const char* 10136: what() const noexcept; 10136: 10136: 10136: 10136: 10136: 10136: }; 10136: 10136: 10136: class range_error : public runtime_error 10136: { 10136: public: 10136: explicit range_error(const string& __arg) ; 10136: 10136: explicit range_error(const char*) ; 10136: 10136: virtual ~range_error() noexcept; 10136: }; 10136: 10136: 10136: class overflow_error : public runtime_error 10136: { 10136: public: 10136: explicit overflow_error(const string& __arg) ; 10136: 10136: explicit overflow_error(const char*) ; 10136: 10136: virtual ~overflow_error() noexcept; 10136: }; 10136: 10136: 10136: class underflow_error : public runtime_error 10136: { 10136: public: 10136: explicit underflow_error(const string& __arg) ; 10136: 10136: explicit underflow_error(const char*) ; 10136: 10136: virtual ~underflow_error() noexcept; 10136: }; 10136: 10136: 10136: 10136: 10136: } 10136: # 40 "/usr/include/c++/8/array" 2 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: struct __array_traits 10136: { 10136: typedef _Tp _Type[_Nm]; 10136: typedef __is_swappable<_Tp> _Is_swappable; 10136: typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; 10136: 10136: static constexpr _Tp& 10136: _S_ref(const _Type& __t, std::size_t __n) noexcept 10136: { return const_cast<_Tp&>(__t[__n]); } 10136: 10136: static constexpr _Tp* 10136: _S_ptr(const _Type& __t) noexcept 10136: { return const_cast<_Tp*>(__t); } 10136: }; 10136: 10136: template 10136: struct __array_traits<_Tp, 0> 10136: { 10136: struct _Type { }; 10136: typedef true_type _Is_swappable; 10136: typedef true_type _Is_nothrow_swappable; 10136: 10136: static constexpr _Tp& 10136: _S_ref(const _Type&, std::size_t) noexcept 10136: { return *static_cast<_Tp*>(nullptr); } 10136: 10136: static constexpr _Tp* 10136: _S_ptr(const _Type&) noexcept 10136: { return nullptr; } 10136: }; 10136: # 93 "/usr/include/c++/8/array" 3 10136: template 10136: struct array 10136: { 10136: typedef _Tp value_type; 10136: typedef value_type* pointer; 10136: typedef const value_type* const_pointer; 10136: typedef value_type& reference; 10136: typedef const value_type& const_reference; 10136: typedef value_type* iterator; 10136: typedef const value_type* const_iterator; 10136: typedef std::size_t size_type; 10136: typedef std::ptrdiff_t difference_type; 10136: typedef std::reverse_iterator reverse_iterator; 10136: typedef std::reverse_iterator const_reverse_iterator; 10136: 10136: 10136: typedef std::__array_traits<_Tp, _Nm> _AT_Type; 10136: typename _AT_Type::_Type _M_elems; 10136: 10136: 10136: 10136: 10136: void 10136: fill(const value_type& __u) 10136: { std::fill_n(begin(), size(), __u); } 10136: 10136: void 10136: swap(array& __other) 10136: noexcept(_AT_Type::_Is_nothrow_swappable::value) 10136: { std::swap_ranges(begin(), end(), __other.begin()); } 10136: 10136: 10136: iterator 10136: begin() noexcept 10136: { return iterator(data()); } 10136: 10136: const_iterator 10136: begin() const noexcept 10136: { return const_iterator(data()); } 10136: 10136: iterator 10136: end() noexcept 10136: { return iterator(data() + _Nm); } 10136: 10136: const_iterator 10136: end() const noexcept 10136: { return const_iterator(data() + _Nm); } 10136: 10136: reverse_iterator 10136: rbegin() noexcept 10136: { return reverse_iterator(end()); } 10136: 10136: const_reverse_iterator 10136: rbegin() const noexcept 10136: { return const_reverse_iterator(end()); } 10136: 10136: reverse_iterator 10136: rend() noexcept 10136: { return reverse_iterator(begin()); } 10136: 10136: const_reverse_iterator 10136: rend() const noexcept 10136: { return const_reverse_iterator(begin()); } 10136: 10136: const_iterator 10136: cbegin() const noexcept 10136: { return const_iterator(data()); } 10136: 10136: const_iterator 10136: cend() const noexcept 10136: { return const_iterator(data() + _Nm); } 10136: 10136: const_reverse_iterator 10136: crbegin() const noexcept 10136: { return const_reverse_iterator(end()); } 10136: 10136: const_reverse_iterator 10136: crend() const noexcept 10136: { return const_reverse_iterator(begin()); } 10136: 10136: 10136: constexpr size_type 10136: size() const noexcept { return _Nm; } 10136: 10136: constexpr size_type 10136: max_size() const noexcept { return _Nm; } 10136: 10136: constexpr bool 10136: empty() const noexcept { return size() == 0; } 10136: 10136: 10136: reference 10136: operator[](size_type __n) noexcept 10136: { return _AT_Type::_S_ref(_M_elems, __n); } 10136: 10136: constexpr const_reference 10136: operator[](size_type __n) const noexcept 10136: { return _AT_Type::_S_ref(_M_elems, __n); } 10136: 10136: reference 10136: at(size_type __n) 10136: { 10136: if (__n >= _Nm) 10136: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 10136: , 10136: __n, _Nm); 10136: return _AT_Type::_S_ref(_M_elems, __n); 10136: } 10136: 10136: constexpr const_reference 10136: at(size_type __n) const 10136: { 10136: 10136: 10136: return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) 10136: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 10136: , 10136: __n, _Nm), 10136: _AT_Type::_S_ref(_M_elems, 0)); 10136: } 10136: 10136: reference 10136: front() noexcept 10136: { return *begin(); } 10136: 10136: constexpr const_reference 10136: front() const noexcept 10136: { return _AT_Type::_S_ref(_M_elems, 0); } 10136: 10136: reference 10136: back() noexcept 10136: { return _Nm ? *(end() - 1) : *end(); } 10136: 10136: constexpr const_reference 10136: back() const noexcept 10136: { 10136: return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) 10136: : _AT_Type::_S_ref(_M_elems, 0); 10136: } 10136: 10136: pointer 10136: data() noexcept 10136: { return _AT_Type::_S_ptr(_M_elems); } 10136: 10136: const_pointer 10136: data() const noexcept 10136: { return _AT_Type::_S_ptr(_M_elems); } 10136: }; 10136: # 250 "/usr/include/c++/8/array" 3 10136: template 10136: inline bool 10136: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 10136: { return std::equal(__one.begin(), __one.end(), __two.begin()); } 10136: 10136: template 10136: inline bool 10136: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 10136: { return !(__one == __two); } 10136: 10136: template 10136: inline bool 10136: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) 10136: { 10136: return std::lexicographical_compare(__a.begin(), __a.end(), 10136: __b.begin(), __b.end()); 10136: } 10136: 10136: template 10136: inline bool 10136: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 10136: { return __two < __one; } 10136: 10136: template 10136: inline bool 10136: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 10136: { return !(__one > __two); } 10136: 10136: template 10136: inline bool 10136: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 10136: { return !(__one < __two); } 10136: 10136: 10136: template 10136: inline 10136: 10136: 10136: typename enable_if< 10136: std::__array_traits<_Tp, _Nm>::_Is_swappable::value 10136: >::type 10136: 10136: 10136: 10136: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) 10136: noexcept(noexcept(__one.swap(__two))) 10136: { __one.swap(__two); } 10136: 10136: 10136: template 10136: typename enable_if< 10136: !std::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type 10136: swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; 10136: 10136: 10136: template 10136: constexpr _Tp& 10136: get(array<_Tp, _Nm>& __arr) noexcept 10136: { 10136: static_assert(_Int < _Nm, "array index is within bounds"); 10136: return std::__array_traits<_Tp, _Nm>:: 10136: _S_ref(__arr._M_elems, _Int); 10136: } 10136: 10136: template 10136: constexpr _Tp&& 10136: get(array<_Tp, _Nm>&& __arr) noexcept 10136: { 10136: static_assert(_Int < _Nm, "array index is within bounds"); 10136: return std::move(std::get<_Int>(__arr)); 10136: } 10136: 10136: template 10136: constexpr const _Tp& 10136: get(const array<_Tp, _Nm>& __arr) noexcept 10136: { 10136: static_assert(_Int < _Nm, "array index is within bounds"); 10136: return std::__array_traits<_Tp, _Nm>:: 10136: _S_ref(__arr._M_elems, _Int); 10136: } 10136: 10136: template 10136: constexpr const _Tp&& 10136: get(const array<_Tp, _Nm>&& __arr) noexcept 10136: { 10136: static_assert(_Int < _Nm, "array index is within bounds"); 10136: return std::move(std::get<_Int>(__arr)); 10136: } 10136: 10136: 10136: } 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct tuple_size; 10136: 10136: 10136: template 10136: struct tuple_size> 10136: : public integral_constant { }; 10136: 10136: 10136: template 10136: struct tuple_element; 10136: 10136: 10136: template 10136: struct tuple_element<_Int, std::array<_Tp, _Nm>> 10136: { 10136: static_assert(_Int < _Nm, "index is out of bounds"); 10136: typedef _Tp type; 10136: }; 10136: 10136: template 10136: struct __is_tuple_like_impl> : true_type 10136: { }; 10136: 10136: 10136: } 10136: # 40 "/usr/include/c++/8/tuple" 2 3 10136: 10136: # 1 "/usr/include/c++/8/bits/invoke.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/invoke.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/invoke.h" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 52 "/usr/include/c++/8/bits/invoke.h" 3 10136: template::type> 10136: constexpr _Up&& 10136: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept 10136: { return static_cast<_Up&&>(__t); } 10136: 10136: template 10136: constexpr _Res 10136: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) 10136: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } 10136: 10136: template 10136: constexpr _Res 10136: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, 10136: _Args&&... __args) 10136: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } 10136: 10136: template 10136: constexpr _Res 10136: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, 10136: _Args&&... __args) 10136: { 10136: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); 10136: } 10136: 10136: template 10136: constexpr _Res 10136: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) 10136: { return __invfwd<_Tp>(__t).*__f; } 10136: 10136: template 10136: constexpr _Res 10136: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) 10136: { return (*std::forward<_Tp>(__t)).*__f; } 10136: 10136: 10136: template 10136: constexpr typename __invoke_result<_Callable, _Args...>::type 10136: __invoke(_Callable&& __fn, _Args&&... __args) 10136: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) 10136: { 10136: using __result = __invoke_result<_Callable, _Args...>; 10136: using __type = typename __result::type; 10136: using __tag = typename __result::__invoke_type; 10136: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 10136: std::forward<_Args>(__args)...); 10136: } 10136: 10136: 10136: } 10136: # 42 "/usr/include/c++/8/tuple" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class tuple; 10136: 10136: template 10136: struct __is_empty_non_tuple : is_empty<_Tp> { }; 10136: 10136: 10136: template 10136: struct __is_empty_non_tuple> : false_type { }; 10136: 10136: 10136: template 10136: using __empty_not_final 10136: = typename conditional<__is_final(_Tp), false_type, 10136: __is_empty_non_tuple<_Tp>>::type; 10136: 10136: template::value> 10136: struct _Head_base; 10136: 10136: template 10136: struct _Head_base<_Idx, _Head, true> 10136: : public _Head 10136: { 10136: constexpr _Head_base() 10136: : _Head() { } 10136: 10136: constexpr _Head_base(const _Head& __h) 10136: : _Head(__h) { } 10136: 10136: constexpr _Head_base(const _Head_base&) = default; 10136: constexpr _Head_base(_Head_base&&) = default; 10136: 10136: template 10136: constexpr _Head_base(_UHead&& __h) 10136: : _Head(std::forward<_UHead>(__h)) { } 10136: 10136: _Head_base(allocator_arg_t, __uses_alloc0) 10136: : _Head() { } 10136: 10136: template 10136: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 10136: : _Head(allocator_arg, *__a._M_a) { } 10136: 10136: template 10136: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 10136: : _Head(*__a._M_a) { } 10136: 10136: template 10136: _Head_base(__uses_alloc0, _UHead&& __uhead) 10136: : _Head(std::forward<_UHead>(__uhead)) { } 10136: 10136: template 10136: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 10136: : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } 10136: 10136: template 10136: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 10136: : _Head(std::forward<_UHead>(__uhead), *__a._M_a) { } 10136: 10136: static constexpr _Head& 10136: _M_head(_Head_base& __b) noexcept { return __b; } 10136: 10136: static constexpr const _Head& 10136: _M_head(const _Head_base& __b) noexcept { return __b; } 10136: }; 10136: 10136: template 10136: struct _Head_base<_Idx, _Head, false> 10136: { 10136: constexpr _Head_base() 10136: : _M_head_impl() { } 10136: 10136: constexpr _Head_base(const _Head& __h) 10136: : _M_head_impl(__h) { } 10136: 10136: constexpr _Head_base(const _Head_base&) = default; 10136: constexpr _Head_base(_Head_base&&) = default; 10136: 10136: template 10136: constexpr _Head_base(_UHead&& __h) 10136: : _M_head_impl(std::forward<_UHead>(__h)) { } 10136: 10136: _Head_base(allocator_arg_t, __uses_alloc0) 10136: : _M_head_impl() { } 10136: 10136: template 10136: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 10136: : _M_head_impl(allocator_arg, *__a._M_a) { } 10136: 10136: template 10136: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 10136: : _M_head_impl(*__a._M_a) { } 10136: 10136: template 10136: _Head_base(__uses_alloc0, _UHead&& __uhead) 10136: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 10136: 10136: template 10136: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 10136: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 10136: { } 10136: 10136: template 10136: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 10136: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 10136: 10136: static constexpr _Head& 10136: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 10136: 10136: static constexpr const _Head& 10136: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 10136: 10136: _Head _M_head_impl; 10136: }; 10136: # 176 "/usr/include/c++/8/tuple" 3 10136: template 10136: struct _Tuple_impl; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct _Tuple_impl<_Idx, _Head, _Tail...> 10136: : public _Tuple_impl<_Idx + 1, _Tail...>, 10136: private _Head_base<_Idx, _Head> 10136: { 10136: template friend class _Tuple_impl; 10136: 10136: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; 10136: typedef _Head_base<_Idx, _Head> _Base; 10136: 10136: static constexpr _Head& 10136: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 10136: 10136: static constexpr const _Head& 10136: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 10136: 10136: static constexpr _Inherited& 10136: _M_tail(_Tuple_impl& __t) noexcept { return __t; } 10136: 10136: static constexpr const _Inherited& 10136: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } 10136: 10136: constexpr _Tuple_impl() 10136: : _Inherited(), _Base() { } 10136: 10136: explicit 10136: constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail) 10136: : _Inherited(__tail...), _Base(__head) { } 10136: 10136: template::type> 10136: explicit 10136: constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail) 10136: : _Inherited(std::forward<_UTail>(__tail)...), 10136: _Base(std::forward<_UHead>(__head)) { } 10136: 10136: constexpr _Tuple_impl(const _Tuple_impl&) = default; 10136: 10136: constexpr 10136: _Tuple_impl(_Tuple_impl&& __in) 10136: noexcept(__and_, 10136: is_nothrow_move_constructible<_Inherited>>::value) 10136: : _Inherited(std::move(_M_tail(__in))), 10136: _Base(std::forward<_Head>(_M_head(__in))) { } 10136: 10136: template 10136: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) 10136: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 10136: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } 10136: 10136: template 10136: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 10136: : _Inherited(std::move 10136: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 10136: _Base(std::forward<_UHead> 10136: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 10136: : _Inherited(__tag, __a), 10136: _Base(__tag, __use_alloc<_Head>(__a)) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: const _Head& __head, const _Tail&... __tail) 10136: : _Inherited(__tag, __a, __tail...), 10136: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } 10136: 10136: template::type> 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: _UHead&& __head, _UTail&&... __tail) 10136: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), 10136: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 10136: std::forward<_UHead>(__head)) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: const _Tuple_impl& __in) 10136: : _Inherited(__tag, __a, _M_tail(__in)), 10136: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: _Tuple_impl&& __in) 10136: : _Inherited(__tag, __a, std::move(_M_tail(__in))), 10136: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 10136: std::forward<_Head>(_M_head(__in))) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: const _Tuple_impl<_Idx, _UElements...>& __in) 10136: : _Inherited(__tag, __a, 10136: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 10136: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 10136: _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 10136: : _Inherited(__tag, __a, std::move 10136: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 10136: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 10136: std::forward<_UHead> 10136: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } 10136: 10136: _Tuple_impl& 10136: operator=(const _Tuple_impl& __in) 10136: { 10136: _M_head(*this) = _M_head(__in); 10136: _M_tail(*this) = _M_tail(__in); 10136: return *this; 10136: } 10136: 10136: _Tuple_impl& 10136: operator=(_Tuple_impl&& __in) 10136: noexcept(__and_, 10136: is_nothrow_move_assignable<_Inherited>>::value) 10136: { 10136: _M_head(*this) = std::forward<_Head>(_M_head(__in)); 10136: _M_tail(*this) = std::move(_M_tail(__in)); 10136: return *this; 10136: } 10136: 10136: template 10136: _Tuple_impl& 10136: operator=(const _Tuple_impl<_Idx, _UElements...>& __in) 10136: { 10136: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); 10136: _M_tail(*this) = _Tuple_impl<_Idx, _UElements...>::_M_tail(__in); 10136: return *this; 10136: } 10136: 10136: template 10136: _Tuple_impl& 10136: operator=(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 10136: { 10136: _M_head(*this) = std::forward<_UHead> 10136: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); 10136: _M_tail(*this) = std::move 10136: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)); 10136: return *this; 10136: } 10136: 10136: protected: 10136: void 10136: _M_swap(_Tuple_impl& __in) 10136: noexcept(__is_nothrow_swappable<_Head>::value 10136: && noexcept(_M_tail(__in)._M_swap(_M_tail(__in)))) 10136: { 10136: using std::swap; 10136: swap(_M_head(*this), _M_head(__in)); 10136: _Inherited::_M_swap(_M_tail(__in)); 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct _Tuple_impl<_Idx, _Head> 10136: : private _Head_base<_Idx, _Head> 10136: { 10136: template friend class _Tuple_impl; 10136: 10136: typedef _Head_base<_Idx, _Head> _Base; 10136: 10136: static constexpr _Head& 10136: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 10136: 10136: static constexpr const _Head& 10136: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 10136: 10136: constexpr _Tuple_impl() 10136: : _Base() { } 10136: 10136: explicit 10136: constexpr _Tuple_impl(const _Head& __head) 10136: : _Base(__head) { } 10136: 10136: template 10136: explicit 10136: constexpr _Tuple_impl(_UHead&& __head) 10136: : _Base(std::forward<_UHead>(__head)) { } 10136: 10136: constexpr _Tuple_impl(const _Tuple_impl&) = default; 10136: 10136: constexpr 10136: _Tuple_impl(_Tuple_impl&& __in) 10136: noexcept(is_nothrow_move_constructible<_Head>::value) 10136: : _Base(std::forward<_Head>(_M_head(__in))) { } 10136: 10136: template 10136: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) 10136: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } 10136: 10136: template 10136: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) 10136: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 10136: { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 10136: : _Base(__tag, __use_alloc<_Head>(__a)) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: const _Head& __head) 10136: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: _UHead&& __head) 10136: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 10136: std::forward<_UHead>(__head)) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: const _Tuple_impl& __in) 10136: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: _Tuple_impl&& __in) 10136: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 10136: std::forward<_Head>(_M_head(__in))) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: const _Tuple_impl<_Idx, _UHead>& __in) 10136: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 10136: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } 10136: 10136: template 10136: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 10136: _Tuple_impl<_Idx, _UHead>&& __in) 10136: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 10136: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 10136: { } 10136: 10136: _Tuple_impl& 10136: operator=(const _Tuple_impl& __in) 10136: { 10136: _M_head(*this) = _M_head(__in); 10136: return *this; 10136: } 10136: 10136: _Tuple_impl& 10136: operator=(_Tuple_impl&& __in) 10136: noexcept(is_nothrow_move_assignable<_Head>::value) 10136: { 10136: _M_head(*this) = std::forward<_Head>(_M_head(__in)); 10136: return *this; 10136: } 10136: 10136: template 10136: _Tuple_impl& 10136: operator=(const _Tuple_impl<_Idx, _UHead>& __in) 10136: { 10136: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); 10136: return *this; 10136: } 10136: 10136: template 10136: _Tuple_impl& 10136: operator=(_Tuple_impl<_Idx, _UHead>&& __in) 10136: { 10136: _M_head(*this) 10136: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); 10136: return *this; 10136: } 10136: 10136: protected: 10136: void 10136: _M_swap(_Tuple_impl& __in) 10136: noexcept(__is_nothrow_swappable<_Head>::value) 10136: { 10136: using std::swap; 10136: swap(_M_head(*this), _M_head(__in)); 10136: } 10136: }; 10136: 10136: 10136: 10136: template 10136: struct _TC 10136: { 10136: template 10136: static constexpr bool _ConstructibleTuple() 10136: { 10136: return __and_...>::value; 10136: } 10136: 10136: template 10136: static constexpr bool _ImplicitlyConvertibleTuple() 10136: { 10136: return __and_...>::value; 10136: } 10136: 10136: template 10136: static constexpr bool _MoveConstructibleTuple() 10136: { 10136: return __and_...>::value; 10136: } 10136: 10136: template 10136: static constexpr bool _ImplicitlyMoveConvertibleTuple() 10136: { 10136: return __and_...>::value; 10136: } 10136: 10136: template 10136: static constexpr bool _NonNestedTuple() 10136: { 10136: return __and_<__not_, 10136: typename remove_cv< 10136: typename remove_reference<_SrcTuple>::type 10136: >::type>>, 10136: __not_>, 10136: __not_> 10136: >::value; 10136: } 10136: template 10136: static constexpr bool _NotSameTuple() 10136: { 10136: return __not_, 10136: typename remove_const< 10136: typename remove_reference<_UElements...>::type 10136: >::type>>::value; 10136: } 10136: }; 10136: 10136: template 10136: struct _TC 10136: { 10136: template 10136: static constexpr bool _ConstructibleTuple() 10136: { 10136: return false; 10136: } 10136: 10136: template 10136: static constexpr bool _ImplicitlyConvertibleTuple() 10136: { 10136: return false; 10136: } 10136: 10136: template 10136: static constexpr bool _MoveConstructibleTuple() 10136: { 10136: return false; 10136: } 10136: 10136: template 10136: static constexpr bool _ImplicitlyMoveConvertibleTuple() 10136: { 10136: return false; 10136: } 10136: 10136: template 10136: static constexpr bool _NonNestedTuple() 10136: { 10136: return true; 10136: } 10136: template 10136: static constexpr bool _NotSameTuple() 10136: { 10136: return true; 10136: } 10136: }; 10136: 10136: 10136: template 10136: class tuple : public _Tuple_impl<0, _Elements...> 10136: { 10136: typedef _Tuple_impl<0, _Elements...> _Inherited; 10136: 10136: 10136: 10136: template 10136: struct _TC2 10136: { 10136: static constexpr bool _DefaultConstructibleTuple() 10136: { 10136: return __and_...>::value; 10136: } 10136: static constexpr bool _ImplicitlyDefaultConstructibleTuple() 10136: { 10136: return __and_<__is_implicitly_default_constructible<_Elements>...> 10136: ::value; 10136: } 10136: }; 10136: 10136: public: 10136: template:: 10136: _ImplicitlyDefaultConstructibleTuple(), 10136: bool>::type = true> 10136: constexpr tuple() 10136: : _Inherited() { } 10136: 10136: template:: 10136: _DefaultConstructibleTuple() 10136: && 10136: !_TC2<_Dummy>:: 10136: _ImplicitlyDefaultConstructibleTuple(), 10136: bool>::type = false> 10136: explicit constexpr tuple() 10136: : _Inherited() { } 10136: 10136: 10136: 10136: template using _TCC = 10136: _TC::value, 10136: _Elements...>; 10136: 10136: template::template 10136: _ConstructibleTuple<_Elements...>() 10136: && _TCC<_Dummy>::template 10136: _ImplicitlyConvertibleTuple<_Elements...>() 10136: && (sizeof...(_Elements) >= 1), 10136: bool>::type=true> 10136: constexpr tuple(const _Elements&... __elements) 10136: : _Inherited(__elements...) { } 10136: 10136: template::template 10136: _ConstructibleTuple<_Elements...>() 10136: && !_TCC<_Dummy>::template 10136: _ImplicitlyConvertibleTuple<_Elements...>() 10136: && (sizeof...(_Elements) >= 1), 10136: bool>::type=false> 10136: explicit constexpr tuple(const _Elements&... __elements) 10136: : _Inherited(__elements...) { } 10136: 10136: 10136: 10136: template using _TMC = 10136: _TC<(sizeof...(_Elements) == sizeof...(_UElements)) 10136: && (_TC<(sizeof...(_UElements)==1), _Elements...>:: 10136: template _NotSameTuple<_UElements...>()), 10136: _Elements...>; 10136: 10136: 10136: 10136: template using _TMCT = 10136: _TC<(sizeof...(_Elements) == sizeof...(_UElements)) 10136: && !is_same, 10136: tuple<_UElements...>>::value, 10136: _Elements...>; 10136: 10136: template::template 10136: _MoveConstructibleTuple<_UElements...>() 10136: && _TMC<_UElements...>::template 10136: _ImplicitlyMoveConvertibleTuple<_UElements...>() 10136: && (sizeof...(_Elements) >= 1), 10136: bool>::type=true> 10136: constexpr tuple(_UElements&&... __elements) 10136: : _Inherited(std::forward<_UElements>(__elements)...) { } 10136: 10136: template::template 10136: _MoveConstructibleTuple<_UElements...>() 10136: && !_TMC<_UElements...>::template 10136: _ImplicitlyMoveConvertibleTuple<_UElements...>() 10136: && (sizeof...(_Elements) >= 1), 10136: bool>::type=false> 10136: explicit constexpr tuple(_UElements&&... __elements) 10136: : _Inherited(std::forward<_UElements>(__elements)...) { } 10136: 10136: constexpr tuple(const tuple&) = default; 10136: 10136: constexpr tuple(tuple&&) = default; 10136: 10136: 10136: 10136: template using _TNTC = 10136: _TC::value && sizeof...(_Elements) == 1, 10136: _Elements...>; 10136: 10136: template::template 10136: _ConstructibleTuple<_UElements...>() 10136: && _TMCT<_UElements...>::template 10136: _ImplicitlyConvertibleTuple<_UElements...>() 10136: && _TNTC<_Dummy>::template 10136: _NonNestedTuple&>(), 10136: bool>::type=true> 10136: constexpr tuple(const tuple<_UElements...>& __in) 10136: : _Inherited(static_cast&>(__in)) 10136: { } 10136: 10136: template::template 10136: _ConstructibleTuple<_UElements...>() 10136: && !_TMCT<_UElements...>::template 10136: _ImplicitlyConvertibleTuple<_UElements...>() 10136: && _TNTC<_Dummy>::template 10136: _NonNestedTuple&>(), 10136: bool>::type=false> 10136: explicit constexpr tuple(const tuple<_UElements...>& __in) 10136: : _Inherited(static_cast&>(__in)) 10136: { } 10136: 10136: template::template 10136: _MoveConstructibleTuple<_UElements...>() 10136: && _TMCT<_UElements...>::template 10136: _ImplicitlyMoveConvertibleTuple<_UElements...>() 10136: && _TNTC<_Dummy>::template 10136: _NonNestedTuple&&>(), 10136: bool>::type=true> 10136: constexpr tuple(tuple<_UElements...>&& __in) 10136: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 10136: 10136: template::template 10136: _MoveConstructibleTuple<_UElements...>() 10136: && !_TMCT<_UElements...>::template 10136: _ImplicitlyMoveConvertibleTuple<_UElements...>() 10136: && _TNTC<_Dummy>::template 10136: _NonNestedTuple&&>(), 10136: bool>::type=false> 10136: explicit constexpr tuple(tuple<_UElements...>&& __in) 10136: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 10136: 10136: 10136: 10136: template 10136: tuple(allocator_arg_t __tag, const _Alloc& __a) 10136: : _Inherited(__tag, __a) { } 10136: 10136: template::template 10136: _ConstructibleTuple<_Elements...>() 10136: && _TCC<_Dummy>::template 10136: _ImplicitlyConvertibleTuple<_Elements...>(), 10136: bool>::type=true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const _Elements&... __elements) 10136: : _Inherited(__tag, __a, __elements...) { } 10136: 10136: template::template 10136: _ConstructibleTuple<_Elements...>() 10136: && !_TCC<_Dummy>::template 10136: _ImplicitlyConvertibleTuple<_Elements...>(), 10136: bool>::type=false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const _Elements&... __elements) 10136: : _Inherited(__tag, __a, __elements...) { } 10136: 10136: template::template 10136: _MoveConstructibleTuple<_UElements...>() 10136: && _TMC<_UElements...>::template 10136: _ImplicitlyMoveConvertibleTuple<_UElements...>(), 10136: bool>::type=true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: _UElements&&... __elements) 10136: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 10136: { } 10136: 10136: template::template 10136: _MoveConstructibleTuple<_UElements...>() 10136: && !_TMC<_UElements...>::template 10136: _ImplicitlyMoveConvertibleTuple<_UElements...>(), 10136: bool>::type=false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: _UElements&&... __elements) 10136: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 10136: { } 10136: 10136: template 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 10136: : _Inherited(__tag, __a, static_cast(__in)) { } 10136: 10136: template 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 10136: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 10136: 10136: template::template 10136: _ConstructibleTuple<_UElements...>() 10136: && _TMCT<_UElements...>::template 10136: _ImplicitlyConvertibleTuple<_UElements...>() 10136: && _TNTC<_Dummy>::template 10136: _NonNestedTuple&&>(), 10136: bool>::type=true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const tuple<_UElements...>& __in) 10136: : _Inherited(__tag, __a, 10136: static_cast&>(__in)) 10136: { } 10136: 10136: template::template 10136: _ConstructibleTuple<_UElements...>() 10136: && !_TMCT<_UElements...>::template 10136: _ImplicitlyConvertibleTuple<_UElements...>() 10136: && _TNTC<_Dummy>::template 10136: _NonNestedTuple&&>(), 10136: bool>::type=false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const tuple<_UElements...>& __in) 10136: : _Inherited(__tag, __a, 10136: static_cast&>(__in)) 10136: { } 10136: 10136: template::template 10136: _MoveConstructibleTuple<_UElements...>() 10136: && _TMCT<_UElements...>::template 10136: _ImplicitlyMoveConvertibleTuple<_UElements...>() 10136: && _TNTC<_Dummy>::template 10136: _NonNestedTuple&&>(), 10136: bool>::type=true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: tuple<_UElements...>&& __in) 10136: : _Inherited(__tag, __a, 10136: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 10136: { } 10136: 10136: template::template 10136: _MoveConstructibleTuple<_UElements...>() 10136: && !_TMCT<_UElements...>::template 10136: _ImplicitlyMoveConvertibleTuple<_UElements...>() 10136: && _TNTC<_Dummy>::template 10136: _NonNestedTuple&&>(), 10136: bool>::type=false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: tuple<_UElements...>&& __in) 10136: : _Inherited(__tag, __a, 10136: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 10136: { } 10136: 10136: tuple& 10136: operator=(const tuple& __in) 10136: { 10136: static_cast<_Inherited&>(*this) = __in; 10136: return *this; 10136: } 10136: 10136: tuple& 10136: operator=(tuple&& __in) 10136: noexcept(is_nothrow_move_assignable<_Inherited>::value) 10136: { 10136: static_cast<_Inherited&>(*this) = std::move(__in); 10136: return *this; 10136: } 10136: 10136: template 10136: typename 10136: enable_if::type 10136: operator=(const tuple<_UElements...>& __in) 10136: { 10136: static_cast<_Inherited&>(*this) = __in; 10136: return *this; 10136: } 10136: 10136: template 10136: typename 10136: enable_if::type 10136: operator=(tuple<_UElements...>&& __in) 10136: { 10136: static_cast<_Inherited&>(*this) = std::move(__in); 10136: return *this; 10136: } 10136: 10136: void 10136: swap(tuple& __in) 10136: noexcept(noexcept(__in._M_swap(__in))) 10136: { _Inherited::_M_swap(__in); } 10136: }; 10136: # 889 "/usr/include/c++/8/tuple" 3 10136: template<> 10136: class tuple<> 10136: { 10136: public: 10136: void swap(tuple&) noexcept { } 10136: 10136: 10136: tuple() = default; 10136: 10136: template 10136: tuple(allocator_arg_t, const _Alloc&) { } 10136: template 10136: tuple(allocator_arg_t, const _Alloc&, const tuple&) { } 10136: }; 10136: 10136: 10136: 10136: template 10136: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> 10136: { 10136: typedef _Tuple_impl<0, _T1, _T2> _Inherited; 10136: 10136: public: 10136: template , 10136: __is_implicitly_default_constructible<_U2>> 10136: ::value, bool>::type = true> 10136: 10136: constexpr tuple() 10136: : _Inherited() { } 10136: 10136: template , 10136: is_default_constructible<_U2>, 10136: __not_< 10136: __and_<__is_implicitly_default_constructible<_U1>, 10136: __is_implicitly_default_constructible<_U2>>>> 10136: ::value, bool>::type = false> 10136: 10136: explicit constexpr tuple() 10136: : _Inherited() { } 10136: 10136: 10136: 10136: template using _TCC = 10136: _TC::value, _T1, _T2>; 10136: 10136: template::template 10136: _ConstructibleTuple<_T1, _T2>() 10136: && _TCC<_Dummy>::template 10136: _ImplicitlyConvertibleTuple<_T1, _T2>(), 10136: bool>::type = true> 10136: constexpr tuple(const _T1& __a1, const _T2& __a2) 10136: : _Inherited(__a1, __a2) { } 10136: 10136: template::template 10136: _ConstructibleTuple<_T1, _T2>() 10136: && !_TCC<_Dummy>::template 10136: _ImplicitlyConvertibleTuple<_T1, _T2>(), 10136: bool>::type = false> 10136: explicit constexpr tuple(const _T1& __a1, const _T2& __a2) 10136: : _Inherited(__a1, __a2) { } 10136: 10136: 10136: 10136: using _TMC = _TC; 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>() 10136: && !is_same::type, 10136: allocator_arg_t>::value, 10136: bool>::type = true> 10136: constexpr tuple(_U1&& __a1, _U2&& __a2) 10136: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>() 10136: && !is_same::type, 10136: allocator_arg_t>::value, 10136: bool>::type = false> 10136: explicit constexpr tuple(_U1&& __a1, _U2&& __a2) 10136: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 10136: 10136: constexpr tuple(const tuple&) = default; 10136: 10136: constexpr tuple(tuple&&) = default; 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: constexpr tuple(const tuple<_U1, _U2>& __in) 10136: : _Inherited(static_cast&>(__in)) { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit constexpr tuple(const tuple<_U1, _U2>& __in) 10136: : _Inherited(static_cast&>(__in)) { } 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: constexpr tuple(tuple<_U1, _U2>&& __in) 10136: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit constexpr tuple(tuple<_U1, _U2>&& __in) 10136: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: constexpr tuple(const pair<_U1, _U2>& __in) 10136: : _Inherited(__in.first, __in.second) { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit constexpr tuple(const pair<_U1, _U2>& __in) 10136: : _Inherited(__in.first, __in.second) { } 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: constexpr tuple(pair<_U1, _U2>&& __in) 10136: : _Inherited(std::forward<_U1>(__in.first), 10136: std::forward<_U2>(__in.second)) { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit constexpr tuple(pair<_U1, _U2>&& __in) 10136: : _Inherited(std::forward<_U1>(__in.first), 10136: std::forward<_U2>(__in.second)) { } 10136: 10136: 10136: 10136: template 10136: tuple(allocator_arg_t __tag, const _Alloc& __a) 10136: : _Inherited(__tag, __a) { } 10136: 10136: template::template 10136: _ConstructibleTuple<_T1, _T2>() 10136: && _TCC<_Dummy>::template 10136: _ImplicitlyConvertibleTuple<_T1, _T2>(), 10136: bool>::type=true> 10136: 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const _T1& __a1, const _T2& __a2) 10136: : _Inherited(__tag, __a, __a1, __a2) { } 10136: 10136: template::template 10136: _ConstructibleTuple<_T1, _T2>() 10136: && !_TCC<_Dummy>::template 10136: _ImplicitlyConvertibleTuple<_T1, _T2>(), 10136: bool>::type=false> 10136: 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const _T1& __a1, const _T2& __a2) 10136: : _Inherited(__tag, __a, __a1, __a2) { } 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) 10136: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 10136: std::forward<_U2>(__a2)) { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: _U1&& __a1, _U2&& __a2) 10136: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 10136: std::forward<_U2>(__a2)) { } 10136: 10136: template 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 10136: : _Inherited(__tag, __a, static_cast(__in)) { } 10136: 10136: template 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 10136: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const tuple<_U1, _U2>& __in) 10136: : _Inherited(__tag, __a, 10136: static_cast&>(__in)) 10136: { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const tuple<_U1, _U2>& __in) 10136: : _Inherited(__tag, __a, 10136: static_cast&>(__in)) 10136: { } 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 10136: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 10136: { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: tuple<_U1, _U2>&& __in) 10136: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 10136: { } 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const pair<_U1, _U2>& __in) 10136: : _Inherited(__tag, __a, __in.first, __in.second) { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: const pair<_U1, _U2>& __in) 10136: : _Inherited(__tag, __a, __in.first, __in.second) { } 10136: 10136: template() 10136: && _TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = true> 10136: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 10136: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 10136: std::forward<_U2>(__in.second)) { } 10136: 10136: template() 10136: && !_TMC::template 10136: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 10136: bool>::type = false> 10136: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 10136: pair<_U1, _U2>&& __in) 10136: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 10136: std::forward<_U2>(__in.second)) { } 10136: 10136: tuple& 10136: operator=(const tuple& __in) 10136: { 10136: static_cast<_Inherited&>(*this) = __in; 10136: return *this; 10136: } 10136: 10136: tuple& 10136: operator=(tuple&& __in) 10136: noexcept(is_nothrow_move_assignable<_Inherited>::value) 10136: { 10136: static_cast<_Inherited&>(*this) = std::move(__in); 10136: return *this; 10136: } 10136: 10136: template 10136: tuple& 10136: operator=(const tuple<_U1, _U2>& __in) 10136: { 10136: static_cast<_Inherited&>(*this) = __in; 10136: return *this; 10136: } 10136: 10136: template 10136: tuple& 10136: operator=(tuple<_U1, _U2>&& __in) 10136: { 10136: static_cast<_Inherited&>(*this) = std::move(__in); 10136: return *this; 10136: } 10136: 10136: template 10136: tuple& 10136: operator=(const pair<_U1, _U2>& __in) 10136: { 10136: this->_M_head(*this) = __in.first; 10136: this->_M_tail(*this)._M_head(*this) = __in.second; 10136: return *this; 10136: } 10136: 10136: template 10136: tuple& 10136: operator=(pair<_U1, _U2>&& __in) 10136: { 10136: this->_M_head(*this) = std::forward<_U1>(__in.first); 10136: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); 10136: return *this; 10136: } 10136: 10136: void 10136: swap(tuple& __in) 10136: noexcept(noexcept(__in._M_swap(__in))) 10136: { _Inherited::_M_swap(__in); } 10136: }; 10136: 10136: 10136: 10136: template 10136: struct tuple_size> 10136: : public integral_constant { }; 10136: # 1278 "/usr/include/c++/8/tuple" 3 10136: template 10136: struct tuple_element<__i, tuple<_Head, _Tail...> > 10136: : tuple_element<__i - 1, tuple<_Tail...> > { }; 10136: 10136: 10136: 10136: 10136: template 10136: struct tuple_element<0, tuple<_Head, _Tail...> > 10136: { 10136: typedef _Head type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct tuple_element<__i, tuple<>> 10136: { 10136: static_assert(__i < tuple_size>::value, 10136: "tuple index is in range"); 10136: }; 10136: 10136: template 10136: constexpr _Head& 10136: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 10136: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 10136: 10136: template 10136: constexpr const _Head& 10136: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 10136: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 10136: 10136: 10136: template 10136: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 10136: get(tuple<_Elements...>& __t) noexcept 10136: { return std::__get_helper<__i>(__t); } 10136: 10136: 10136: template 10136: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 10136: get(const tuple<_Elements...>& __t) noexcept 10136: { return std::__get_helper<__i>(__t); } 10136: 10136: 10136: template 10136: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 10136: get(tuple<_Elements...>&& __t) noexcept 10136: { 10136: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 10136: return std::forward<__element_type&&>(std::get<__i>(__t)); 10136: } 10136: 10136: 10136: template 10136: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 10136: get(const tuple<_Elements...>&& __t) noexcept 10136: { 10136: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 10136: return std::forward(std::get<__i>(__t)); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: constexpr _Head& 10136: __get_helper2(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 10136: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 10136: 10136: template 10136: constexpr const _Head& 10136: __get_helper2(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 10136: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 10136: 10136: 10136: template 10136: constexpr _Tp& 10136: get(tuple<_Types...>& __t) noexcept 10136: { return std::__get_helper2<_Tp>(__t); } 10136: 10136: 10136: template 10136: constexpr _Tp&& 10136: get(tuple<_Types...>&& __t) noexcept 10136: { return std::forward<_Tp&&>(std::__get_helper2<_Tp>(__t)); } 10136: 10136: 10136: template 10136: constexpr const _Tp& 10136: get(const tuple<_Types...>& __t) noexcept 10136: { return std::__get_helper2<_Tp>(__t); } 10136: 10136: 10136: 10136: template 10136: constexpr const _Tp&& 10136: get(const tuple<_Types...>&& __t) noexcept 10136: { return std::forward(std::__get_helper2<_Tp>(__t)); } 10136: 10136: 10136: 10136: template 10136: struct __tuple_compare 10136: { 10136: static constexpr bool 10136: __eq(const _Tp& __t, const _Up& __u) 10136: { 10136: return bool(std::get<__i>(__t) == std::get<__i>(__u)) 10136: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); 10136: } 10136: 10136: static constexpr bool 10136: __less(const _Tp& __t, const _Up& __u) 10136: { 10136: return bool(std::get<__i>(__t) < std::get<__i>(__u)) 10136: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) 10136: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); 10136: } 10136: }; 10136: 10136: template 10136: struct __tuple_compare<_Tp, _Up, __size, __size> 10136: { 10136: static constexpr bool 10136: __eq(const _Tp&, const _Up&) { return true; } 10136: 10136: static constexpr bool 10136: __less(const _Tp&, const _Up&) { return false; } 10136: }; 10136: 10136: template 10136: constexpr bool 10136: operator==(const tuple<_TElements...>& __t, 10136: const tuple<_UElements...>& __u) 10136: { 10136: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 10136: "tuple objects can only be compared if they have equal sizes."); 10136: using __compare = __tuple_compare, 10136: tuple<_UElements...>, 10136: 0, sizeof...(_TElements)>; 10136: return __compare::__eq(__t, __u); 10136: } 10136: 10136: template 10136: constexpr bool 10136: operator<(const tuple<_TElements...>& __t, 10136: const tuple<_UElements...>& __u) 10136: { 10136: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 10136: "tuple objects can only be compared if they have equal sizes."); 10136: using __compare = __tuple_compare, 10136: tuple<_UElements...>, 10136: 0, sizeof...(_TElements)>; 10136: return __compare::__less(__t, __u); 10136: } 10136: 10136: template 10136: constexpr bool 10136: operator!=(const tuple<_TElements...>& __t, 10136: const tuple<_UElements...>& __u) 10136: { return !(__t == __u); } 10136: 10136: template 10136: constexpr bool 10136: operator>(const tuple<_TElements...>& __t, 10136: const tuple<_UElements...>& __u) 10136: { return __u < __t; } 10136: 10136: template 10136: constexpr bool 10136: operator<=(const tuple<_TElements...>& __t, 10136: const tuple<_UElements...>& __u) 10136: { return !(__u < __t); } 10136: 10136: template 10136: constexpr bool 10136: operator>=(const tuple<_TElements...>& __t, 10136: const tuple<_UElements...>& __u) 10136: { return !(__t < __u); } 10136: 10136: 10136: template 10136: constexpr tuple::__type...> 10136: make_tuple(_Elements&&... __args) 10136: { 10136: typedef tuple::__type...> 10136: __result_type; 10136: return __result_type(std::forward<_Elements>(__args)...); 10136: } 10136: 10136: 10136: 10136: template 10136: constexpr tuple<_Elements&&...> 10136: forward_as_tuple(_Elements&&... __args) noexcept 10136: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } 10136: 10136: template 10136: struct __make_tuple_impl; 10136: 10136: template 10136: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> 10136: : __make_tuple_impl<_Idx + 1, 10136: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, 10136: _Tuple, _Nm> 10136: { }; 10136: 10136: template 10136: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> 10136: { 10136: typedef tuple<_Tp...> __type; 10136: }; 10136: 10136: template 10136: struct __do_make_tuple 10136: : __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value> 10136: { }; 10136: 10136: 10136: template 10136: struct __make_tuple 10136: : public __do_make_tuple::type>::type> 10136: { }; 10136: 10136: 10136: template 10136: struct __combine_tuples; 10136: 10136: template<> 10136: struct __combine_tuples<> 10136: { 10136: typedef tuple<> __type; 10136: }; 10136: 10136: template 10136: struct __combine_tuples> 10136: { 10136: typedef tuple<_Ts...> __type; 10136: }; 10136: 10136: template 10136: struct __combine_tuples, tuple<_T2s...>, _Rem...> 10136: { 10136: typedef typename __combine_tuples, 10136: _Rem...>::__type __type; 10136: }; 10136: 10136: 10136: template 10136: struct __tuple_cat_result 10136: { 10136: typedef typename __combine_tuples 10136: ::__type...>::__type __type; 10136: }; 10136: 10136: 10136: 10136: template 10136: struct __make_1st_indices; 10136: 10136: template<> 10136: struct __make_1st_indices<> 10136: { 10136: typedef std::_Index_tuple<> __type; 10136: }; 10136: 10136: template 10136: struct __make_1st_indices<_Tp, _Tpls...> 10136: { 10136: typedef typename std::_Build_index_tuple::type>::value>::__type __type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct __tuple_concater; 10136: 10136: template 10136: struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...> 10136: { 10136: template 10136: static constexpr _Ret 10136: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) 10136: { 10136: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 10136: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; 10136: return __next::_S_do(std::forward<_Tpls>(__tps)..., 10136: std::forward<_Us>(__us)..., 10136: std::get<_Is>(std::forward<_Tp>(__tp))...); 10136: } 10136: }; 10136: 10136: template 10136: struct __tuple_concater<_Ret, std::_Index_tuple<>> 10136: { 10136: template 10136: static constexpr _Ret 10136: _S_do(_Us&&... __us) 10136: { 10136: return _Ret(std::forward<_Us>(__us)...); 10136: } 10136: }; 10136: 10136: 10136: template...>::value>::type> 10136: constexpr auto 10136: tuple_cat(_Tpls&&... __tpls) 10136: -> typename __tuple_cat_result<_Tpls...>::__type 10136: { 10136: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; 10136: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 10136: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; 10136: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: constexpr tuple<_Elements&...> 10136: tie(_Elements&... __args) noexcept 10136: { return tuple<_Elements&...>(__args...); } 10136: 10136: 10136: template 10136: inline 10136: 10136: 10136: typename enable_if<__and_<__is_swappable<_Elements>...>::value 10136: >::type 10136: 10136: 10136: 10136: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) 10136: noexcept(noexcept(__x.swap(__y))) 10136: { __x.swap(__y); } 10136: 10136: 10136: template 10136: typename enable_if...>::value>::type 10136: swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete; 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct _Swallow_assign 10136: { 10136: template 10136: constexpr const _Swallow_assign& 10136: operator=(const _Tp&) const 10136: { return *this; } 10136: }; 10136: 10136: 10136: 10136: constexpr _Swallow_assign ignore{}; 10136: 10136: 10136: template 10136: struct uses_allocator, _Alloc> : true_type { }; 10136: 10136: 10136: template 10136: template 10136: inline 10136: pair<_T1, _T2>:: 10136: pair(piecewise_construct_t, 10136: tuple<_Args1...> __first, tuple<_Args2...> __second) 10136: : pair(__first, __second, 10136: typename _Build_index_tuple::__type(), 10136: typename _Build_index_tuple::__type()) 10136: { } 10136: 10136: template 10136: template 10136: inline 10136: pair<_T1, _T2>:: 10136: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, 10136: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) 10136: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), 10136: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) 10136: { } 10136: # 1711 "/usr/include/c++/8/tuple" 3 10136: 10136: } 10136: # 38 "/usr/include/c++/8/bits/unique_ptr.h" 2 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: template class auto_ptr; 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: 10136: template 10136: struct default_delete 10136: { 10136: 10136: constexpr default_delete() noexcept = default; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template::value>::type> 10136: default_delete(const default_delete<_Up>&) noexcept { } 10136: 10136: 10136: void 10136: operator()(_Tp* __ptr) const 10136: { 10136: static_assert(!is_void<_Tp>::value, 10136: "can't delete pointer to incomplete type"); 10136: static_assert(sizeof(_Tp)>0, 10136: "can't delete pointer to incomplete type"); 10136: delete __ptr; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct default_delete<_Tp[]> 10136: { 10136: public: 10136: 10136: constexpr default_delete() noexcept = default; 10136: # 104 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: template::value>::type> 10136: default_delete(const default_delete<_Up[]>&) noexcept { } 10136: 10136: 10136: template 10136: typename enable_if::value>::type 10136: operator()(_Up* __ptr) const 10136: { 10136: static_assert(sizeof(_Tp)>0, 10136: "can't delete pointer to incomplete type"); 10136: delete [] __ptr; 10136: } 10136: }; 10136: 10136: template 10136: class __uniq_ptr_impl 10136: { 10136: template 10136: struct _Ptr 10136: { 10136: using type = _Up*; 10136: }; 10136: 10136: template 10136: struct 10136: _Ptr<_Up, _Ep, __void_t::type::pointer>> 10136: { 10136: using type = typename remove_reference<_Ep>::type::pointer; 10136: }; 10136: 10136: public: 10136: using _DeleterConstraint = enable_if< 10136: __and_<__not_>, 10136: is_default_constructible<_Dp>>::value>; 10136: 10136: using pointer = typename _Ptr<_Tp, _Dp>::type; 10136: 10136: __uniq_ptr_impl() = default; 10136: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } 10136: 10136: template 10136: __uniq_ptr_impl(pointer __p, _Del&& __d) 10136: : _M_t(__p, std::forward<_Del>(__d)) { } 10136: 10136: pointer& _M_ptr() { return std::get<0>(_M_t); } 10136: pointer _M_ptr() const { return std::get<0>(_M_t); } 10136: _Dp& _M_deleter() { return std::get<1>(_M_t); } 10136: const _Dp& _M_deleter() const { return std::get<1>(_M_t); } 10136: 10136: private: 10136: tuple _M_t; 10136: }; 10136: 10136: 10136: template > 10136: class unique_ptr 10136: { 10136: template 10136: using _DeleterConstraint = 10136: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 10136: 10136: __uniq_ptr_impl<_Tp, _Dp> _M_t; 10136: 10136: public: 10136: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 10136: using element_type = _Tp; 10136: using deleter_type = _Dp; 10136: 10136: 10136: 10136: template 10136: using __safe_conversion_up = __and_< 10136: is_convertible::pointer, pointer>, 10136: __not_>, 10136: __or_<__and_, 10136: is_same>, 10136: __and_<__not_>, 10136: is_convertible<_Ep, deleter_type>> 10136: > 10136: >; 10136: 10136: 10136: 10136: 10136: template > 10136: constexpr unique_ptr() noexcept 10136: : _M_t() 10136: { } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template > 10136: explicit 10136: unique_ptr(pointer __p) noexcept 10136: : _M_t(__p) 10136: { } 10136: # 215 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: unique_ptr(pointer __p, 10136: typename conditional::value, 10136: deleter_type, const deleter_type&>::type __d) noexcept 10136: : _M_t(__p, __d) { } 10136: # 227 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: unique_ptr(pointer __p, 10136: typename remove_reference::type&& __d) noexcept 10136: : _M_t(std::move(__p), std::move(__d)) 10136: { static_assert(!std::is_reference::value, 10136: "rvalue deleter bound to reference"); } 10136: 10136: 10136: template > 10136: constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } 10136: 10136: 10136: 10136: 10136: unique_ptr(unique_ptr&& __u) noexcept 10136: : _M_t(__u.release(), std::forward(__u.get_deleter())) { } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template, 10136: typename conditional::value, 10136: is_same<_Ep, _Dp>, 10136: is_convertible<_Ep, _Dp>>::type>> 10136: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 10136: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 10136: { } 10136: 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: 10136: template, is_same<_Dp, default_delete<_Tp>>>> 10136: unique_ptr(auto_ptr<_Up>&& __u) noexcept; 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: 10136: ~unique_ptr() noexcept 10136: { 10136: auto& __ptr = _M_t._M_ptr(); 10136: if (__ptr != nullptr) 10136: get_deleter()(__ptr); 10136: __ptr = pointer(); 10136: } 10136: # 286 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: unique_ptr& 10136: operator=(unique_ptr&& __u) noexcept 10136: { 10136: reset(__u.release()); 10136: get_deleter() = std::forward(__u.get_deleter()); 10136: return *this; 10136: } 10136: # 301 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: template 10136: typename enable_if< __and_< 10136: __safe_conversion_up<_Up, _Ep>, 10136: is_assignable 10136: >::value, 10136: unique_ptr&>::type 10136: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 10136: { 10136: reset(__u.release()); 10136: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 10136: return *this; 10136: } 10136: 10136: 10136: unique_ptr& 10136: operator=(nullptr_t) noexcept 10136: { 10136: reset(); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: typename add_lvalue_reference::type 10136: operator*() const 10136: { 10136: ; 10136: return *get(); 10136: } 10136: 10136: 10136: pointer 10136: operator->() const noexcept 10136: { 10136: ; 10136: return get(); 10136: } 10136: 10136: 10136: pointer 10136: get() const noexcept 10136: { return _M_t._M_ptr(); } 10136: 10136: 10136: deleter_type& 10136: get_deleter() noexcept 10136: { return _M_t._M_deleter(); } 10136: 10136: 10136: const deleter_type& 10136: get_deleter() const noexcept 10136: { return _M_t._M_deleter(); } 10136: 10136: 10136: explicit operator bool() const noexcept 10136: { return get() == pointer() ? false : true; } 10136: 10136: 10136: 10136: 10136: pointer 10136: release() noexcept 10136: { 10136: pointer __p = get(); 10136: _M_t._M_ptr() = pointer(); 10136: return __p; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void 10136: reset(pointer __p = pointer()) noexcept 10136: { 10136: using std::swap; 10136: swap(_M_t._M_ptr(), __p); 10136: if (__p != pointer()) 10136: get_deleter()(__p); 10136: } 10136: 10136: 10136: void 10136: swap(unique_ptr& __u) noexcept 10136: { 10136: using std::swap; 10136: swap(_M_t, __u._M_t); 10136: } 10136: 10136: 10136: unique_ptr(const unique_ptr&) = delete; 10136: unique_ptr& operator=(const unique_ptr&) = delete; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class unique_ptr<_Tp[], _Dp> 10136: { 10136: template 10136: using _DeleterConstraint = 10136: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 10136: 10136: __uniq_ptr_impl<_Tp, _Dp> _M_t; 10136: 10136: template 10136: using __remove_cv = typename remove_cv<_Up>::type; 10136: 10136: 10136: template 10136: using __is_derived_Tp 10136: = __and_< is_base_of<_Tp, _Up>, 10136: __not_, __remove_cv<_Up>>> >; 10136: 10136: public: 10136: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 10136: using element_type = _Tp; 10136: using deleter_type = _Dp; 10136: 10136: 10136: 10136: template, 10136: typename _Up_element_type = typename _Up_up::element_type> 10136: using __safe_conversion_up = __and_< 10136: is_array<_Up>, 10136: is_same, 10136: is_same, 10136: is_convertible<_Up_element_type(*)[], element_type(*)[]>, 10136: __or_<__and_, is_same>, 10136: __and_<__not_>, 10136: is_convertible<_Ep, deleter_type>>> 10136: >; 10136: 10136: 10136: template 10136: using __safe_conversion_raw = __and_< 10136: __or_<__or_, 10136: is_same<_Up, nullptr_t>>, 10136: __and_, 10136: is_same, 10136: is_convertible< 10136: typename remove_pointer<_Up>::type(*)[], 10136: element_type(*)[]> 10136: > 10136: > 10136: >; 10136: 10136: 10136: 10136: 10136: template > 10136: constexpr unique_ptr() noexcept 10136: : _M_t() 10136: { } 10136: # 470 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: template, 10136: typename = typename enable_if< 10136: __safe_conversion_raw<_Up>::value, bool>::type> 10136: explicit 10136: unique_ptr(_Up __p) noexcept 10136: : _M_t(__p) 10136: { } 10136: # 488 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: template::value, bool>::type> 10136: unique_ptr(_Up __p, 10136: typename conditional::value, 10136: deleter_type, const deleter_type&>::type __d) noexcept 10136: : _M_t(__p, __d) { } 10136: # 504 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: template::value, bool>::type> 10136: unique_ptr(_Up __p, typename 10136: remove_reference::type&& __d) noexcept 10136: : _M_t(std::move(__p), std::move(__d)) 10136: { static_assert(!is_reference::value, 10136: "rvalue deleter bound to reference"); } 10136: 10136: 10136: unique_ptr(unique_ptr&& __u) noexcept 10136: : _M_t(__u.release(), std::forward(__u.get_deleter())) { } 10136: 10136: 10136: template > 10136: constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } 10136: 10136: template>> 10136: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 10136: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 10136: { } 10136: 10136: 10136: ~unique_ptr() 10136: { 10136: auto& __ptr = _M_t._M_ptr(); 10136: if (__ptr != nullptr) 10136: get_deleter()(__ptr); 10136: __ptr = pointer(); 10136: } 10136: # 545 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: unique_ptr& 10136: operator=(unique_ptr&& __u) noexcept 10136: { 10136: reset(__u.release()); 10136: get_deleter() = std::forward(__u.get_deleter()); 10136: return *this; 10136: } 10136: # 560 "/usr/include/c++/8/bits/unique_ptr.h" 3 10136: template 10136: typename 10136: enable_if<__and_<__safe_conversion_up<_Up, _Ep>, 10136: is_assignable 10136: >::value, 10136: unique_ptr&>::type 10136: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 10136: { 10136: reset(__u.release()); 10136: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 10136: return *this; 10136: } 10136: 10136: 10136: unique_ptr& 10136: operator=(nullptr_t) noexcept 10136: { 10136: reset(); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: typename std::add_lvalue_reference::type 10136: operator[](size_t __i) const 10136: { 10136: ; 10136: return get()[__i]; 10136: } 10136: 10136: 10136: pointer 10136: get() const noexcept 10136: { return _M_t._M_ptr(); } 10136: 10136: 10136: deleter_type& 10136: get_deleter() noexcept 10136: { return _M_t._M_deleter(); } 10136: 10136: 10136: const deleter_type& 10136: get_deleter() const noexcept 10136: { return _M_t._M_deleter(); } 10136: 10136: 10136: explicit operator bool() const noexcept 10136: { return get() == pointer() ? false : true; } 10136: 10136: 10136: 10136: 10136: pointer 10136: release() noexcept 10136: { 10136: pointer __p = get(); 10136: _M_t._M_ptr() = pointer(); 10136: return __p; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template , 10136: __and_, 10136: is_pointer<_Up>, 10136: is_convertible< 10136: typename remove_pointer<_Up>::type(*)[], 10136: element_type(*)[] 10136: > 10136: > 10136: > 10136: >> 10136: void 10136: reset(_Up __p) noexcept 10136: { 10136: pointer __ptr = __p; 10136: using std::swap; 10136: swap(_M_t._M_ptr(), __ptr); 10136: if (__ptr != nullptr) 10136: get_deleter()(__ptr); 10136: } 10136: 10136: void reset(nullptr_t = nullptr) noexcept 10136: { 10136: reset(pointer()); 10136: } 10136: 10136: 10136: void 10136: swap(unique_ptr& __u) noexcept 10136: { 10136: using std::swap; 10136: swap(_M_t, __u._M_t); 10136: } 10136: 10136: 10136: unique_ptr(const unique_ptr&) = delete; 10136: unique_ptr& operator=(const unique_ptr&) = delete; 10136: }; 10136: 10136: template 10136: inline 10136: 10136: 10136: typename enable_if<__is_swappable<_Dp>::value>::type 10136: 10136: 10136: 10136: swap(unique_ptr<_Tp, _Dp>& __x, 10136: unique_ptr<_Tp, _Dp>& __y) noexcept 10136: { __x.swap(__y); } 10136: 10136: 10136: template 10136: typename enable_if::value>::type 10136: swap(unique_ptr<_Tp, _Dp>&, 10136: unique_ptr<_Tp, _Dp>&) = delete; 10136: 10136: 10136: template 10136: inline bool 10136: operator==(const unique_ptr<_Tp, _Dp>& __x, 10136: const unique_ptr<_Up, _Ep>& __y) 10136: { return __x.get() == __y.get(); } 10136: 10136: template 10136: inline bool 10136: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 10136: { return !__x; } 10136: 10136: template 10136: inline bool 10136: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 10136: { return !__x; } 10136: 10136: template 10136: inline bool 10136: operator!=(const unique_ptr<_Tp, _Dp>& __x, 10136: const unique_ptr<_Up, _Ep>& __y) 10136: { return __x.get() != __y.get(); } 10136: 10136: template 10136: inline bool 10136: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 10136: { return (bool)__x; } 10136: 10136: template 10136: inline bool 10136: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 10136: { return (bool)__x; } 10136: 10136: template 10136: inline bool 10136: operator<(const unique_ptr<_Tp, _Dp>& __x, 10136: const unique_ptr<_Up, _Ep>& __y) 10136: { 10136: typedef typename 10136: std::common_type::pointer, 10136: typename unique_ptr<_Up, _Ep>::pointer>::type _CT; 10136: return std::less<_CT>()(__x.get(), __y.get()); 10136: } 10136: 10136: template 10136: inline bool 10136: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 10136: { return std::less::pointer>()(__x.get(), 10136: nullptr); } 10136: 10136: template 10136: inline bool 10136: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 10136: { return std::less::pointer>()(nullptr, 10136: __x.get()); } 10136: 10136: template 10136: inline bool 10136: operator<=(const unique_ptr<_Tp, _Dp>& __x, 10136: const unique_ptr<_Up, _Ep>& __y) 10136: { return !(__y < __x); } 10136: 10136: template 10136: inline bool 10136: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 10136: { return !(nullptr < __x); } 10136: 10136: template 10136: inline bool 10136: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 10136: { return !(__x < nullptr); } 10136: 10136: template 10136: inline bool 10136: operator>(const unique_ptr<_Tp, _Dp>& __x, 10136: const unique_ptr<_Up, _Ep>& __y) 10136: { return (__y < __x); } 10136: 10136: template 10136: inline bool 10136: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 10136: { return std::less::pointer>()(nullptr, 10136: __x.get()); } 10136: 10136: template 10136: inline bool 10136: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 10136: { return std::less::pointer>()(__x.get(), 10136: nullptr); } 10136: 10136: template 10136: inline bool 10136: operator>=(const unique_ptr<_Tp, _Dp>& __x, 10136: const unique_ptr<_Up, _Ep>& __y) 10136: { return !(__x < __y); } 10136: 10136: template 10136: inline bool 10136: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 10136: { return !(__x < nullptr); } 10136: 10136: template 10136: inline bool 10136: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 10136: { return !(nullptr < __x); } 10136: 10136: 10136: template 10136: struct hash> 10136: : public __hash_base>, 10136: private __poison_hash::pointer> 10136: { 10136: size_t 10136: operator()(const unique_ptr<_Tp, _Dp>& __u) const noexcept 10136: { 10136: typedef unique_ptr<_Tp, _Dp> _UP; 10136: return std::hash()(__u.get()); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct _MakeUniq 10136: { typedef unique_ptr<_Tp> __single_object; }; 10136: 10136: template 10136: struct _MakeUniq<_Tp[]> 10136: { typedef unique_ptr<_Tp[]> __array; }; 10136: 10136: template 10136: struct _MakeUniq<_Tp[_Bound]> 10136: { struct __invalid_type { }; }; 10136: 10136: 10136: template 10136: inline typename _MakeUniq<_Tp>::__single_object 10136: make_unique(_Args&&... __args) 10136: { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); } 10136: 10136: 10136: template 10136: inline typename _MakeUniq<_Tp>::__array 10136: make_unique(size_t __num) 10136: { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]()); } 10136: 10136: 10136: template 10136: inline typename _MakeUniq<_Tp>::__invalid_type 10136: make_unique(_Args&&...) = delete; 10136: 10136: 10136: 10136: 10136: 10136: } 10136: # 81 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/bits/shared_ptr.h" 1 3 10136: # 52 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: # 1 "/usr/include/c++/8/bits/shared_ptr_base.h" 1 3 10136: # 55 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 10136: # 1 "/usr/include/c++/8/bits/allocated_ptr.h" 1 3 10136: # 40 "/usr/include/c++/8/bits/allocated_ptr.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: template 10136: struct __allocated_ptr 10136: { 10136: using pointer = typename allocator_traits<_Alloc>::pointer; 10136: using value_type = typename allocator_traits<_Alloc>::value_type; 10136: 10136: 10136: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept 10136: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr) 10136: { } 10136: 10136: 10136: template>> 10136: __allocated_ptr(_Alloc& __a, _Ptr __ptr) 10136: : _M_alloc(std::__addressof(__a)), 10136: _M_ptr(pointer_traits::pointer_to(*__ptr)) 10136: { } 10136: 10136: 10136: __allocated_ptr(__allocated_ptr&& __gd) noexcept 10136: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) 10136: { __gd._M_ptr = nullptr; } 10136: 10136: 10136: ~__allocated_ptr() 10136: { 10136: if (_M_ptr != nullptr) 10136: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); 10136: } 10136: 10136: 10136: __allocated_ptr& 10136: operator=(std::nullptr_t) noexcept 10136: { 10136: _M_ptr = nullptr; 10136: return *this; 10136: } 10136: 10136: 10136: value_type* get() { return std::__to_address(_M_ptr); } 10136: 10136: private: 10136: _Alloc* _M_alloc; 10136: pointer _M_ptr; 10136: }; 10136: 10136: 10136: template 10136: __allocated_ptr<_Alloc> 10136: __allocate_guarded(_Alloc& __a) 10136: { 10136: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) }; 10136: } 10136: 10136: 10136: } 10136: # 56 "/usr/include/c++/8/bits/shared_ptr_base.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/refwrap.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/refwrap.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/refwrap.h" 3 10136: # 43 "/usr/include/c++/8/bits/refwrap.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct _Maybe_unary_or_binary_function { }; 10136: 10136: 10136: template 10136: struct _Maybe_unary_or_binary_function<_Res, _T1> 10136: : std::unary_function<_T1, _Res> { }; 10136: 10136: 10136: template 10136: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> 10136: : std::binary_function<_T1, _T2, _Res> { }; 10136: 10136: template 10136: struct _Mem_fn_traits; 10136: 10136: template 10136: struct _Mem_fn_traits_base 10136: { 10136: using __result_type = _Res; 10136: using __maybe_type 10136: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; 10136: using __arity = integral_constant; 10136: }; 10136: # 97 "/usr/include/c++/8/bits/refwrap.h" 3 10136: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 10136: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 10136: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 10136: # 111 "/usr/include/c++/8/bits/refwrap.h" 3 10136: template> 10136: struct _Maybe_get_result_type 10136: { }; 10136: 10136: template 10136: struct _Maybe_get_result_type<_Functor, 10136: __void_t> 10136: { typedef typename _Functor::result_type result_type; }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct _Weak_result_type_impl 10136: : _Maybe_get_result_type<_Functor> 10136: { }; 10136: 10136: 10136: template 10136: struct _Weak_result_type_impl<_Res(_ArgTypes...) > 10136: { typedef _Res result_type; }; 10136: 10136: 10136: template 10136: struct _Weak_result_type_impl<_Res(_ArgTypes......) > 10136: { typedef _Res result_type; }; 10136: 10136: 10136: template 10136: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) > 10136: { typedef _Res result_type; }; 10136: 10136: 10136: template 10136: struct 10136: _Weak_result_type_impl<_Res(*)(_ArgTypes......) > 10136: { typedef _Res result_type; }; 10136: 10136: 10136: template::value> 10136: struct _Weak_result_type_memfun 10136: : _Weak_result_type_impl<_Functor> 10136: { }; 10136: 10136: 10136: template 10136: struct _Weak_result_type_memfun<_MemFunPtr, true> 10136: { 10136: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 10136: }; 10136: 10136: 10136: template 10136: struct _Weak_result_type_memfun<_Func _Class::*, false> 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct _Weak_result_type 10136: : _Weak_result_type_memfun::type> 10136: { }; 10136: 10136: 10136: template> 10136: struct _Refwrap_base_arg1 10136: { }; 10136: 10136: 10136: template 10136: struct _Refwrap_base_arg1<_Tp, 10136: __void_t> 10136: { 10136: typedef typename _Tp::argument_type argument_type; 10136: }; 10136: 10136: 10136: template> 10136: struct _Refwrap_base_arg2 10136: { }; 10136: 10136: 10136: template 10136: struct _Refwrap_base_arg2<_Tp, 10136: __void_t> 10136: { 10136: typedef typename _Tp::first_argument_type first_argument_type; 10136: typedef typename _Tp::second_argument_type second_argument_type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct _Reference_wrapper_base 10136: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> 10136: { }; 10136: 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(_T1) > 10136: : unary_function<_T1, _Res> 10136: { }; 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(_T1) const> 10136: : unary_function<_T1, _Res> 10136: { }; 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(_T1) volatile> 10136: : unary_function<_T1, _Res> 10136: { }; 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(_T1) const volatile> 10136: : unary_function<_T1, _Res> 10136: { }; 10136: 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(_T1, _T2) > 10136: : binary_function<_T1, _T2, _Res> 10136: { }; 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(_T1, _T2) const> 10136: : binary_function<_T1, _T2, _Res> 10136: { }; 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> 10136: : binary_function<_T1, _T2, _Res> 10136: { }; 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> 10136: : binary_function<_T1, _T2, _Res> 10136: { }; 10136: 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(*)(_T1) > 10136: : unary_function<_T1, _Res> 10136: { }; 10136: 10136: 10136: template 10136: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) > 10136: : binary_function<_T1, _T2, _Res> 10136: { }; 10136: 10136: template::value> 10136: struct _Reference_wrapper_base_memfun 10136: : _Reference_wrapper_base<_Tp> 10136: { }; 10136: 10136: template 10136: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> 10136: : _Mem_fn_traits<_MemFunPtr>::__maybe_type 10136: { 10136: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class reference_wrapper 10136: : public _Reference_wrapper_base_memfun::type> 10136: { 10136: _Tp* _M_data; 10136: 10136: public: 10136: typedef _Tp type; 10136: 10136: reference_wrapper(_Tp& __indata) noexcept 10136: : _M_data(std::__addressof(__indata)) 10136: { } 10136: 10136: reference_wrapper(_Tp&&) = delete; 10136: 10136: reference_wrapper(const reference_wrapper&) = default; 10136: 10136: reference_wrapper& 10136: operator=(const reference_wrapper&) = default; 10136: 10136: operator _Tp&() const noexcept 10136: { return this->get(); } 10136: 10136: _Tp& 10136: get() const noexcept 10136: { return *_M_data; } 10136: 10136: template 10136: typename result_of<_Tp&(_Args&&...)>::type 10136: operator()(_Args&&... __args) const 10136: { 10136: return std::__invoke(get(), std::forward<_Args>(__args)...); 10136: } 10136: }; 10136: 10136: 10136: 10136: template 10136: inline reference_wrapper<_Tp> 10136: ref(_Tp& __t) noexcept 10136: { return reference_wrapper<_Tp>(__t); } 10136: 10136: 10136: template 10136: inline reference_wrapper 10136: cref(const _Tp& __t) noexcept 10136: { return reference_wrapper(__t); } 10136: 10136: template 10136: void ref(const _Tp&&) = delete; 10136: 10136: template 10136: void cref(const _Tp&&) = delete; 10136: 10136: 10136: template 10136: inline reference_wrapper<_Tp> 10136: ref(reference_wrapper<_Tp> __t) noexcept 10136: { return __t; } 10136: 10136: 10136: template 10136: inline reference_wrapper 10136: cref(reference_wrapper<_Tp> __t) noexcept 10136: { return { __t.get() }; } 10136: 10136: 10136: 10136: 10136: } 10136: # 57 "/usr/include/c++/8/bits/shared_ptr_base.h" 2 3 10136: 10136: # 1 "/usr/include/c++/8/ext/aligned_buffer.h" 1 3 10136: # 32 "/usr/include/c++/8/ext/aligned_buffer.h" 3 10136: 10136: # 33 "/usr/include/c++/8/ext/aligned_buffer.h" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace __gnu_cxx 10136: { 10136: 10136: 10136: 10136: 10136: template 10136: struct __aligned_membuf 10136: { 10136: 10136: 10136: 10136: struct _Tp2 { _Tp _M_t; }; 10136: 10136: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; 10136: 10136: __aligned_membuf() = default; 10136: 10136: 10136: __aligned_membuf(std::nullptr_t) { } 10136: 10136: void* 10136: _M_addr() noexcept 10136: { return static_cast(&_M_storage); } 10136: 10136: const void* 10136: _M_addr() const noexcept 10136: { return static_cast(&_M_storage); } 10136: 10136: _Tp* 10136: _M_ptr() noexcept 10136: { return static_cast<_Tp*>(_M_addr()); } 10136: 10136: const _Tp* 10136: _M_ptr() const noexcept 10136: { return static_cast(_M_addr()); } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __aligned_buffer 10136: : std::aligned_storage::value> 10136: { 10136: typename 10136: std::aligned_storage::value>::type 10136: _M_storage; 10136: 10136: __aligned_buffer() = default; 10136: 10136: 10136: __aligned_buffer(std::nullptr_t) { } 10136: 10136: void* 10136: _M_addr() noexcept 10136: { 10136: return static_cast(&_M_storage); 10136: } 10136: 10136: const void* 10136: _M_addr() const noexcept 10136: { 10136: return static_cast(&_M_storage); 10136: } 10136: 10136: _Tp* 10136: _M_ptr() noexcept 10136: { return static_cast<_Tp*>(_M_addr()); } 10136: 10136: const _Tp* 10136: _M_ptr() const noexcept 10136: { return static_cast(_M_addr()); } 10136: }; 10136: 10136: } 10136: # 59 "/usr/include/c++/8/bits/shared_ptr_base.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: template class auto_ptr; 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: 10136: 10136: 10136: 10136: class bad_weak_ptr : public std::exception 10136: { 10136: public: 10136: virtual char const* what() const noexcept; 10136: 10136: virtual ~bad_weak_ptr() noexcept; 10136: }; 10136: 10136: 10136: inline void 10136: __throw_bad_weak_ptr() 10136: { (throw (bad_weak_ptr())); } 10136: 10136: using __gnu_cxx::_Lock_policy; 10136: using __gnu_cxx::__default_lock_policy; 10136: using __gnu_cxx::_S_single; 10136: using __gnu_cxx::_S_mutex; 10136: using __gnu_cxx::_S_atomic; 10136: 10136: 10136: template<_Lock_policy _Lp> 10136: class _Mutex_base 10136: { 10136: protected: 10136: 10136: enum { _S_need_barriers = 0 }; 10136: }; 10136: 10136: template<> 10136: class _Mutex_base<_S_mutex> 10136: : public __gnu_cxx::__mutex 10136: { 10136: protected: 10136: 10136: 10136: 10136: enum { _S_need_barriers = 1 }; 10136: }; 10136: 10136: template<_Lock_policy _Lp = __default_lock_policy> 10136: class _Sp_counted_base 10136: : public _Mutex_base<_Lp> 10136: { 10136: public: 10136: _Sp_counted_base() noexcept 10136: : _M_use_count(1), _M_weak_count(1) { } 10136: 10136: virtual 10136: ~_Sp_counted_base() noexcept 10136: { } 10136: 10136: 10136: 10136: virtual void 10136: _M_dispose() noexcept = 0; 10136: 10136: 10136: virtual void 10136: _M_destroy() noexcept 10136: { delete this; } 10136: 10136: virtual void* 10136: _M_get_deleter(const std::type_info&) noexcept = 0; 10136: 10136: void 10136: _M_add_ref_copy() 10136: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } 10136: 10136: void 10136: _M_add_ref_lock(); 10136: 10136: bool 10136: _M_add_ref_lock_nothrow(); 10136: 10136: void 10136: _M_release() noexcept 10136: { 10136: 10136: ; 10136: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 10136: { 10136: ; 10136: _M_dispose(); 10136: 10136: 10136: 10136: 10136: if (_Mutex_base<_Lp>::_S_need_barriers) 10136: { 10136: __atomic_thread_fence (4); 10136: } 10136: 10136: 10136: ; 10136: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, 10136: -1) == 1) 10136: { 10136: ; 10136: _M_destroy(); 10136: } 10136: } 10136: } 10136: 10136: void 10136: _M_weak_add_ref() noexcept 10136: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } 10136: 10136: void 10136: _M_weak_release() noexcept 10136: { 10136: 10136: ; 10136: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) 10136: { 10136: ; 10136: if (_Mutex_base<_Lp>::_S_need_barriers) 10136: { 10136: 10136: 10136: __atomic_thread_fence (4); 10136: } 10136: _M_destroy(); 10136: } 10136: } 10136: 10136: long 10136: _M_get_use_count() const noexcept 10136: { 10136: 10136: 10136: return __atomic_load_n(&_M_use_count, 0); 10136: } 10136: 10136: private: 10136: _Sp_counted_base(_Sp_counted_base const&) = delete; 10136: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; 10136: 10136: _Atomic_word _M_use_count; 10136: _Atomic_word _M_weak_count; 10136: }; 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_base<_S_single>:: 10136: _M_add_ref_lock() 10136: { 10136: if (_M_use_count == 0) 10136: __throw_bad_weak_ptr(); 10136: ++_M_use_count; 10136: } 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_base<_S_mutex>:: 10136: _M_add_ref_lock() 10136: { 10136: __gnu_cxx::__scoped_lock sentry(*this); 10136: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) 10136: { 10136: _M_use_count = 0; 10136: __throw_bad_weak_ptr(); 10136: } 10136: } 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_base<_S_atomic>:: 10136: _M_add_ref_lock() 10136: { 10136: 10136: _Atomic_word __count = _M_get_use_count(); 10136: do 10136: { 10136: if (__count == 0) 10136: __throw_bad_weak_ptr(); 10136: 10136: 10136: } 10136: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, 10136: true, 4, 10136: 0)); 10136: } 10136: 10136: template<> 10136: inline bool 10136: _Sp_counted_base<_S_single>:: 10136: _M_add_ref_lock_nothrow() 10136: { 10136: if (_M_use_count == 0) 10136: return false; 10136: ++_M_use_count; 10136: return true; 10136: } 10136: 10136: template<> 10136: inline bool 10136: _Sp_counted_base<_S_mutex>:: 10136: _M_add_ref_lock_nothrow() 10136: { 10136: __gnu_cxx::__scoped_lock sentry(*this); 10136: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) 10136: { 10136: _M_use_count = 0; 10136: return false; 10136: } 10136: return true; 10136: } 10136: 10136: template<> 10136: inline bool 10136: _Sp_counted_base<_S_atomic>:: 10136: _M_add_ref_lock_nothrow() 10136: { 10136: 10136: _Atomic_word __count = _M_get_use_count(); 10136: do 10136: { 10136: if (__count == 0) 10136: return false; 10136: 10136: 10136: } 10136: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, 10136: true, 4, 10136: 0)); 10136: return true; 10136: } 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_base<_S_single>::_M_add_ref_copy() 10136: { ++_M_use_count; } 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_base<_S_single>::_M_release() noexcept 10136: { 10136: if (--_M_use_count == 0) 10136: { 10136: _M_dispose(); 10136: if (--_M_weak_count == 0) 10136: _M_destroy(); 10136: } 10136: } 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept 10136: { ++_M_weak_count; } 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_base<_S_single>::_M_weak_release() noexcept 10136: { 10136: if (--_M_weak_count == 0) 10136: _M_destroy(); 10136: } 10136: 10136: template<> 10136: inline long 10136: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept 10136: { return _M_use_count; } 10136: 10136: 10136: 10136: template 10136: class __shared_ptr; 10136: 10136: template 10136: class __weak_ptr; 10136: 10136: template 10136: class __enable_shared_from_this; 10136: 10136: template 10136: class shared_ptr; 10136: 10136: template 10136: class weak_ptr; 10136: 10136: template 10136: struct owner_less; 10136: 10136: template 10136: class enable_shared_from_this; 10136: 10136: template<_Lock_policy _Lp = __default_lock_policy> 10136: class __weak_count; 10136: 10136: template<_Lock_policy _Lp = __default_lock_policy> 10136: class __shared_count; 10136: 10136: 10136: 10136: template 10136: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> 10136: { 10136: public: 10136: explicit 10136: _Sp_counted_ptr(_Ptr __p) noexcept 10136: : _M_ptr(__p) { } 10136: 10136: virtual void 10136: _M_dispose() noexcept 10136: { delete _M_ptr; } 10136: 10136: virtual void 10136: _M_destroy() noexcept 10136: { delete this; } 10136: 10136: virtual void* 10136: _M_get_deleter(const std::type_info&) noexcept 10136: { return nullptr; } 10136: 10136: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; 10136: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; 10136: 10136: private: 10136: _Ptr _M_ptr; 10136: }; 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_ptr::_M_dispose() noexcept { } 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_ptr::_M_dispose() noexcept { } 10136: 10136: template<> 10136: inline void 10136: _Sp_counted_ptr::_M_dispose() noexcept { } 10136: 10136: template 10136: struct _Sp_ebo_helper; 10136: 10136: 10136: template 10136: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp 10136: { 10136: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { } 10136: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { } 10136: 10136: static _Tp& 10136: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); } 10136: }; 10136: 10136: 10136: template 10136: struct _Sp_ebo_helper<_Nm, _Tp, false> 10136: { 10136: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { } 10136: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { } 10136: 10136: static _Tp& 10136: _S_get(_Sp_ebo_helper& __eboh) 10136: { return __eboh._M_tp; } 10136: 10136: private: 10136: _Tp _M_tp; 10136: }; 10136: 10136: 10136: template 10136: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> 10136: { 10136: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc> 10136: { 10136: typedef _Sp_ebo_helper<0, _Deleter> _Del_base; 10136: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base; 10136: 10136: public: 10136: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 10136: : _M_ptr(__p), _Del_base(std::move(__d)), _Alloc_base(__a) 10136: { } 10136: 10136: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); } 10136: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); } 10136: 10136: _Ptr _M_ptr; 10136: }; 10136: 10136: public: 10136: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>; 10136: 10136: 10136: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept 10136: : _M_impl(__p, std::move(__d), _Alloc()) { } 10136: 10136: 10136: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 10136: : _M_impl(__p, std::move(__d), __a) { } 10136: 10136: ~_Sp_counted_deleter() noexcept { } 10136: 10136: virtual void 10136: _M_dispose() noexcept 10136: { _M_impl._M_del()(_M_impl._M_ptr); } 10136: 10136: virtual void 10136: _M_destroy() noexcept 10136: { 10136: __allocator_type __a(_M_impl._M_alloc()); 10136: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 10136: this->~_Sp_counted_deleter(); 10136: } 10136: 10136: virtual void* 10136: _M_get_deleter(const std::type_info& __ti) noexcept 10136: { 10136: 10136: 10136: 10136: return __ti == typeid(_Deleter) 10136: ? std::__addressof(_M_impl._M_del()) 10136: : nullptr; 10136: 10136: 10136: 10136: } 10136: 10136: private: 10136: _Impl _M_impl; 10136: }; 10136: 10136: 10136: 10136: struct _Sp_make_shared_tag 10136: { 10136: # 523 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 10136: }; 10136: 10136: template 10136: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> 10136: { 10136: class _Impl : _Sp_ebo_helper<0, _Alloc> 10136: { 10136: typedef _Sp_ebo_helper<0, _Alloc> _A_base; 10136: 10136: public: 10136: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { } 10136: 10136: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); } 10136: 10136: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; 10136: }; 10136: 10136: public: 10136: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; 10136: 10136: template 10136: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) 10136: : _M_impl(__a) 10136: { 10136: 10136: 10136: allocator_traits<_Alloc>::construct(__a, _M_ptr(), 10136: std::forward<_Args>(__args)...); 10136: } 10136: 10136: ~_Sp_counted_ptr_inplace() noexcept { } 10136: 10136: virtual void 10136: _M_dispose() noexcept 10136: { 10136: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); 10136: } 10136: 10136: 10136: virtual void 10136: _M_destroy() noexcept 10136: { 10136: __allocator_type __a(_M_impl._M_alloc()); 10136: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 10136: this->~_Sp_counted_ptr_inplace(); 10136: } 10136: 10136: 10136: virtual void* 10136: _M_get_deleter(const std::type_info& __ti) noexcept 10136: { 10136: 10136: if (__ti == typeid(_Sp_make_shared_tag)) 10136: 10136: 10136: 10136: return const_cast::type*>(_M_ptr()); 10136: return nullptr; 10136: } 10136: 10136: private: 10136: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } 10136: 10136: _Impl _M_impl; 10136: }; 10136: 10136: 10136: struct __sp_array_delete 10136: { 10136: template 10136: void operator()(_Yp* __p) const { delete[] __p; } 10136: }; 10136: 10136: template<_Lock_policy _Lp> 10136: class __shared_count 10136: { 10136: public: 10136: constexpr __shared_count() noexcept : _M_pi(0) 10136: { } 10136: 10136: template 10136: explicit 10136: __shared_count(_Ptr __p) : _M_pi(0) 10136: { 10136: try 10136: { 10136: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); 10136: } 10136: catch(...) 10136: { 10136: delete __p; 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: __shared_count(_Ptr __p, false_type) 10136: : __shared_count(__p) 10136: { } 10136: 10136: template 10136: __shared_count(_Ptr __p, true_type) 10136: : __shared_count(__p, __sp_array_delete{}, allocator()) 10136: { } 10136: 10136: template 10136: __shared_count(_Ptr __p, _Deleter __d) 10136: : __shared_count(__p, std::move(__d), allocator()) 10136: { } 10136: 10136: template 10136: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) 10136: { 10136: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; 10136: try 10136: { 10136: typename _Sp_cd_type::__allocator_type __a2(__a); 10136: auto __guard = std::__allocate_guarded(__a2); 10136: _Sp_cd_type* __mem = __guard.get(); 10136: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a)); 10136: _M_pi = __mem; 10136: __guard = nullptr; 10136: } 10136: catch(...) 10136: { 10136: __d(__p); 10136: throw; 10136: } 10136: } 10136: 10136: template 10136: __shared_count(_Sp_make_shared_tag, _Tp*, const _Alloc& __a, 10136: _Args&&... __args) 10136: : _M_pi(0) 10136: { 10136: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; 10136: typename _Sp_cp_type::__allocator_type __a2(__a); 10136: auto __guard = std::__allocate_guarded(__a2); 10136: _Sp_cp_type* __mem = __guard.get(); 10136: ::new (__mem) _Sp_cp_type(std::move(__a), 10136: std::forward<_Args>(__args)...); 10136: _M_pi = __mem; 10136: __guard = nullptr; 10136: } 10136: 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: 10136: template 10136: explicit 10136: __shared_count(std::auto_ptr<_Tp>&& __r); 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: 10136: template 10136: explicit 10136: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) 10136: { 10136: 10136: 10136: if (__r.get() == nullptr) 10136: return; 10136: 10136: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; 10136: using _Del2 = typename conditional::value, 10136: reference_wrapper::type>, 10136: _Del>::type; 10136: using _Sp_cd_type 10136: = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; 10136: using _Alloc = allocator<_Sp_cd_type>; 10136: using _Alloc_traits = allocator_traits<_Alloc>; 10136: _Alloc __a; 10136: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); 10136: _Alloc_traits::construct(__a, __mem, __r.release(), 10136: __r.get_deleter()); 10136: _M_pi = __mem; 10136: } 10136: 10136: 10136: explicit __shared_count(const __weak_count<_Lp>& __r); 10136: 10136: 10136: explicit __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t); 10136: 10136: ~__shared_count() noexcept 10136: { 10136: if (_M_pi != nullptr) 10136: _M_pi->_M_release(); 10136: } 10136: 10136: __shared_count(const __shared_count& __r) noexcept 10136: : _M_pi(__r._M_pi) 10136: { 10136: if (_M_pi != 0) 10136: _M_pi->_M_add_ref_copy(); 10136: } 10136: 10136: __shared_count& 10136: operator=(const __shared_count& __r) noexcept 10136: { 10136: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 10136: if (__tmp != _M_pi) 10136: { 10136: if (__tmp != 0) 10136: __tmp->_M_add_ref_copy(); 10136: if (_M_pi != 0) 10136: _M_pi->_M_release(); 10136: _M_pi = __tmp; 10136: } 10136: return *this; 10136: } 10136: 10136: void 10136: _M_swap(__shared_count& __r) noexcept 10136: { 10136: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 10136: __r._M_pi = _M_pi; 10136: _M_pi = __tmp; 10136: } 10136: 10136: long 10136: _M_get_use_count() const noexcept 10136: { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } 10136: 10136: bool 10136: _M_unique() const noexcept 10136: { return this->_M_get_use_count() == 1; } 10136: 10136: void* 10136: _M_get_deleter(const std::type_info& __ti) const noexcept 10136: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; } 10136: 10136: bool 10136: _M_less(const __shared_count& __rhs) const noexcept 10136: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 10136: 10136: bool 10136: _M_less(const __weak_count<_Lp>& __rhs) const noexcept 10136: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 10136: 10136: 10136: friend inline bool 10136: operator==(const __shared_count& __a, const __shared_count& __b) noexcept 10136: { return __a._M_pi == __b._M_pi; } 10136: 10136: private: 10136: friend class __weak_count<_Lp>; 10136: 10136: _Sp_counted_base<_Lp>* _M_pi; 10136: }; 10136: 10136: 10136: template<_Lock_policy _Lp> 10136: class __weak_count 10136: { 10136: public: 10136: constexpr __weak_count() noexcept : _M_pi(nullptr) 10136: { } 10136: 10136: __weak_count(const __shared_count<_Lp>& __r) noexcept 10136: : _M_pi(__r._M_pi) 10136: { 10136: if (_M_pi != nullptr) 10136: _M_pi->_M_weak_add_ref(); 10136: } 10136: 10136: __weak_count(const __weak_count& __r) noexcept 10136: : _M_pi(__r._M_pi) 10136: { 10136: if (_M_pi != nullptr) 10136: _M_pi->_M_weak_add_ref(); 10136: } 10136: 10136: __weak_count(__weak_count&& __r) noexcept 10136: : _M_pi(__r._M_pi) 10136: { __r._M_pi = nullptr; } 10136: 10136: ~__weak_count() noexcept 10136: { 10136: if (_M_pi != nullptr) 10136: _M_pi->_M_weak_release(); 10136: } 10136: 10136: __weak_count& 10136: operator=(const __shared_count<_Lp>& __r) noexcept 10136: { 10136: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 10136: if (__tmp != nullptr) 10136: __tmp->_M_weak_add_ref(); 10136: if (_M_pi != nullptr) 10136: _M_pi->_M_weak_release(); 10136: _M_pi = __tmp; 10136: return *this; 10136: } 10136: 10136: __weak_count& 10136: operator=(const __weak_count& __r) noexcept 10136: { 10136: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 10136: if (__tmp != nullptr) 10136: __tmp->_M_weak_add_ref(); 10136: if (_M_pi != nullptr) 10136: _M_pi->_M_weak_release(); 10136: _M_pi = __tmp; 10136: return *this; 10136: } 10136: 10136: __weak_count& 10136: operator=(__weak_count&& __r) noexcept 10136: { 10136: if (_M_pi != nullptr) 10136: _M_pi->_M_weak_release(); 10136: _M_pi = __r._M_pi; 10136: __r._M_pi = nullptr; 10136: return *this; 10136: } 10136: 10136: void 10136: _M_swap(__weak_count& __r) noexcept 10136: { 10136: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 10136: __r._M_pi = _M_pi; 10136: _M_pi = __tmp; 10136: } 10136: 10136: long 10136: _M_get_use_count() const noexcept 10136: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } 10136: 10136: bool 10136: _M_less(const __weak_count& __rhs) const noexcept 10136: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 10136: 10136: bool 10136: _M_less(const __shared_count<_Lp>& __rhs) const noexcept 10136: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 10136: 10136: 10136: friend inline bool 10136: operator==(const __weak_count& __a, const __weak_count& __b) noexcept 10136: { return __a._M_pi == __b._M_pi; } 10136: 10136: private: 10136: friend class __shared_count<_Lp>; 10136: 10136: _Sp_counted_base<_Lp>* _M_pi; 10136: }; 10136: 10136: 10136: template<_Lock_policy _Lp> 10136: inline 10136: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r) 10136: : _M_pi(__r._M_pi) 10136: { 10136: if (_M_pi != nullptr) 10136: _M_pi->_M_add_ref_lock(); 10136: else 10136: __throw_bad_weak_ptr(); 10136: } 10136: 10136: 10136: template<_Lock_policy _Lp> 10136: inline 10136: __shared_count<_Lp>:: 10136: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) 10136: : _M_pi(__r._M_pi) 10136: { 10136: if (_M_pi != nullptr) 10136: if (!_M_pi->_M_add_ref_lock_nothrow()) 10136: _M_pi = nullptr; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __sp_compatible_with 10136: : false_type 10136: { }; 10136: 10136: template 10136: struct __sp_compatible_with<_Yp*, _Tp*> 10136: : is_convertible<_Yp*, _Tp*>::type 10136: { }; 10136: 10136: template 10136: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]> 10136: : true_type 10136: { }; 10136: 10136: template 10136: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]> 10136: : true_type 10136: { }; 10136: 10136: template 10136: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]> 10136: : true_type 10136: { }; 10136: 10136: template 10136: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]> 10136: : true_type 10136: { }; 10136: 10136: 10136: template 10136: struct __sp_is_constructible_arrN 10136: : false_type 10136: { }; 10136: 10136: template 10136: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>> 10136: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type 10136: { }; 10136: 10136: 10136: template 10136: struct __sp_is_constructible_arr 10136: : false_type 10136: { }; 10136: 10136: template 10136: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>> 10136: : is_convertible<_Yp(*)[], _Up(*)[]>::type 10136: { }; 10136: 10136: 10136: template 10136: struct __sp_is_constructible; 10136: 10136: 10136: template 10136: struct __sp_is_constructible<_Up[_Nm], _Yp> 10136: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type 10136: { }; 10136: 10136: 10136: template 10136: struct __sp_is_constructible<_Up[], _Yp> 10136: : __sp_is_constructible_arr<_Up, _Yp>::type 10136: { }; 10136: 10136: 10136: template 10136: struct __sp_is_constructible 10136: : is_convertible<_Yp*, _Tp*>::type 10136: { }; 10136: 10136: 10136: 10136: template::value, bool = is_void<_Tp>::value> 10136: class __shared_ptr_access 10136: { 10136: public: 10136: using element_type = _Tp; 10136: 10136: element_type& 10136: operator*() const noexcept 10136: { 10136: ; 10136: return *_M_get(); 10136: } 10136: 10136: element_type* 10136: operator->() const noexcept 10136: { 10136: ; 10136: return _M_get(); 10136: } 10136: 10136: private: 10136: element_type* 10136: _M_get() const noexcept 10136: { return static_cast*>(this)->get(); } 10136: }; 10136: 10136: 10136: template 10136: class __shared_ptr_access<_Tp, _Lp, false, true> 10136: { 10136: public: 10136: using element_type = _Tp; 10136: 10136: element_type* 10136: operator->() const noexcept 10136: { 10136: auto __ptr = static_cast*>(this)->get(); 10136: ; 10136: return __ptr; 10136: } 10136: }; 10136: 10136: 10136: template 10136: class __shared_ptr_access<_Tp, _Lp, true, false> 10136: { 10136: public: 10136: using element_type = typename remove_extent<_Tp>::type; 10136: 10136: 10136: [[__deprecated__("shared_ptr::operator* is absent from C++17")]] 10136: element_type& 10136: operator*() const noexcept 10136: { 10136: ; 10136: return *_M_get(); 10136: } 10136: 10136: [[__deprecated__("shared_ptr::operator-> is absent from C++17")]] 10136: element_type* 10136: operator->() const noexcept 10136: { 10136: ; 10136: return _M_get(); 10136: } 10136: 10136: 10136: element_type& 10136: operator[](ptrdiff_t __i) const 10136: { 10136: ; 10136: ; 10136: return _M_get()[__i]; 10136: } 10136: 10136: private: 10136: element_type* 10136: _M_get() const noexcept 10136: { return static_cast*>(this)->get(); } 10136: }; 10136: 10136: template 10136: class __shared_ptr 10136: : public __shared_ptr_access<_Tp, _Lp> 10136: { 10136: public: 10136: using element_type = typename remove_extent<_Tp>::type; 10136: 10136: private: 10136: 10136: template 10136: using _SafeConv 10136: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type; 10136: 10136: 10136: template 10136: using _Compatible = typename 10136: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 10136: 10136: 10136: template 10136: using _Assignable = _Compatible<_Yp, __shared_ptr&>; 10136: 10136: 10136: template::pointer> 10136: using _UniqCompatible = typename enable_if<__and_< 10136: __sp_compatible_with<_Yp*, _Tp*>, is_convertible<_Ptr, element_type*> 10136: >::value, _Res>::type; 10136: 10136: 10136: template 10136: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>; 10136: 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: constexpr __shared_ptr() noexcept 10136: : _M_ptr(0), _M_refcount() 10136: { } 10136: 10136: template> 10136: explicit 10136: __shared_ptr(_Yp* __p) 10136: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type()) 10136: { 10136: static_assert( !is_void<_Yp>::value, "incomplete type" ); 10136: static_assert( sizeof(_Yp) > 0, "incomplete type" ); 10136: _M_enable_shared_from_this_with(__p); 10136: } 10136: 10136: template> 10136: __shared_ptr(_Yp* __p, _Deleter __d) 10136: : _M_ptr(__p), _M_refcount(__p, std::move(__d)) 10136: { 10136: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 10136: "deleter expression d(p) is well-formed"); 10136: _M_enable_shared_from_this_with(__p); 10136: } 10136: 10136: template> 10136: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 10136: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a)) 10136: { 10136: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 10136: "deleter expression d(p) is well-formed"); 10136: _M_enable_shared_from_this_with(__p); 10136: } 10136: 10136: template 10136: __shared_ptr(nullptr_t __p, _Deleter __d) 10136: : _M_ptr(0), _M_refcount(__p, std::move(__d)) 10136: { } 10136: 10136: template 10136: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 10136: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a)) 10136: { } 10136: 10136: template 10136: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r, 10136: element_type* __p) noexcept 10136: : _M_ptr(__p), _M_refcount(__r._M_refcount) 10136: { } 10136: 10136: __shared_ptr(const __shared_ptr&) noexcept = default; 10136: __shared_ptr& operator=(const __shared_ptr&) noexcept = default; 10136: ~__shared_ptr() = default; 10136: 10136: template> 10136: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 10136: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 10136: { } 10136: 10136: __shared_ptr(__shared_ptr&& __r) noexcept 10136: : _M_ptr(__r._M_ptr), _M_refcount() 10136: { 10136: _M_refcount._M_swap(__r._M_refcount); 10136: __r._M_ptr = 0; 10136: } 10136: 10136: template> 10136: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept 10136: : _M_ptr(__r._M_ptr), _M_refcount() 10136: { 10136: _M_refcount._M_swap(__r._M_refcount); 10136: __r._M_ptr = 0; 10136: } 10136: 10136: template> 10136: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r) 10136: : _M_refcount(__r._M_refcount) 10136: { 10136: 10136: 10136: _M_ptr = __r._M_ptr; 10136: } 10136: 10136: 10136: template> 10136: __shared_ptr(unique_ptr<_Yp, _Del>&& __r) 10136: : _M_ptr(__r.get()), _M_refcount() 10136: { 10136: auto __raw = __to_address(__r.get()); 10136: _M_refcount = __shared_count<_Lp>(std::move(__r)); 10136: _M_enable_shared_from_this_with(__raw); 10136: } 10136: 10136: 10136: protected: 10136: 10136: template>, is_array<_Tp1>, 10136: is_convertible::pointer, _Tp*> 10136: >::value, bool>::type = true> 10136: __shared_ptr(unique_ptr<_Tp1, _Del>&& __r, __sp_array_delete) 10136: : _M_ptr(__r.get()), _M_refcount() 10136: { 10136: auto __raw = __to_address(__r.get()); 10136: _M_refcount = __shared_count<_Lp>(std::move(__r)); 10136: _M_enable_shared_from_this_with(__raw); 10136: } 10136: public: 10136: 10136: 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: 10136: template> 10136: __shared_ptr(auto_ptr<_Yp>&& __r); 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } 10136: 10136: template 10136: _Assignable<_Yp> 10136: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 10136: { 10136: _M_ptr = __r._M_ptr; 10136: _M_refcount = __r._M_refcount; 10136: return *this; 10136: } 10136: 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: template 10136: _Assignable<_Yp> 10136: operator=(auto_ptr<_Yp>&& __r) 10136: { 10136: __shared_ptr(std::move(__r)).swap(*this); 10136: return *this; 10136: } 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: __shared_ptr& 10136: operator=(__shared_ptr&& __r) noexcept 10136: { 10136: __shared_ptr(std::move(__r)).swap(*this); 10136: return *this; 10136: } 10136: 10136: template 10136: _Assignable<_Yp> 10136: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept 10136: { 10136: __shared_ptr(std::move(__r)).swap(*this); 10136: return *this; 10136: } 10136: 10136: template 10136: _UniqAssignable<_Yp, _Del> 10136: operator=(unique_ptr<_Yp, _Del>&& __r) 10136: { 10136: __shared_ptr(std::move(__r)).swap(*this); 10136: return *this; 10136: } 10136: 10136: void 10136: reset() noexcept 10136: { __shared_ptr().swap(*this); } 10136: 10136: template 10136: _SafeConv<_Yp> 10136: reset(_Yp* __p) 10136: { 10136: 10136: ; 10136: __shared_ptr(__p).swap(*this); 10136: } 10136: 10136: template 10136: _SafeConv<_Yp> 10136: reset(_Yp* __p, _Deleter __d) 10136: { __shared_ptr(__p, std::move(__d)).swap(*this); } 10136: 10136: template 10136: _SafeConv<_Yp> 10136: reset(_Yp* __p, _Deleter __d, _Alloc __a) 10136: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); } 10136: 10136: element_type* 10136: get() const noexcept 10136: { return _M_ptr; } 10136: 10136: explicit operator bool() const 10136: { return _M_ptr == 0 ? false : true; } 10136: 10136: bool 10136: unique() const noexcept 10136: { return _M_refcount._M_unique(); } 10136: 10136: long 10136: use_count() const noexcept 10136: { return _M_refcount._M_get_use_count(); } 10136: 10136: void 10136: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept 10136: { 10136: std::swap(_M_ptr, __other._M_ptr); 10136: _M_refcount._M_swap(__other._M_refcount); 10136: } 10136: 10136: template 10136: bool 10136: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept 10136: { return _M_refcount._M_less(__rhs._M_refcount); } 10136: 10136: template 10136: bool 10136: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept 10136: { return _M_refcount._M_less(__rhs._M_refcount); } 10136: 10136: protected: 10136: 10136: template 10136: __shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, 10136: _Args&&... __args) 10136: : _M_ptr(), _M_refcount(__tag, (_Tp*)0, __a, 10136: std::forward<_Args>(__args)...) 10136: { 10136: 10136: 10136: 10136: void* __p = _M_refcount._M_get_deleter(typeid(__tag)); 10136: 10136: 10136: 10136: _M_ptr = static_cast<_Tp*>(__p); 10136: _M_enable_shared_from_this_with(_M_ptr); 10136: } 10136: 10136: template 10136: friend __shared_ptr<_Tp1, _Lp1> 10136: __allocate_shared(const _Alloc& __a, _Args&&... __args); 10136: 10136: 10136: 10136: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t) 10136: : _M_refcount(__r._M_refcount, std::nothrow) 10136: { 10136: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr; 10136: } 10136: 10136: friend class __weak_ptr<_Tp, _Lp>; 10136: 10136: private: 10136: 10136: template 10136: using __esft_base_t = decltype(__enable_shared_from_this_base( 10136: std::declval&>(), 10136: std::declval<_Yp*>())); 10136: 10136: 10136: template 10136: struct __has_esft_base 10136: : false_type { }; 10136: 10136: template 10136: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> 10136: : __not_> { }; 10136: 10136: template::type> 10136: typename enable_if<__has_esft_base<_Yp2>::value>::type 10136: _M_enable_shared_from_this_with(_Yp* __p) noexcept 10136: { 10136: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) 10136: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); 10136: } 10136: 10136: template::type> 10136: typename enable_if::value>::type 10136: _M_enable_shared_from_this_with(_Yp*) noexcept 10136: { } 10136: 10136: void* 10136: _M_get_deleter(const std::type_info& __ti) const noexcept 10136: { return _M_refcount._M_get_deleter(__ti); } 10136: 10136: template friend class __shared_ptr; 10136: template friend class __weak_ptr; 10136: 10136: template 10136: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; 10136: 10136: template 10136: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; 10136: 10136: element_type* _M_ptr; 10136: __shared_count<_Lp> _M_refcount; 10136: }; 10136: 10136: 10136: 10136: template 10136: inline bool 10136: operator==(const __shared_ptr<_Tp1, _Lp>& __a, 10136: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 10136: { return __a.get() == __b.get(); } 10136: 10136: template 10136: inline bool 10136: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 10136: { return !__a; } 10136: 10136: template 10136: inline bool 10136: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 10136: { return !__a; } 10136: 10136: template 10136: inline bool 10136: operator!=(const __shared_ptr<_Tp1, _Lp>& __a, 10136: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 10136: { return __a.get() != __b.get(); } 10136: 10136: template 10136: inline bool 10136: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 10136: { return (bool)__a; } 10136: 10136: template 10136: inline bool 10136: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 10136: { return (bool)__a; } 10136: 10136: template 10136: inline bool 10136: operator<(const __shared_ptr<_Tp, _Lp>& __a, 10136: const __shared_ptr<_Up, _Lp>& __b) noexcept 10136: { 10136: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 10136: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type; 10136: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 10136: return less<_Vp>()(__a.get(), __b.get()); 10136: } 10136: 10136: template 10136: inline bool 10136: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 10136: { 10136: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 10136: return less<_Tp_elt*>()(__a.get(), nullptr); 10136: } 10136: 10136: template 10136: inline bool 10136: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 10136: { 10136: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 10136: return less<_Tp_elt*>()(nullptr, __a.get()); 10136: } 10136: 10136: template 10136: inline bool 10136: operator<=(const __shared_ptr<_Tp1, _Lp>& __a, 10136: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 10136: { return !(__b < __a); } 10136: 10136: template 10136: inline bool 10136: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 10136: { return !(nullptr < __a); } 10136: 10136: template 10136: inline bool 10136: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 10136: { return !(__a < nullptr); } 10136: 10136: template 10136: inline bool 10136: operator>(const __shared_ptr<_Tp1, _Lp>& __a, 10136: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 10136: { return (__b < __a); } 10136: 10136: template 10136: inline bool 10136: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 10136: { return nullptr < __a; } 10136: 10136: template 10136: inline bool 10136: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 10136: { return __a < nullptr; } 10136: 10136: template 10136: inline bool 10136: operator>=(const __shared_ptr<_Tp1, _Lp>& __a, 10136: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 10136: { return !(__a < __b); } 10136: 10136: template 10136: inline bool 10136: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 10136: { return !(__a < nullptr); } 10136: 10136: template 10136: inline bool 10136: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 10136: { return !(nullptr < __a); } 10136: 10136: template 10136: struct _Sp_less : public binary_function<_Sp, _Sp, bool> 10136: { 10136: bool 10136: operator()(const _Sp& __lhs, const _Sp& __rhs) const noexcept 10136: { 10136: typedef typename _Sp::element_type element_type; 10136: return std::less()(__lhs.get(), __rhs.get()); 10136: } 10136: }; 10136: 10136: template 10136: struct less<__shared_ptr<_Tp, _Lp>> 10136: : public _Sp_less<__shared_ptr<_Tp, _Lp>> 10136: { }; 10136: 10136: 10136: template 10136: inline void 10136: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept 10136: { __a.swap(__b); } 10136: # 1540 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 10136: { 10136: using _Sp = __shared_ptr<_Tp, _Lp>; 10136: return _Sp(__r, static_cast(__r.get())); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 10136: { 10136: using _Sp = __shared_ptr<_Tp, _Lp>; 10136: return _Sp(__r, const_cast(__r.get())); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 10136: { 10136: using _Sp = __shared_ptr<_Tp, _Lp>; 10136: if (auto* __p = dynamic_cast(__r.get())) 10136: return _Sp(__r, __p); 10136: return _Sp(); 10136: } 10136: # 1586 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 10136: template 10136: class __weak_ptr 10136: { 10136: template 10136: using _Compatible = typename 10136: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 10136: 10136: 10136: template 10136: using _Assignable = _Compatible<_Yp, __weak_ptr&>; 10136: 10136: public: 10136: using element_type = typename remove_extent<_Tp>::type; 10136: 10136: constexpr __weak_ptr() noexcept 10136: : _M_ptr(nullptr), _M_refcount() 10136: { } 10136: 10136: __weak_ptr(const __weak_ptr&) noexcept = default; 10136: 10136: ~__weak_ptr() = default; 10136: # 1622 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 10136: template> 10136: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept 10136: : _M_refcount(__r._M_refcount) 10136: { _M_ptr = __r.lock().get(); } 10136: 10136: template> 10136: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 10136: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 10136: { } 10136: 10136: __weak_ptr(__weak_ptr&& __r) noexcept 10136: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount)) 10136: { __r._M_ptr = nullptr; } 10136: 10136: template> 10136: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept 10136: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount)) 10136: { __r._M_ptr = nullptr; } 10136: 10136: __weak_ptr& 10136: operator=(const __weak_ptr& __r) noexcept = default; 10136: 10136: template 10136: _Assignable<_Yp> 10136: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept 10136: { 10136: _M_ptr = __r.lock().get(); 10136: _M_refcount = __r._M_refcount; 10136: return *this; 10136: } 10136: 10136: template 10136: _Assignable<_Yp> 10136: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 10136: { 10136: _M_ptr = __r._M_ptr; 10136: _M_refcount = __r._M_refcount; 10136: return *this; 10136: } 10136: 10136: __weak_ptr& 10136: operator=(__weak_ptr&& __r) noexcept 10136: { 10136: _M_ptr = __r._M_ptr; 10136: _M_refcount = std::move(__r._M_refcount); 10136: __r._M_ptr = nullptr; 10136: return *this; 10136: } 10136: 10136: template 10136: _Assignable<_Yp> 10136: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept 10136: { 10136: _M_ptr = __r.lock().get(); 10136: _M_refcount = std::move(__r._M_refcount); 10136: __r._M_ptr = nullptr; 10136: return *this; 10136: } 10136: 10136: __shared_ptr<_Tp, _Lp> 10136: lock() const noexcept 10136: { return __shared_ptr(*this, std::nothrow); } 10136: 10136: long 10136: use_count() const noexcept 10136: { return _M_refcount._M_get_use_count(); } 10136: 10136: bool 10136: expired() const noexcept 10136: { return _M_refcount._M_get_use_count() == 0; } 10136: 10136: template 10136: bool 10136: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept 10136: { return _M_refcount._M_less(__rhs._M_refcount); } 10136: 10136: template 10136: bool 10136: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept 10136: { return _M_refcount._M_less(__rhs._M_refcount); } 10136: 10136: void 10136: reset() noexcept 10136: { __weak_ptr().swap(*this); } 10136: 10136: void 10136: swap(__weak_ptr& __s) noexcept 10136: { 10136: std::swap(_M_ptr, __s._M_ptr); 10136: _M_refcount._M_swap(__s._M_refcount); 10136: } 10136: 10136: private: 10136: 10136: void 10136: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept 10136: { 10136: if (use_count() == 0) 10136: { 10136: _M_ptr = __ptr; 10136: _M_refcount = __refcount; 10136: } 10136: } 10136: 10136: template friend class __shared_ptr; 10136: template friend class __weak_ptr; 10136: friend class __enable_shared_from_this<_Tp, _Lp>; 10136: friend class enable_shared_from_this<_Tp>; 10136: 10136: element_type* _M_ptr; 10136: __weak_count<_Lp> _M_refcount; 10136: }; 10136: 10136: 10136: template 10136: inline void 10136: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept 10136: { __a.swap(__b); } 10136: 10136: template 10136: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> 10136: { 10136: bool 10136: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept 10136: { return __lhs.owner_before(__rhs); } 10136: 10136: bool 10136: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept 10136: { return __lhs.owner_before(__rhs); } 10136: 10136: bool 10136: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept 10136: { return __lhs.owner_before(__rhs); } 10136: }; 10136: 10136: template<> 10136: struct _Sp_owner_less 10136: { 10136: template 10136: auto 10136: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept 10136: -> decltype(__lhs.owner_before(__rhs)) 10136: { return __lhs.owner_before(__rhs); } 10136: 10136: using is_transparent = void; 10136: }; 10136: 10136: template 10136: struct owner_less<__shared_ptr<_Tp, _Lp>> 10136: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> 10136: { }; 10136: 10136: template 10136: struct owner_less<__weak_ptr<_Tp, _Lp>> 10136: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> 10136: { }; 10136: 10136: 10136: template 10136: class __enable_shared_from_this 10136: { 10136: protected: 10136: constexpr __enable_shared_from_this() noexcept { } 10136: 10136: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } 10136: 10136: __enable_shared_from_this& 10136: operator=(const __enable_shared_from_this&) noexcept 10136: { return *this; } 10136: 10136: ~__enable_shared_from_this() { } 10136: 10136: public: 10136: __shared_ptr<_Tp, _Lp> 10136: shared_from_this() 10136: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } 10136: 10136: __shared_ptr 10136: shared_from_this() const 10136: { return __shared_ptr(this->_M_weak_this); } 10136: 10136: 10136: __weak_ptr<_Tp, _Lp> 10136: weak_from_this() noexcept 10136: { return this->_M_weak_this; } 10136: 10136: __weak_ptr 10136: weak_from_this() const noexcept 10136: { return this->_M_weak_this; } 10136: 10136: 10136: private: 10136: template 10136: void 10136: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept 10136: { _M_weak_this._M_assign(__p, __n); } 10136: 10136: friend const __enable_shared_from_this* 10136: __enable_shared_from_this_base(const __shared_count<_Lp>&, 10136: const __enable_shared_from_this* __p) 10136: { return __p; } 10136: 10136: template 10136: friend class __shared_ptr; 10136: 10136: mutable __weak_ptr<_Tp, _Lp> _M_weak_this; 10136: }; 10136: 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: __allocate_shared(const _Alloc& __a, _Args&&... __args) 10136: { 10136: return __shared_ptr<_Tp, _Lp>(_Sp_make_shared_tag(), __a, 10136: std::forward<_Args>(__args)...); 10136: } 10136: 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: __make_shared(_Args&&... __args) 10136: { 10136: typedef typename std::remove_const<_Tp>::type _Tp_nc; 10136: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), 10136: std::forward<_Args>(__args)...); 10136: } 10136: 10136: 10136: template 10136: struct hash<__shared_ptr<_Tp, _Lp>> 10136: : public __hash_base> 10136: { 10136: size_t 10136: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept 10136: { 10136: return hash::element_type*>()( 10136: __s.get()); 10136: } 10136: }; 10136: 10136: 10136: } 10136: # 53 "/usr/include/c++/8/bits/shared_ptr.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline std::basic_ostream<_Ch, _Tr>& 10136: operator<<(std::basic_ostream<_Ch, _Tr>& __os, 10136: const __shared_ptr<_Tp, _Lp>& __p) 10136: { 10136: __os << __p.get(); 10136: return __os; 10136: } 10136: 10136: template 10136: inline _Del* 10136: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept 10136: { 10136: 10136: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: template 10136: inline _Del* 10136: get_deleter(const shared_ptr<_Tp>& __p) noexcept 10136: { 10136: 10136: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class shared_ptr : public __shared_ptr<_Tp> 10136: { 10136: template 10136: using _Constructible = typename enable_if< 10136: is_constructible<__shared_ptr<_Tp>, _Args...>::value 10136: >::type; 10136: 10136: template 10136: using _Assignable = typename enable_if< 10136: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& 10136: >::type; 10136: 10136: public: 10136: 10136: using element_type = typename __shared_ptr<_Tp>::element_type; 10136: # 127 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } 10136: 10136: shared_ptr(const shared_ptr&) noexcept = default; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template> 10136: explicit 10136: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } 10136: # 154 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template> 10136: shared_ptr(_Yp* __p, _Deleter __d) 10136: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 10136: # 172 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template 10136: shared_ptr(nullptr_t __p, _Deleter __d) 10136: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 10136: # 191 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template> 10136: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 10136: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 10136: # 211 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template 10136: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 10136: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 10136: # 233 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template 10136: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept 10136: : __shared_ptr<_Tp>(__r, __p) { } 10136: # 244 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template&>> 10136: shared_ptr(const shared_ptr<_Yp>& __r) noexcept 10136: : __shared_ptr<_Tp>(__r) { } 10136: 10136: 10136: 10136: 10136: 10136: 10136: shared_ptr(shared_ptr&& __r) noexcept 10136: : __shared_ptr<_Tp>(std::move(__r)) { } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template>> 10136: shared_ptr(shared_ptr<_Yp>&& __r) noexcept 10136: : __shared_ptr<_Tp>(std::move(__r)) { } 10136: # 274 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template&>> 10136: explicit shared_ptr(const weak_ptr<_Yp>& __r) 10136: : __shared_ptr<_Tp>(__r) { } 10136: 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: template>> 10136: shared_ptr(auto_ptr<_Yp>&& __r); 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: 10136: 10136: template>> 10136: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 10136: : __shared_ptr<_Tp>(std::move(__r)) { } 10136: 10136: 10136: 10136: 10136: 10136: template, __sp_array_delete>* = 0> 10136: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 10136: : __shared_ptr<_Tp>(std::move(__r), __sp_array_delete()) { } 10136: 10136: 10136: 10136: 10136: 10136: 10136: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } 10136: 10136: shared_ptr& operator=(const shared_ptr&) noexcept = default; 10136: 10136: template 10136: _Assignable&> 10136: operator=(const shared_ptr<_Yp>& __r) noexcept 10136: { 10136: this->__shared_ptr<_Tp>::operator=(__r); 10136: return *this; 10136: } 10136: 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: template 10136: _Assignable> 10136: operator=(auto_ptr<_Yp>&& __r) 10136: { 10136: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 10136: return *this; 10136: } 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: shared_ptr& 10136: operator=(shared_ptr&& __r) noexcept 10136: { 10136: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 10136: return *this; 10136: } 10136: 10136: template 10136: _Assignable> 10136: operator=(shared_ptr<_Yp>&& __r) noexcept 10136: { 10136: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 10136: return *this; 10136: } 10136: 10136: template 10136: _Assignable> 10136: operator=(unique_ptr<_Yp, _Del>&& __r) 10136: { 10136: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 10136: return *this; 10136: } 10136: 10136: private: 10136: 10136: template 10136: shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, 10136: _Args&&... __args) 10136: : __shared_ptr<_Tp>(__tag, __a, std::forward<_Args>(__args)...) 10136: { } 10136: 10136: template 10136: friend shared_ptr<_Yp> 10136: allocate_shared(const _Alloc& __a, _Args&&... __args); 10136: 10136: 10136: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) 10136: : __shared_ptr<_Tp>(__r, std::nothrow) { } 10136: 10136: friend class weak_ptr<_Tp>; 10136: }; 10136: # 382 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template 10136: inline bool 10136: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 10136: { return __a.get() == __b.get(); } 10136: 10136: template 10136: inline bool 10136: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 10136: { return !__a; } 10136: 10136: template 10136: inline bool 10136: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 10136: { return !__a; } 10136: 10136: template 10136: inline bool 10136: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 10136: { return __a.get() != __b.get(); } 10136: 10136: template 10136: inline bool 10136: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 10136: { return (bool)__a; } 10136: 10136: template 10136: inline bool 10136: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 10136: { return (bool)__a; } 10136: 10136: template 10136: inline bool 10136: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 10136: { 10136: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 10136: using _Up_elt = typename shared_ptr<_Up>::element_type; 10136: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 10136: return less<_Vp>()(__a.get(), __b.get()); 10136: } 10136: 10136: template 10136: inline bool 10136: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 10136: { 10136: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 10136: return less<_Tp_elt*>()(__a.get(), nullptr); 10136: } 10136: 10136: template 10136: inline bool 10136: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 10136: { 10136: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 10136: return less<_Tp_elt*>()(nullptr, __a.get()); 10136: } 10136: 10136: template 10136: inline bool 10136: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 10136: { return !(__b < __a); } 10136: 10136: template 10136: inline bool 10136: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 10136: { return !(nullptr < __a); } 10136: 10136: template 10136: inline bool 10136: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 10136: { return !(__a < nullptr); } 10136: 10136: template 10136: inline bool 10136: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 10136: { return (__b < __a); } 10136: 10136: template 10136: inline bool 10136: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 10136: { return nullptr < __a; } 10136: 10136: template 10136: inline bool 10136: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 10136: { return __a < nullptr; } 10136: 10136: template 10136: inline bool 10136: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 10136: { return !(__a < __b); } 10136: 10136: template 10136: inline bool 10136: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 10136: { return !(__a < nullptr); } 10136: 10136: template 10136: inline bool 10136: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 10136: { return !(nullptr < __a); } 10136: 10136: template 10136: struct less> : public _Sp_less> 10136: { }; 10136: 10136: 10136: template 10136: inline void 10136: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept 10136: { __a.swap(__b); } 10136: 10136: 10136: template 10136: inline shared_ptr<_Tp> 10136: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept 10136: { 10136: using _Sp = shared_ptr<_Tp>; 10136: return _Sp(__r, static_cast(__r.get())); 10136: } 10136: 10136: template 10136: inline shared_ptr<_Tp> 10136: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept 10136: { 10136: using _Sp = shared_ptr<_Tp>; 10136: return _Sp(__r, const_cast(__r.get())); 10136: } 10136: 10136: template 10136: inline shared_ptr<_Tp> 10136: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept 10136: { 10136: using _Sp = shared_ptr<_Tp>; 10136: if (auto* __p = dynamic_cast(__r.get())) 10136: return _Sp(__r, __p); 10136: return _Sp(); 10136: } 10136: # 535 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template 10136: class weak_ptr : public __weak_ptr<_Tp> 10136: { 10136: template 10136: using _Constructible = typename enable_if< 10136: is_constructible<__weak_ptr<_Tp>, _Arg>::value 10136: >::type; 10136: 10136: template 10136: using _Assignable = typename enable_if< 10136: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& 10136: >::type; 10136: 10136: public: 10136: constexpr weak_ptr() noexcept = default; 10136: 10136: template&>> 10136: weak_ptr(const shared_ptr<_Yp>& __r) noexcept 10136: : __weak_ptr<_Tp>(__r) { } 10136: 10136: weak_ptr(const weak_ptr&) noexcept = default; 10136: 10136: template&>> 10136: weak_ptr(const weak_ptr<_Yp>& __r) noexcept 10136: : __weak_ptr<_Tp>(__r) { } 10136: 10136: weak_ptr(weak_ptr&&) noexcept = default; 10136: 10136: template>> 10136: weak_ptr(weak_ptr<_Yp>&& __r) noexcept 10136: : __weak_ptr<_Tp>(std::move(__r)) { } 10136: 10136: weak_ptr& 10136: operator=(const weak_ptr& __r) noexcept = default; 10136: 10136: template 10136: _Assignable&> 10136: operator=(const weak_ptr<_Yp>& __r) noexcept 10136: { 10136: this->__weak_ptr<_Tp>::operator=(__r); 10136: return *this; 10136: } 10136: 10136: template 10136: _Assignable&> 10136: operator=(const shared_ptr<_Yp>& __r) noexcept 10136: { 10136: this->__weak_ptr<_Tp>::operator=(__r); 10136: return *this; 10136: } 10136: 10136: weak_ptr& 10136: operator=(weak_ptr&& __r) noexcept = default; 10136: 10136: template 10136: _Assignable> 10136: operator=(weak_ptr<_Yp>&& __r) noexcept 10136: { 10136: this->__weak_ptr<_Tp>::operator=(std::move(__r)); 10136: return *this; 10136: } 10136: 10136: shared_ptr<_Tp> 10136: lock() const noexcept 10136: { return shared_ptr<_Tp>(*this, std::nothrow); } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline void 10136: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept 10136: { __a.swap(__b); } 10136: 10136: 10136: 10136: template 10136: struct owner_less; 10136: 10136: 10136: template<> 10136: struct owner_less : _Sp_owner_less 10136: { }; 10136: 10136: 10136: template 10136: struct owner_less> 10136: : public _Sp_owner_less, weak_ptr<_Tp>> 10136: { }; 10136: 10136: 10136: template 10136: struct owner_less> 10136: : public _Sp_owner_less, shared_ptr<_Tp>> 10136: { }; 10136: 10136: 10136: 10136: 10136: template 10136: class enable_shared_from_this 10136: { 10136: protected: 10136: constexpr enable_shared_from_this() noexcept { } 10136: 10136: enable_shared_from_this(const enable_shared_from_this&) noexcept { } 10136: 10136: enable_shared_from_this& 10136: operator=(const enable_shared_from_this&) noexcept 10136: { return *this; } 10136: 10136: ~enable_shared_from_this() { } 10136: 10136: public: 10136: shared_ptr<_Tp> 10136: shared_from_this() 10136: { return shared_ptr<_Tp>(this->_M_weak_this); } 10136: 10136: shared_ptr 10136: shared_from_this() const 10136: { return shared_ptr(this->_M_weak_this); } 10136: 10136: 10136: 10136: weak_ptr<_Tp> 10136: weak_from_this() noexcept 10136: { return this->_M_weak_this; } 10136: 10136: weak_ptr 10136: weak_from_this() const noexcept 10136: { return this->_M_weak_this; } 10136: 10136: 10136: private: 10136: template 10136: void 10136: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept 10136: { _M_weak_this._M_assign(__p, __n); } 10136: 10136: 10136: friend const enable_shared_from_this* 10136: __enable_shared_from_this_base(const __shared_count<>&, 10136: const enable_shared_from_this* __p) 10136: { return __p; } 10136: 10136: template 10136: friend class __shared_ptr; 10136: 10136: mutable weak_ptr<_Tp> _M_weak_this; 10136: }; 10136: # 702 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template 10136: inline shared_ptr<_Tp> 10136: allocate_shared(const _Alloc& __a, _Args&&... __args) 10136: { 10136: return shared_ptr<_Tp>(_Sp_make_shared_tag(), __a, 10136: std::forward<_Args>(__args)...); 10136: } 10136: # 717 "/usr/include/c++/8/bits/shared_ptr.h" 3 10136: template 10136: inline shared_ptr<_Tp> 10136: make_shared(_Args&&... __args) 10136: { 10136: typedef typename std::remove_const<_Tp>::type _Tp_nc; 10136: return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(), 10136: std::forward<_Args>(__args)...); 10136: } 10136: 10136: 10136: template 10136: struct hash> 10136: : public __hash_base> 10136: { 10136: size_t 10136: operator()(const shared_ptr<_Tp>& __s) const noexcept 10136: { 10136: return std::hash::element_type*>()(__s.get()); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: } 10136: # 82 "/usr/include/c++/8/memory" 2 3 10136: # 1 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 10136: # 1 "/usr/include/c++/8/bits/atomic_base.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/atomic_base.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/atomic_base.h" 3 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 3 10136: # 38 "/usr/include/c++/8/bits/atomic_base.h" 2 3 10136: 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 55 "/usr/include/c++/8/bits/atomic_base.h" 3 10136: typedef enum memory_order 10136: { 10136: memory_order_relaxed, 10136: memory_order_consume, 10136: memory_order_acquire, 10136: memory_order_release, 10136: memory_order_acq_rel, 10136: memory_order_seq_cst 10136: } memory_order; 10136: 10136: enum __memory_order_modifier 10136: { 10136: __memory_order_mask = 0x0ffff, 10136: __memory_order_modifier_mask = 0xffff0000, 10136: __memory_order_hle_acquire = 0x10000, 10136: __memory_order_hle_release = 0x20000 10136: }; 10136: 10136: constexpr memory_order 10136: operator|(memory_order __m, __memory_order_modifier __mod) 10136: { 10136: return memory_order(__m | int(__mod)); 10136: } 10136: 10136: constexpr memory_order 10136: operator&(memory_order __m, __memory_order_modifier __mod) 10136: { 10136: return memory_order(__m & int(__mod)); 10136: } 10136: 10136: 10136: constexpr memory_order 10136: __cmpexch_failure_order2(memory_order __m) noexcept 10136: { 10136: return __m == memory_order_acq_rel ? memory_order_acquire 10136: : __m == memory_order_release ? memory_order_relaxed : __m; 10136: } 10136: 10136: constexpr memory_order 10136: __cmpexch_failure_order(memory_order __m) noexcept 10136: { 10136: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) 10136: | (__m & __memory_order_modifier_mask)); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) void 10136: atomic_thread_fence(memory_order __m) noexcept 10136: { __atomic_thread_fence(__m); } 10136: 10136: inline __attribute__((__always_inline__)) void 10136: atomic_signal_fence(memory_order __m) noexcept 10136: { __atomic_signal_fence(__m); } 10136: 10136: 10136: template 10136: inline _Tp 10136: kill_dependency(_Tp __y) noexcept 10136: { 10136: _Tp __ret(__y); 10136: return __ret; 10136: } 10136: 10136: 10136: 10136: template 10136: struct __atomic_base; 10136: 10136: 10136: 10136: 10136: template 10136: struct atomic; 10136: 10136: template 10136: struct atomic<_Tp*>; 10136: 10136: 10136: 10136: typedef bool __atomic_flag_data_type; 10136: # 148 "/usr/include/c++/8/bits/atomic_base.h" 3 10136: extern "C" { 10136: 10136: struct __atomic_flag_base 10136: { 10136: __atomic_flag_data_type _M_i; 10136: }; 10136: 10136: } 10136: 10136: 10136: 10136: 10136: struct atomic_flag : public __atomic_flag_base 10136: { 10136: atomic_flag() noexcept = default; 10136: ~atomic_flag() noexcept = default; 10136: atomic_flag(const atomic_flag&) = delete; 10136: atomic_flag& operator=(const atomic_flag&) = delete; 10136: atomic_flag& operator=(const atomic_flag&) volatile = delete; 10136: 10136: 10136: constexpr atomic_flag(bool __i) noexcept 10136: : __atomic_flag_base{ _S_init(__i) } 10136: { } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: test_and_set(memory_order __m = memory_order_seq_cst) noexcept 10136: { 10136: return __atomic_test_and_set (&_M_i, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { 10136: return __atomic_test_and_set (&_M_i, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) void 10136: clear(memory_order __m = memory_order_seq_cst) noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: __atomic_clear (&_M_i, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) void 10136: clear(memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: __atomic_clear (&_M_i, __m); 10136: } 10136: 10136: private: 10136: static constexpr __atomic_flag_data_type 10136: _S_init(bool __i) 10136: { return __i ? 1 : 0; } 10136: }; 10136: # 237 "/usr/include/c++/8/bits/atomic_base.h" 3 10136: template 10136: struct __atomic_base 10136: { 10136: private: 10136: typedef _ITp __int_type; 10136: 10136: static constexpr int _S_alignment = 10136: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); 10136: 10136: alignas(_S_alignment) __int_type _M_i; 10136: 10136: public: 10136: __atomic_base() noexcept = default; 10136: ~__atomic_base() noexcept = default; 10136: __atomic_base(const __atomic_base&) = delete; 10136: __atomic_base& operator=(const __atomic_base&) = delete; 10136: __atomic_base& operator=(const __atomic_base&) volatile = delete; 10136: 10136: 10136: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } 10136: 10136: operator __int_type() const noexcept 10136: { return load(); } 10136: 10136: operator __int_type() const volatile noexcept 10136: { return load(); } 10136: 10136: __int_type 10136: operator=(__int_type __i) noexcept 10136: { 10136: store(__i); 10136: return __i; 10136: } 10136: 10136: __int_type 10136: operator=(__int_type __i) volatile noexcept 10136: { 10136: store(__i); 10136: return __i; 10136: } 10136: 10136: __int_type 10136: operator++(int) noexcept 10136: { return fetch_add(1); } 10136: 10136: __int_type 10136: operator++(int) volatile noexcept 10136: { return fetch_add(1); } 10136: 10136: __int_type 10136: operator--(int) noexcept 10136: { return fetch_sub(1); } 10136: 10136: __int_type 10136: operator--(int) volatile noexcept 10136: { return fetch_sub(1); } 10136: 10136: __int_type 10136: operator++() noexcept 10136: { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator++() volatile noexcept 10136: { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator--() noexcept 10136: { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator--() volatile noexcept 10136: { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator+=(__int_type __i) noexcept 10136: { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator+=(__int_type __i) volatile noexcept 10136: { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator-=(__int_type __i) noexcept 10136: { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator-=(__int_type __i) volatile noexcept 10136: { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator&=(__int_type __i) noexcept 10136: { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator&=(__int_type __i) volatile noexcept 10136: { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator|=(__int_type __i) noexcept 10136: { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator|=(__int_type __i) volatile noexcept 10136: { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator^=(__int_type __i) noexcept 10136: { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: __int_type 10136: operator^=(__int_type __i) volatile noexcept 10136: { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } 10136: 10136: bool 10136: is_lock_free() const noexcept 10136: { 10136: 10136: return __atomic_is_lock_free(sizeof(_M_i), 10136: reinterpret_cast(-__alignof(_M_i))); 10136: } 10136: 10136: bool 10136: is_lock_free() const volatile noexcept 10136: { 10136: 10136: return __atomic_is_lock_free(sizeof(_M_i), 10136: reinterpret_cast(-__alignof(_M_i))); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) void 10136: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: __atomic_store_n(&_M_i, __i, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) void 10136: store(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: __atomic_store_n(&_M_i, __i, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: load(memory_order __m = memory_order_seq_cst) const noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: 10136: return __atomic_load_n(&_M_i, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: 10136: return __atomic_load_n(&_M_i, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: exchange(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { 10136: return __atomic_exchange_n(&_M_i, __i, __m); 10136: } 10136: 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: exchange(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { 10136: return __atomic_exchange_n(&_M_i, __i, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_weak(__int_type& __i1, __int_type __i2, 10136: memory_order __m1, memory_order __m2) noexcept 10136: { 10136: memory_order __b2 = __m2 & __memory_order_mask; 10136: memory_order __b1 = __m1 & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_weak(__int_type& __i1, __int_type __i2, 10136: memory_order __m1, 10136: memory_order __m2) volatile noexcept 10136: { 10136: memory_order __b2 = __m2 & __memory_order_mask; 10136: memory_order __b1 = __m1 & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_weak(__int_type& __i1, __int_type __i2, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { 10136: return compare_exchange_weak(__i1, __i2, __m, 10136: __cmpexch_failure_order(__m)); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_weak(__int_type& __i1, __int_type __i2, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { 10136: return compare_exchange_weak(__i1, __i2, __m, 10136: __cmpexch_failure_order(__m)); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_strong(__int_type& __i1, __int_type __i2, 10136: memory_order __m1, memory_order __m2) noexcept 10136: { 10136: memory_order __b2 = __m2 & __memory_order_mask; 10136: memory_order __b1 = __m1 & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_strong(__int_type& __i1, __int_type __i2, 10136: memory_order __m1, 10136: memory_order __m2) volatile noexcept 10136: { 10136: memory_order __b2 = __m2 & __memory_order_mask; 10136: memory_order __b1 = __m1 & __memory_order_mask; 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_strong(__int_type& __i1, __int_type __i2, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { 10136: return compare_exchange_strong(__i1, __i2, __m, 10136: __cmpexch_failure_order(__m)); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_strong(__int_type& __i1, __int_type __i2, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { 10136: return compare_exchange_strong(__i1, __i2, __m, 10136: __cmpexch_failure_order(__m)); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_add(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { return __atomic_fetch_add(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_add(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { return __atomic_fetch_add(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_sub(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { return __atomic_fetch_sub(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_sub(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { return __atomic_fetch_sub(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_and(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { return __atomic_fetch_and(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_and(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { return __atomic_fetch_and(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_or(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { return __atomic_fetch_or(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_or(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { return __atomic_fetch_or(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_xor(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { return __atomic_fetch_xor(&_M_i, __i, __m); } 10136: 10136: inline __attribute__((__always_inline__)) __int_type 10136: fetch_xor(__int_type __i, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { return __atomic_fetch_xor(&_M_i, __i, __m); } 10136: }; 10136: 10136: 10136: 10136: template 10136: struct __atomic_base<_PTp*> 10136: { 10136: private: 10136: typedef _PTp* __pointer_type; 10136: 10136: __pointer_type _M_p; 10136: 10136: 10136: constexpr ptrdiff_t 10136: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } 10136: 10136: constexpr ptrdiff_t 10136: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } 10136: 10136: public: 10136: __atomic_base() noexcept = default; 10136: ~__atomic_base() noexcept = default; 10136: __atomic_base(const __atomic_base&) = delete; 10136: __atomic_base& operator=(const __atomic_base&) = delete; 10136: __atomic_base& operator=(const __atomic_base&) volatile = delete; 10136: 10136: 10136: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } 10136: 10136: operator __pointer_type() const noexcept 10136: { return load(); } 10136: 10136: operator __pointer_type() const volatile noexcept 10136: { return load(); } 10136: 10136: __pointer_type 10136: operator=(__pointer_type __p) noexcept 10136: { 10136: store(__p); 10136: return __p; 10136: } 10136: 10136: __pointer_type 10136: operator=(__pointer_type __p) volatile noexcept 10136: { 10136: store(__p); 10136: return __p; 10136: } 10136: 10136: __pointer_type 10136: operator++(int) noexcept 10136: { return fetch_add(1); } 10136: 10136: __pointer_type 10136: operator++(int) volatile noexcept 10136: { return fetch_add(1); } 10136: 10136: __pointer_type 10136: operator--(int) noexcept 10136: { return fetch_sub(1); } 10136: 10136: __pointer_type 10136: operator--(int) volatile noexcept 10136: { return fetch_sub(1); } 10136: 10136: __pointer_type 10136: operator++() noexcept 10136: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 10136: memory_order_seq_cst); } 10136: 10136: __pointer_type 10136: operator++() volatile noexcept 10136: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 10136: memory_order_seq_cst); } 10136: 10136: __pointer_type 10136: operator--() noexcept 10136: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 10136: memory_order_seq_cst); } 10136: 10136: __pointer_type 10136: operator--() volatile noexcept 10136: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 10136: memory_order_seq_cst); } 10136: 10136: __pointer_type 10136: operator+=(ptrdiff_t __d) noexcept 10136: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 10136: memory_order_seq_cst); } 10136: 10136: __pointer_type 10136: operator+=(ptrdiff_t __d) volatile noexcept 10136: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 10136: memory_order_seq_cst); } 10136: 10136: __pointer_type 10136: operator-=(ptrdiff_t __d) noexcept 10136: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 10136: memory_order_seq_cst); } 10136: 10136: __pointer_type 10136: operator-=(ptrdiff_t __d) volatile noexcept 10136: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 10136: memory_order_seq_cst); } 10136: 10136: bool 10136: is_lock_free() const noexcept 10136: { 10136: 10136: return __atomic_is_lock_free(sizeof(_M_p), 10136: reinterpret_cast(-__alignof(_M_p))); 10136: } 10136: 10136: bool 10136: is_lock_free() const volatile noexcept 10136: { 10136: 10136: return __atomic_is_lock_free(sizeof(_M_p), 10136: reinterpret_cast(-__alignof(_M_p))); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) void 10136: store(__pointer_type __p, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: __atomic_store_n(&_M_p, __p, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) void 10136: store(__pointer_type __p, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: __atomic_store_n(&_M_p, __p, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) __pointer_type 10136: load(memory_order __m = memory_order_seq_cst) const noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: 10136: return __atomic_load_n(&_M_p, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) __pointer_type 10136: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 10136: { 10136: memory_order __b = __m & __memory_order_mask; 10136: ; 10136: ; 10136: 10136: return __atomic_load_n(&_M_p, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) __pointer_type 10136: exchange(__pointer_type __p, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { 10136: return __atomic_exchange_n(&_M_p, __p, __m); 10136: } 10136: 10136: 10136: inline __attribute__((__always_inline__)) __pointer_type 10136: exchange(__pointer_type __p, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { 10136: return __atomic_exchange_n(&_M_p, __p, __m); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 10136: memory_order __m1, 10136: memory_order __m2) noexcept 10136: { 10136: memory_order __b2 = __m2 & __memory_order_mask; 10136: memory_order __b1 = __m1 & __memory_order_mask; 10136: ; 10136: ; 10136: ; 10136: 10136: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) bool 10136: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 10136: memory_order __m1, 10136: memory_order __m2) volatile noexcept 10136: { 10136: memory_order __b2 = __m2 & __memory_order_mask; 10136: memory_order __b1 = __m1 & __memory_order_mask; 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); 10136: } 10136: 10136: inline __attribute__((__always_inline__)) __pointer_type 10136: fetch_add(ptrdiff_t __d, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } 10136: 10136: inline __attribute__((__always_inline__)) __pointer_type 10136: fetch_add(ptrdiff_t __d, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } 10136: 10136: inline __attribute__((__always_inline__)) __pointer_type 10136: fetch_sub(ptrdiff_t __d, 10136: memory_order __m = memory_order_seq_cst) noexcept 10136: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } 10136: 10136: inline __attribute__((__always_inline__)) __pointer_type 10136: fetch_sub(ptrdiff_t __d, 10136: memory_order __m = memory_order_seq_cst) volatile noexcept 10136: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } 10136: }; 10136: 10136: 10136: 10136: 10136: } 10136: # 34 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct _Sp_locker 10136: { 10136: _Sp_locker(const _Sp_locker&) = delete; 10136: _Sp_locker& operator=(const _Sp_locker&) = delete; 10136: 10136: 10136: explicit 10136: _Sp_locker(const void*) noexcept; 10136: _Sp_locker(const void*, const void*) noexcept; 10136: ~_Sp_locker(); 10136: 10136: private: 10136: unsigned char _M_key1; 10136: unsigned char _M_key2; 10136: 10136: 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>* __p) 10136: { 10136: 10136: return __gthread_active_p() == 0; 10136: 10136: 10136: 10136: } 10136: 10136: template 10136: inline bool 10136: atomic_is_lock_free(const shared_ptr<_Tp>* __p) 10136: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } 10136: # 96 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 10136: template 10136: inline shared_ptr<_Tp> 10136: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) 10136: { 10136: _Sp_locker __lock{__p}; 10136: return *__p; 10136: } 10136: 10136: template 10136: inline shared_ptr<_Tp> 10136: atomic_load(const shared_ptr<_Tp>* __p) 10136: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 10136: 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order) 10136: { 10136: _Sp_locker __lock{__p}; 10136: return *__p; 10136: } 10136: 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: atomic_load(const __shared_ptr<_Tp, _Lp>* __p) 10136: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 10136: # 132 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 10136: template 10136: inline void 10136: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 10136: memory_order) 10136: { 10136: _Sp_locker __lock{__p}; 10136: __p->swap(__r); 10136: } 10136: 10136: template 10136: inline void 10136: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 10136: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 10136: 10136: template 10136: inline void 10136: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p, 10136: __shared_ptr<_Tp, _Lp> __r, 10136: memory_order) 10136: { 10136: _Sp_locker __lock{__p}; 10136: __p->swap(__r); 10136: } 10136: 10136: template 10136: inline void 10136: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 10136: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 10136: # 169 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 10136: template 10136: inline shared_ptr<_Tp> 10136: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 10136: memory_order) 10136: { 10136: _Sp_locker __lock{__p}; 10136: __p->swap(__r); 10136: return __r; 10136: } 10136: 10136: template 10136: inline shared_ptr<_Tp> 10136: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 10136: { 10136: return std::atomic_exchange_explicit(__p, std::move(__r), 10136: memory_order_seq_cst); 10136: } 10136: 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p, 10136: __shared_ptr<_Tp, _Lp> __r, 10136: memory_order) 10136: { 10136: _Sp_locker __lock{__p}; 10136: __p->swap(__r); 10136: return __r; 10136: } 10136: 10136: template 10136: inline __shared_ptr<_Tp, _Lp> 10136: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 10136: { 10136: return std::atomic_exchange_explicit(__p, std::move(__r), 10136: memory_order_seq_cst); 10136: } 10136: # 218 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 10136: template 10136: bool 10136: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, 10136: shared_ptr<_Tp>* __v, 10136: shared_ptr<_Tp> __w, 10136: memory_order, 10136: memory_order) 10136: { 10136: shared_ptr<_Tp> __x; 10136: _Sp_locker __lock{__p, __v}; 10136: owner_less> __less; 10136: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 10136: { 10136: __x = std::move(*__p); 10136: *__p = std::move(__w); 10136: return true; 10136: } 10136: __x = std::move(*__v); 10136: *__v = *__p; 10136: return false; 10136: } 10136: 10136: template 10136: inline bool 10136: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 10136: shared_ptr<_Tp> __w) 10136: { 10136: return std::atomic_compare_exchange_strong_explicit(__p, __v, 10136: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 10136: } 10136: 10136: template 10136: inline bool 10136: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, 10136: shared_ptr<_Tp>* __v, 10136: shared_ptr<_Tp> __w, 10136: memory_order __success, 10136: memory_order __failure) 10136: { 10136: return std::atomic_compare_exchange_strong_explicit(__p, __v, 10136: std::move(__w), __success, __failure); 10136: } 10136: 10136: template 10136: inline bool 10136: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 10136: shared_ptr<_Tp> __w) 10136: { 10136: return std::atomic_compare_exchange_weak_explicit(__p, __v, 10136: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 10136: } 10136: 10136: template 10136: bool 10136: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p, 10136: __shared_ptr<_Tp, _Lp>* __v, 10136: __shared_ptr<_Tp, _Lp> __w, 10136: memory_order, 10136: memory_order) 10136: { 10136: __shared_ptr<_Tp, _Lp> __x; 10136: _Sp_locker __lock{__p, __v}; 10136: owner_less<__shared_ptr<_Tp, _Lp>> __less; 10136: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 10136: { 10136: __x = std::move(*__p); 10136: *__p = std::move(__w); 10136: return true; 10136: } 10136: __x = std::move(*__v); 10136: *__v = *__p; 10136: return false; 10136: } 10136: 10136: template 10136: inline bool 10136: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p, 10136: __shared_ptr<_Tp, _Lp>* __v, 10136: __shared_ptr<_Tp, _Lp> __w) 10136: { 10136: return std::atomic_compare_exchange_strong_explicit(__p, __v, 10136: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 10136: } 10136: 10136: template 10136: inline bool 10136: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p, 10136: __shared_ptr<_Tp, _Lp>* __v, 10136: __shared_ptr<_Tp, _Lp> __w, 10136: memory_order __success, 10136: memory_order __failure) 10136: { 10136: return std::atomic_compare_exchange_strong_explicit(__p, __v, 10136: std::move(__w), __success, __failure); 10136: } 10136: 10136: template 10136: inline bool 10136: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p, 10136: __shared_ptr<_Tp, _Lp>* __v, 10136: __shared_ptr<_Tp, _Lp> __w) 10136: { 10136: return std::atomic_compare_exchange_weak_explicit(__p, __v, 10136: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: } 10136: # 83 "/usr/include/c++/8/memory" 2 3 10136: 10136: # 1 "/usr/include/c++/8/backward/auto_ptr.h" 1 3 10136: # 36 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 47 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: template 10136: struct auto_ptr_ref 10136: { 10136: _Tp1* _M_ptr; 10136: 10136: explicit 10136: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } 10136: } __attribute__ ((__deprecated__)); 10136: 10136: #pragma GCC diagnostic push 10136: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 10136: # 88 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: template 10136: class auto_ptr 10136: { 10136: private: 10136: _Tp* _M_ptr; 10136: 10136: public: 10136: 10136: typedef _Tp element_type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: explicit 10136: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } 10136: # 114 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } 10136: # 126 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: template 10136: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } 10136: # 137 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: auto_ptr& 10136: operator=(auto_ptr& __a) throw() 10136: { 10136: reset(__a.release()); 10136: return *this; 10136: } 10136: # 154 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: template 10136: auto_ptr& 10136: operator=(auto_ptr<_Tp1>& __a) throw() 10136: { 10136: reset(__a.release()); 10136: return *this; 10136: } 10136: # 172 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: ~auto_ptr() { delete _M_ptr; } 10136: # 182 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: element_type& 10136: operator*() const throw() 10136: { 10136: ; 10136: return *_M_ptr; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: element_type* 10136: operator->() const throw() 10136: { 10136: ; 10136: return _M_ptr; 10136: } 10136: # 212 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: element_type* 10136: get() const throw() { return _M_ptr; } 10136: # 226 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: element_type* 10136: release() throw() 10136: { 10136: element_type* __tmp = _M_ptr; 10136: _M_ptr = 0; 10136: return __tmp; 10136: } 10136: # 241 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: void 10136: reset(element_type* __p = 0) throw() 10136: { 10136: if (__p != _M_ptr) 10136: { 10136: delete _M_ptr; 10136: _M_ptr = __p; 10136: } 10136: } 10136: # 266 "/usr/include/c++/8/backward/auto_ptr.h" 3 10136: auto_ptr(auto_ptr_ref __ref) throw() 10136: : _M_ptr(__ref._M_ptr) { } 10136: 10136: auto_ptr& 10136: operator=(auto_ptr_ref __ref) throw() 10136: { 10136: if (__ref._M_ptr != this->get()) 10136: { 10136: delete _M_ptr; 10136: _M_ptr = __ref._M_ptr; 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: operator auto_ptr_ref<_Tp1>() throw() 10136: { return auto_ptr_ref<_Tp1>(this->release()); } 10136: 10136: template 10136: operator auto_ptr<_Tp1>() throw() 10136: { return auto_ptr<_Tp1>(this->release()); } 10136: } __attribute__ ((__deprecated__)); 10136: 10136: 10136: 10136: template<> 10136: class auto_ptr 10136: { 10136: public: 10136: typedef void element_type; 10136: } __attribute__ ((__deprecated__)); 10136: 10136: 10136: template<_Lock_policy _Lp> 10136: template 10136: inline 10136: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) 10136: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) 10136: { __r.release(); } 10136: 10136: template 10136: template 10136: inline 10136: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) 10136: : _M_ptr(__r.get()), _M_refcount() 10136: { 10136: 10136: static_assert( sizeof(_Tp1) > 0, "incomplete type" ); 10136: _Tp1* __tmp = __r.get(); 10136: _M_refcount = __shared_count<_Lp>(std::move(__r)); 10136: _M_enable_shared_from_this_with(__tmp); 10136: } 10136: 10136: template 10136: template 10136: inline 10136: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) 10136: : __shared_ptr<_Tp>(std::move(__r)) { } 10136: 10136: template 10136: template 10136: inline 10136: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept 10136: : _M_t(__u.release(), deleter_type()) { } 10136: 10136: 10136: #pragma GCC diagnostic pop 10136: 10136: 10136: } 10136: # 85 "/usr/include/c++/8/memory" 2 3 10136: # 93 "/usr/include/c++/8/memory" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 113 "/usr/include/c++/8/memory" 3 10136: inline void* 10136: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept 10136: { 10136: const auto __intptr = reinterpret_cast(__ptr); 10136: const auto __aligned = (__intptr - 1u + __align) & -__align; 10136: const auto __diff = __aligned - __intptr; 10136: if ((__size + __diff) > __space) 10136: return nullptr; 10136: else 10136: { 10136: __space -= __diff; 10136: return __ptr = reinterpret_cast(__aligned); 10136: } 10136: } 10136: 10136: 10136: 10136: enum class pointer_safety { relaxed, preferred, strict }; 10136: 10136: inline void 10136: declare_reachable(void*) { } 10136: 10136: template 10136: inline _Tp* 10136: undeclare_reachable(_Tp* __p) { return __p; } 10136: 10136: inline void 10136: declare_no_pointers(char*, size_t) { } 10136: 10136: inline void 10136: undeclare_no_pointers(char*, size_t) { } 10136: 10136: inline pointer_safety 10136: get_pointer_safety() noexcept { return pointer_safety::relaxed; } 10136: 10136: 10136: } 10136: # 428 "../../include/tbb/tbb_stddef.h" 2 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 434 "../../include/tbb/tbb_stddef.h" 10136: namespace tbb { 10136: namespace internal { 10136: 10136: 10136: template 10136: struct allocator_type { 10136: typedef T value_type; 10136: }; 10136: # 453 "../../include/tbb/tbb_stddef.h" 10136: template 10136: struct bool_constant { 10136: static const bool value = v; 10136: }; 10136: typedef bool_constant true_type; 10136: typedef bool_constant false_type; 10136: 10136: 10136: using std::allocator_traits; 10136: # 470 "../../include/tbb/tbb_stddef.h" 10136: template 10136: struct select_size_t_constant { 10136: 10136: 10136: static const size_t value = (size_t)((sizeof(size_t)==sizeof(u)) ? u : ull); 10136: }; 10136: 10136: 10136: using std::move; 10136: using std::forward; 10136: # 513 "../../include/tbb/tbb_stddef.h" 10136: using std::declval; 10136: 10136: 10136: 10136: template 10136: struct STATIC_ASSERTION_FAILED; 10136: 10136: template <> 10136: struct STATIC_ASSERTION_FAILED { enum {value=1};}; 10136: 10136: template<> 10136: struct STATIC_ASSERTION_FAILED; 10136: 10136: 10136: }} 10136: # 198 "../../src/test/harness.h" 2 10136: 10136: 10136: struct InitReporter { 10136: void (*default_terminate_handler)() ; 10136: InitReporter(): default_terminate_handler( 10136: # 202 "../../src/test/harness.h" 3 4 10136: __null 10136: # 202 "../../src/test/harness.h" 10136: ) { 10136: 10136: 10136: tbb::set_assertion_handler(ReportError); 10136: 10136: ((9107 <= tbb::TBB_runtime_interface_version())?(void)0:ReportWarning("../../src/test/harness.h",207,"TBB_INTERFACE_VERSION <= tbb::TBB_runtime_interface_version()","runtime version mismatch")); 10136: 10136: 10136: default_terminate_handler = std::set_terminate(handle_terminate); 10136: 10136: } 10136: static void handle_terminate(); 10136: }; 10136: static InitReporter InitReportError; 10136: 10136: void InitReporter::handle_terminate(){ 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 218, __FUNCTION__)->trace("std::terminate called.\n"); 10136: print_call_stack(); 10136: if (InitReportError.default_terminate_handler){ 10136: InitReportError.default_terminate_handler(); 10136: } 10136: } 10136: 10136: typedef void (*test_error_extra_t)(void); 10136: static test_error_extra_t ErrorExtraCall; 10136: 10136: void SetHarnessErrorProcessing( test_error_extra_t extra_call ) { 10136: ErrorExtraCall = extra_call; 10136: } 10136: 10136: 10136: void ReportError( const char* filename, int line, const char* expression, const char * message ) { 10136: print_call_stack(); 10136: 10136: 10136: 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 238, __FUNCTION__)->trace("%s:%d, assertion %s: %s\n", filename, line, expression, message ? message : "failed" ); 10136: 10136: 10136: if( ErrorExtraCall ) 10136: (*ErrorExtraCall)(); 10136: fflush( 10136: # 243 "../../src/test/harness.h" 3 4 10136: stdout 10136: # 243 "../../src/test/harness.h" 10136: ); fflush( 10136: # 243 "../../src/test/harness.h" 3 4 10136: stderr 10136: # 243 "../../src/test/harness.h" 10136: ); 10136: # 255 "../../src/test/harness.h" 10136: abort(); 10136: 10136: } 10136: 10136: void ReportWarning( const char* filename, int line, const char* expression, const char * message ) { 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 260, __FUNCTION__)->trace("Warning: %s:%d, assertion %s: %s\n", filename, line, expression, message ? message : "failed" ); 10136: } 10136: # 270 "../../src/test/harness.h" 10136: namespace Harness { 10136: 10136: template 10136: inline size_t array_length(const T(&)[N]) 10136: { 10136: return N; 10136: } 10136: 10136: template 10136: inline T* end( T(& array)[N]) 10136: { 10136: return array+ array_length(array) ; 10136: } 10136: 10136: } 10136: 10136: 10136: # 1 "../../include/tbb/blocked_range.h" 1 10136: # 24 "../../include/tbb/blocked_range.h" 10136: # 1 "../../include/tbb/tbb_stddef.h" 1 10136: # 25 "../../include/tbb/blocked_range.h" 2 10136: 10136: namespace tbb { 10136: # 39 "../../include/tbb/blocked_range.h" 10136: template 10136: class blocked_range { 10136: public: 10136: 10136: 10136: 10136: typedef Value const_iterator; 10136: 10136: 10136: typedef std::size_t size_type; 10136: 10136: 10136: 10136: blocked_range() : my_end(), my_begin() {} 10136: 10136: 10136: blocked_range( Value begin_, Value end_, size_type grainsize_=1 ) : 10136: my_end(end_), my_begin(begin_), my_grainsize(grainsize_) 10136: { 10136: ((my_grainsize>0)?((void)0) : tbb::assertion_failure("../../include/tbb/blocked_range.h",58,"my_grainsize>0","grainsize must be positive")); 10136: } 10136: 10136: 10136: const_iterator begin() const {return my_begin;} 10136: 10136: 10136: const_iterator end() const {return my_end;} 10136: 10136: 10136: 10136: size_type size() const { 10136: ((!(end() 10136: friend class blocked_range2d; 10136: 10136: template 10136: friend class blocked_range3d; 10136: }; 10136: 10136: } 10136: # 288 "../../src/test/harness.h" 2 10136: 10136: namespace Harness { 10136: template 10136: tbb::blocked_range make_blocked_range( T(& array)[N]){ return tbb::blocked_range(array, array + N);} 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: static bool Verbose; 10136: 10136: 10136: 10136: 10136: 10136: 10136: static int MinThread = 2; 10136: 10136: 10136: 10136: 10136: 10136: 10136: static int MaxThread = 4; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: static void ParseCommandLine( int argc, char* argv[] ) { 10136: if( !argc ) Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 322, __FUNCTION__)->trace("Command line with 0 arguments\n"); 10136: int i = 1; 10136: if( itrace("garbled nthread range\n"); 10136: exit(1); 10136: } 10136: if( MinThread<0 ) { 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 342, __FUNCTION__)->trace("nthread must be nonnegative\n"); 10136: exit(1); 10136: } 10136: if( MaxThreadtrace("nthread range is backwards\n"); 10136: exit(1); 10136: } 10136: ++i; 10136: } 10136: # 359 "../../src/test/harness.h" 10136: if( i!=argc ) { 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 360, __FUNCTION__)->trace("Usage: %s [-v] [nthread|minthread:maxthread]\n", argv[0] ); 10136: exit(1); 10136: } 10136: } 10136: # 379 "../../src/test/harness.h" 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: int main(int argc, char* argv[]) { 10136: ParseCommandLine( argc, argv ); 10136: # 421 "../../src/test/harness.h" 10136: int res = Harness::Unknown; 10136: # 431 "../../src/test/harness.h" 10136: { 10136: res = TestMain(); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: } 10136: 10136: ((res==Harness::Done || res==Harness::Skipped)?(void)0:ReportError("../../src/test/harness.h",442,"res==Harness::Done || res==Harness::Skipped","Wrong return code by TestMain")); 10136: 10136: 10136: 10136: 10136: 10136: 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 449, __FUNCTION__)->trace( res==Harness::Done ? "done\n" : "skip\n" ); 10136: 10136: return 0; 10136: 10136: } 10136: 10136: 10136: 10136: 10136: class NoAssign { 10136: 10136: void operator=( const NoAssign& ); 10136: public: 10136: NoAssign() {} 10136: }; 10136: 10136: 10136: class NoCopy: NoAssign { 10136: 10136: NoCopy( const NoCopy& ); 10136: public: 10136: NoCopy() {} 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class NativeParallelForTask: NoCopy { 10136: public: 10136: NativeParallelForTask( Index index_, const Body& body_ ) : 10136: index(index_), 10136: body(body_) 10136: {} 10136: 10136: 10136: void start() { 10136: # 512 "../../src/test/harness.h" 10136: const size_t MByte = 1024*1024; 10136: 10136: 10136: const size_t stack_size = 1*MByte; 10136: # 524 "../../src/test/harness.h" 10136: pthread_attr_t attr_stack; 10136: int status = pthread_attr_init(&attr_stack); 10136: ((0==status)?(void)0:ReportError("../../src/test/harness.h",526,"0==status","NativeParallelFor: pthread_attr_init failed")); 10136: status = pthread_attr_setstacksize( &attr_stack, stack_size ); 10136: ((0==status)?(void)0:ReportError("../../src/test/harness.h",528,"0==status","NativeParallelFor: pthread_attr_setstacksize failed")); 10136: status = pthread_create(&thread_id, &attr_stack, thread_function, this); 10136: ((0==status)?(void)0:ReportError("../../src/test/harness.h",530,"0==status","NativeParallelFor: pthread_create failed")); 10136: pthread_attr_destroy(&attr_stack); 10136: 10136: 10136: 10136: 10136: } 10136: 10136: 10136: void wait_to_finish() { 10136: 10136: 10136: 10136: 10136: 10136: int status = pthread_join( thread_id, 10136: # 545 "../../src/test/harness.h" 3 4 10136: __null 10136: # 545 "../../src/test/harness.h" 10136: ); 10136: ((!status)?(void)0:ReportError("../../src/test/harness.h",546,"!status","pthread_join failed")); 10136: 10136: 10136: 10136: 10136: } 10136: 10136: private: 10136: 10136: 10136: 10136: pthread_t thread_id; 10136: 10136: 10136: 10136: const Index index; 10136: 10136: 10136: const Body body; 10136: 10136: 10136: 10136: 10136: static void* thread_function(void* object) 10136: 10136: { 10136: NativeParallelForTask& self = *static_cast(object); 10136: (self.body)(self.index); 10136: 10136: 10136: 10136: 10136: 10136: 10136: return 0; 10136: } 10136: }; 10136: 10136: 10136: 10136: template 10136: void NativeParallelFor( Index n, const Body& body ) { 10136: typedef NativeParallelForTask task; 10136: 10136: if( n>0 ) { 10136: 10136: task* array = static_cast(operator new( n*sizeof(task) )); 10136: 10136: 10136: for( Index i=0; i!=n; ++i ) 10136: new( &array[i] ) task(i,body); 10136: 10136: 10136: for( Index i=0; i!=n; ++i ) 10136: array[i].start(); 10136: 10136: 10136: for( Index i=n; i; --i ) { 10136: array[i-1].wait_to_finish(); 10136: array[i-1].~task(); 10136: } 10136: 10136: 10136: operator delete(array); 10136: } 10136: } 10136: 10136: 10136: template 10136: void zero_fill(void* array, size_t n) { 10136: memset(array, 0, sizeof(T)*n); 10136: } 10136: # 629 "../../src/test/harness.h" 10136: template 10136: T1 min ( const T1& val1, const T2& val2 ) { 10136: return val1 < val2 ? val1 : val2; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: T1 max ( const T1& val1, const T2& val2 ) { 10136: return val1 < val2 ? val2 : val1; 10136: } 10136: 10136: 10136: template 10136: static inline bool is_aligned(T arg, size_t alignment) { 10136: return 0==((size_t)arg & (alignment-1)); 10136: } 10136: 10136: 10136: inline unsigned LinuxKernelVersion() 10136: { 10136: unsigned digit1, digit2, digit3; 10136: struct utsname utsnameBuf; 10136: 10136: if (-1 == uname(&utsnameBuf)) { 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 658, __FUNCTION__)->trace("Can't call uname: errno %d\n", 10136: # 658 "../../src/test/harness.h" 3 4 10136: (*__errno_location ()) 10136: # 658 "../../src/test/harness.h" 10136: ); 10136: exit(1); 10136: } 10136: 10136: if (3 != sscanf(utsnameBuf.release, "%u.%u.%u", &digit1, &digit2, &digit3)) { 10136: digit3 = 0; 10136: if (2 != sscanf(utsnameBuf.release, "%u.%u", &digit1, &digit2)) { 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/harness.h", 665, __FUNCTION__)->trace("Unable to parse OS release '%s'\n", utsnameBuf.release); 10136: exit(1); 10136: } 10136: } 10136: return 1000000*digit1+1000*digit2+digit3; 10136: } 10136: 10136: 10136: namespace Harness { 10136: 10136: 10136: 10136: class NoAfterlife { 10136: protected: 10136: enum state_t { 10136: LIVE=0x56781234, 10136: DEAD=0xDEADBEEF 10136: } m_state; 10136: 10136: public: 10136: NoAfterlife() : m_state(LIVE) {} 10136: NoAfterlife( const NoAfterlife& src ) : m_state(LIVE) { 10136: ((src.IsLive())?(void)0:ReportError("../../src/test/harness.h",687,"src.IsLive()","Constructing from the dead source")); 10136: } 10136: ~NoAfterlife() { 10136: ((IsLive())?(void)0:ReportError("../../src/test/harness.h",690,"IsLive()","Repeated destructor call")); 10136: m_state = DEAD; 10136: } 10136: const NoAfterlife& operator=( const NoAfterlife& src ) { 10136: ((IsLive())?(void)0:ReportError("../../src/test/harness.h",694,"IsLive()", 10136: # 694 "../../src/test/harness.h" 3 4 10136: __null 10136: # 694 "../../src/test/harness.h" 10136: )); 10136: ((src.IsLive())?(void)0:ReportError("../../src/test/harness.h",695,"src.IsLive()", 10136: # 695 "../../src/test/harness.h" 3 4 10136: __null 10136: # 695 "../../src/test/harness.h" 10136: )); 10136: return *this; 10136: } 10136: void AssertLive() const { 10136: ((IsLive())?(void)0:ReportError("../../src/test/harness.h",699,"IsLive()","Already dead")); 10136: } 10136: bool IsLive() const { 10136: return m_state == LIVE; 10136: } 10136: }; 10136: # 723 "../../src/test/harness.h" 10136: void Sleep ( int ms ) { 10136: timespec requested = { ms / 1000, (ms % 1000)*1000000 }; 10136: timespec remaining = { 0, 0 }; 10136: nanosleep(&requested, &remaining); 10136: } 10136: 10136: typedef pthread_t tid_t; 10136: tid_t CurrentTid () { return pthread_self(); } 10136: 10136: 10136: static const unsigned Primes[] = { 10136: 0x9e3779b1, 0xffe6cc59, 0x2109f6dd, 0x43977ab5, 0xba5703f5, 0xb495a877, 0xe1626741, 0x79695e6b, 10136: 0xbc98c09f, 0xd5bee2b3, 0x287488f9, 0x3af18231, 0x9677cd4d, 0xbe3a6929, 0xadc6a877, 0xdcf0674b, 10136: 0xbe4d6fe9, 0x5f15e201, 0x99afc3fd, 0xf3f16801, 0xe222cfff, 0x24ba5fdb, 0x0620452d, 0x79f149e3, 10136: 0xc8b93f49, 0x972702cd, 0xb07dd827, 0x6c97d5ed, 0x085a3d61, 0x46eb5ea7, 0x3d9910ed, 0x2e687b5b, 10136: 0x29609227, 0x6eb081f1, 0x0954c4e1, 0x9d114db9, 0x542acfa9, 0xb3e6bd7b, 0x0742d917, 0xe9f3ffa7, 10136: 0x54581edb, 0xf2480f45, 0x0bb9288f, 0xef1affc7, 0x85fa0ca7, 0x3ccc14db, 0xe6baf34b, 0x343377f7, 10136: 0x5ca19031, 0xe6d9293b, 0xf0a9f391, 0x5d2e980b, 0xfc411073, 0xc3749363, 0xb892d829, 0x3549366b, 10136: 0x629750ad, 0xb98294e5, 0x892d9483, 0xc235baf3, 0x3d2402a3, 0x6bdef3c9, 0xbec333cd, 0x40c9520f 10136: }; 10136: 10136: class FastRandom { 10136: unsigned x, a; 10136: public: 10136: unsigned short get() { 10136: unsigned short r = (unsigned short)(x >> 16); 10136: x = x*a + 1; 10136: return r; 10136: } 10136: explicit FastRandom( unsigned seed ) { 10136: x = seed; 10136: a = Primes[seed % (sizeof(Primes) / sizeof(Primes[0]))]; 10136: } 10136: }; 10136: template 10136: class FastRandomBody { 10136: FastRandom r; 10136: public: 10136: explicit FastRandomBody( unsigned seed ) : r(seed) {} 10136: 10136: 10136: T operator()() { return T(r.get()); } 10136: }; 10136: 10136: int SetEnv( const char *envname, const char *envval ) { 10136: ((envname && envval)?(void)0:ReportError("../../src/test/harness.h",768,"envname && envval","Harness::SetEnv() requires two valid C strings")); 10136: 10136: 10136: 10136: 10136: 10136: return setenv(envname, envval, 1); 10136: # 790 "../../src/test/harness.h" 10136: } 10136: 10136: char* GetEnv(const char *envname) { 10136: ((envname)?(void)0:ReportError("../../src/test/harness.h",793,"envname","Harness::GetEnv() requires a valid C string")); 10136: 10136: 10136: 10136: return std::getenv(envname); 10136: 10136: } 10136: 10136: class DummyBody { 10136: int m_numIters; 10136: public: 10136: explicit DummyBody( int iters ) : m_numIters( iters ) {} 10136: void operator()( int ) const { 10136: for ( volatile int i = 0; i < m_numIters; ++i ) {} 10136: } 10136: }; 10136: } 10136: # 25 "../../src/test/test_eh_algorithms.cpp" 2 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 1 3 4 10136: # 34 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/syslimits.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 1 3 4 10136: # 194 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 3 4 10136: # 1 "/usr/include/limits.h" 1 3 4 10136: # 26 "/usr/include/limits.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 10136: # 27 "/usr/include/limits.h" 2 3 4 10136: # 183 "/usr/include/limits.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 1 3 4 10136: # 160 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 1 3 4 10136: # 38 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4 10136: # 1 "/usr/include/linux/limits.h" 1 3 4 10136: # 39 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4 10136: # 161 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 10136: # 184 "/usr/include/limits.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix2_lim.h" 1 3 4 10136: # 188 "/usr/include/limits.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 1 3 4 10136: # 64 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/uio_lim.h" 1 3 4 10136: # 65 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 2 3 4 10136: # 192 "/usr/include/limits.h" 2 3 4 10136: # 195 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 2 3 4 10136: # 8 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/syslimits.h" 2 3 4 10136: # 35 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 2 3 4 10136: # 29 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/task_scheduler_init.h" 1 10136: # 25 "../../include/tbb/task_scheduler_init.h" 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 1 3 4 10136: # 26 "../../include/tbb/task_scheduler_init.h" 2 10136: 10136: 10136: 10136: 10136: namespace tbb { 10136: 10136: typedef std::size_t stack_size_type; 10136: 10136: 10136: namespace internal { 10136: 10136: 10136: class scheduler; 10136: } 10136: # 56 "../../include/tbb/task_scheduler_init.h" 10136: class task_scheduler_init: internal::no_copy { 10136: enum ExceptionPropagationMode { 10136: propagation_mode_exact = 1u, 10136: propagation_mode_captured = 2u, 10136: propagation_mode_mask = propagation_mode_exact | propagation_mode_captured 10136: }; 10136: 10136: 10136: internal::scheduler* my_scheduler; 10136: 10136: bool internal_terminate( bool blocking ); 10136: 10136: 10136: 10136: public: 10136: 10136: 10136: static const int automatic = -1; 10136: 10136: 10136: static const int deferred = -2; 10136: # 90 "../../include/tbb/task_scheduler_init.h" 10136: void initialize( int number_of_threads=automatic ); 10136: 10136: 10136: 10136: void initialize( int number_of_threads, stack_size_type thread_stack_size ); 10136: 10136: 10136: void terminate(); 10136: # 113 "../../include/tbb/task_scheduler_init.h" 10136: task_scheduler_init( int number_of_threads=automatic, stack_size_type thread_stack_size=0 ) : my_scheduler( 10136: # 113 "../../include/tbb/task_scheduler_init.h" 3 4 10136: __null 10136: # 113 "../../include/tbb/task_scheduler_init.h" 10136: ) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ((!(thread_stack_size & propagation_mode_mask))?((void)0) : tbb::assertion_failure("../../include/tbb/task_scheduler_init.h",122,"!(thread_stack_size & propagation_mode_mask)","Requested stack size is not aligned")); 10136: 10136: thread_stack_size |= 0 ? propagation_mode_captured : propagation_mode_exact; 10136: 10136: initialize( number_of_threads, thread_stack_size ); 10136: } 10136: 10136: 10136: ~task_scheduler_init() { 10136: if( my_scheduler ) 10136: terminate(); 10136: internal::poison_pointer( my_scheduler ); 10136: } 10136: # 153 "../../include/tbb/task_scheduler_init.h" 10136: static int default_num_threads (); 10136: 10136: 10136: bool is_active() const { return my_scheduler != 10136: # 156 "../../include/tbb/task_scheduler_init.h" 3 4 10136: __null 10136: # 156 "../../include/tbb/task_scheduler_init.h" 10136: ; } 10136: }; 10136: 10136: } 10136: # 30 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/tbb_exception.h" 1 10136: # 40 "../../include/tbb/tbb_exception.h" 10136: namespace tbb { 10136: 10136: 10136: class bad_last_alloc : public std::bad_alloc { 10136: public: 10136: const char* what() const throw() override; 10136: 10136: 10136: 10136: }; 10136: 10136: 10136: class improper_lock : public std::exception { 10136: public: 10136: const char* what() const throw() override; 10136: }; 10136: 10136: 10136: class user_abort : public std::exception { 10136: public: 10136: const char* what() const throw() override; 10136: }; 10136: 10136: 10136: class missing_wait : public std::exception { 10136: public: 10136: const char* what() const throw() override; 10136: }; 10136: 10136: 10136: class invalid_multiple_scheduling : public std::exception { 10136: public: 10136: const char* what() const throw() override; 10136: }; 10136: 10136: namespace internal { 10136: 10136: void throw_bad_last_alloc_exception_v4(); 10136: 10136: enum exception_id { 10136: eid_bad_alloc = 1, 10136: eid_bad_last_alloc, 10136: eid_nonpositive_step, 10136: eid_out_of_range, 10136: eid_segment_range_error, 10136: eid_index_range_error, 10136: eid_missing_wait, 10136: eid_invalid_multiple_scheduling, 10136: eid_improper_lock, 10136: eid_possible_deadlock, 10136: eid_operation_not_permitted, 10136: eid_condvar_wait_failed, 10136: eid_invalid_load_factor, 10136: eid_reserved, 10136: eid_invalid_swap, 10136: eid_reservation_length_error, 10136: eid_invalid_key, 10136: eid_user_abort, 10136: eid_reserved1, 10136: 10136: 10136: 10136: 10136: 10136: eid_bad_tagged_msg_cast, 10136: 10136: 10136: 10136: eid_max 10136: }; 10136: 10136: 10136: 10136: 10136: void throw_exception_v4 ( exception_id ); 10136: 10136: 10136: inline void throw_exception ( exception_id eid ) { throw_exception_v4(eid); } 10136: 10136: } 10136: } 10136: 10136: 10136: # 1 "../../include/tbb/tbb_allocator.h" 1 10136: # 36 "../../include/tbb/tbb_allocator.h" 10136: # 1 "/usr/include/c++/8/cstring" 1 3 10136: # 39 "/usr/include/c++/8/cstring" 3 10136: 10136: # 40 "/usr/include/c++/8/cstring" 3 10136: # 37 "../../include/tbb/tbb_allocator.h" 2 10136: 10136: 10136: 10136: 10136: 10136: namespace tbb { 10136: 10136: 10136: namespace internal { 10136: 10136: 10136: 10136: void deallocate_via_handler_v3( void *p ); 10136: 10136: 10136: 10136: void* allocate_via_handler_v3( size_t n ); 10136: 10136: 10136: bool is_malloc_used_v3(); 10136: } 10136: # 72 "../../include/tbb/tbb_allocator.h" 10136: template 10136: class tbb_allocator { 10136: public: 10136: typedef typename internal::allocator_type::value_type value_type; 10136: typedef value_type* pointer; 10136: typedef const value_type* const_pointer; 10136: typedef value_type& reference; 10136: typedef const value_type& const_reference; 10136: typedef size_t size_type; 10136: typedef ptrdiff_t difference_type; 10136: template struct rebind { 10136: typedef tbb_allocator other; 10136: }; 10136: 10136: 10136: enum malloc_type { 10136: scalable, 10136: standard 10136: }; 10136: 10136: tbb_allocator() throw() {} 10136: tbb_allocator( const tbb_allocator& ) throw() {} 10136: template tbb_allocator(const tbb_allocator&) throw() {} 10136: 10136: pointer address(reference x) const {return &x;} 10136: const_pointer address(const_reference x) const {return &x;} 10136: 10136: 10136: pointer allocate( size_type n, const void* = 0) { 10136: return pointer(internal::allocate_via_handler_v3( n * sizeof(value_type) )); 10136: } 10136: 10136: 10136: void deallocate( pointer p, size_type ) { 10136: internal::deallocate_via_handler_v3(p); 10136: } 10136: 10136: 10136: size_type max_size() const throw() { 10136: size_type max = static_cast(-1) / sizeof (value_type); 10136: return (max > 0 ? max : 1); 10136: } 10136: 10136: 10136: 10136: template 10136: void construct(U *p, Args&&... args) 10136: { ::new((void *)p) U(std::forward(args)...); } 10136: # 128 "../../include/tbb/tbb_allocator.h" 10136: void destroy( pointer p ) {p->~value_type();} 10136: 10136: 10136: static malloc_type allocator_type() { 10136: return internal::is_malloc_used_v3() ? standard : scalable; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: class tbb_allocator { 10136: public: 10136: typedef void* pointer; 10136: typedef const void* const_pointer; 10136: typedef void value_type; 10136: template struct rebind { 10136: typedef tbb_allocator other; 10136: }; 10136: }; 10136: 10136: template 10136: inline bool operator==( const tbb_allocator&, const tbb_allocator& ) {return true;} 10136: 10136: template 10136: inline bool operator!=( const tbb_allocator&, const tbb_allocator& ) {return false;} 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template class Allocator = tbb_allocator> 10136: class zero_allocator : public Allocator 10136: { 10136: public: 10136: typedef Allocator base_allocator_type; 10136: typedef typename base_allocator_type::value_type value_type; 10136: typedef typename base_allocator_type::pointer pointer; 10136: typedef typename base_allocator_type::const_pointer const_pointer; 10136: typedef typename base_allocator_type::reference reference; 10136: typedef typename base_allocator_type::const_reference const_reference; 10136: typedef typename base_allocator_type::size_type size_type; 10136: typedef typename base_allocator_type::difference_type difference_type; 10136: template struct rebind { 10136: typedef zero_allocator other; 10136: }; 10136: 10136: zero_allocator() throw() { } 10136: zero_allocator(const zero_allocator &a) throw() : base_allocator_type( a ) { } 10136: template 10136: zero_allocator(const zero_allocator &a) throw() : base_allocator_type( Allocator( a ) ) { } 10136: 10136: pointer allocate(const size_type n, const void *hint = 0 ) { 10136: pointer ptr = base_allocator_type::allocate( n, hint ); 10136: std::memset( ptr, 0, n * sizeof(value_type) ); 10136: return ptr; 10136: } 10136: }; 10136: 10136: 10136: 10136: template class Allocator> 10136: class zero_allocator : public Allocator { 10136: public: 10136: typedef Allocator base_allocator_type; 10136: typedef typename base_allocator_type::value_type value_type; 10136: typedef typename base_allocator_type::pointer pointer; 10136: typedef typename base_allocator_type::const_pointer const_pointer; 10136: template struct rebind { 10136: typedef zero_allocator other; 10136: }; 10136: }; 10136: 10136: template class B1, typename T2, template class B2> 10136: inline bool operator==( const zero_allocator &a, const zero_allocator &b) { 10136: return static_cast< B1 >(a) == static_cast< B2 >(b); 10136: } 10136: template class B1, typename T2, template class B2> 10136: inline bool operator!=( const zero_allocator &a, const zero_allocator &b) { 10136: return static_cast< B1 >(a) != static_cast< B2 >(b); 10136: } 10136: 10136: } 10136: # 124 "../../include/tbb/tbb_exception.h" 2 10136: 10136: 10136: namespace tbb { 10136: # 149 "../../include/tbb/tbb_exception.h" 10136: class tbb_exception : public std::exception 10136: { 10136: 10136: 10136: 10136: void* operator new ( size_t ); 10136: 10136: public: 10136: # 167 "../../include/tbb/tbb_exception.h" 10136: virtual tbb_exception* move () throw() = 0; 10136: 10136: 10136: 10136: 10136: virtual void destroy () throw() = 0; 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual void throw_self () = 0; 10136: 10136: 10136: virtual const char* name() const throw() = 0; 10136: 10136: 10136: virtual const char* what() const throw() override = 0; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void operator delete ( void* p ) { 10136: internal::deallocate_via_handler_v3(p); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: class captured_exception : public tbb_exception 10136: { 10136: public: 10136: captured_exception ( const captured_exception& src ) 10136: : tbb_exception(src), my_dynamic(false) 10136: { 10136: set(src.my_exception_name, src.my_exception_info); 10136: } 10136: 10136: captured_exception ( const char* name_, const char* info ) 10136: : my_dynamic(false) 10136: { 10136: set(name_, info); 10136: } 10136: 10136: ~captured_exception () throw(); 10136: 10136: captured_exception& operator= ( const captured_exception& src ) { 10136: if ( this != &src ) { 10136: clear(); 10136: set(src.my_exception_name, src.my_exception_info); 10136: } 10136: return *this; 10136: } 10136: 10136: captured_exception* move () throw() override; 10136: 10136: void destroy () throw() override; 10136: 10136: void throw_self () override { throw *this; } 10136: 10136: const char* name() const throw() override; 10136: 10136: const char* what() const throw() override; 10136: 10136: void set ( const char* name, const char* info ) throw(); 10136: void clear () throw(); 10136: 10136: private: 10136: 10136: captured_exception() {} 10136: 10136: 10136: static captured_exception* allocate ( const char* name, const char* info ); 10136: 10136: bool my_dynamic; 10136: const char* my_exception_name; 10136: const char* my_exception_info; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class movable_exception : public tbb_exception 10136: { 10136: typedef movable_exception self_type; 10136: 10136: public: 10136: movable_exception ( const ExceptionData& data_ ) 10136: : my_exception_data(data_) 10136: , my_dynamic(false) 10136: , my_exception_name( 10136: 10136: typeid(self_type).name() 10136: 10136: 10136: 10136: ) 10136: {} 10136: 10136: movable_exception ( const movable_exception& src ) throw () 10136: : tbb_exception(src) 10136: , my_exception_data(src.my_exception_data) 10136: , my_dynamic(false) 10136: , my_exception_name(src.my_exception_name) 10136: {} 10136: 10136: ~movable_exception () throw() {} 10136: 10136: const movable_exception& operator= ( const movable_exception& src ) { 10136: if ( this != &src ) { 10136: my_exception_data = src.my_exception_data; 10136: my_exception_name = src.my_exception_name; 10136: } 10136: return *this; 10136: } 10136: 10136: ExceptionData& data () throw() { return my_exception_data; } 10136: 10136: const ExceptionData& data () const throw() { return my_exception_data; } 10136: 10136: const char* name () const throw() override { return my_exception_name; } 10136: 10136: const char* what () const throw() override { return "tbb::movable_exception"; } 10136: 10136: movable_exception* move () throw() override { 10136: void* e = internal::allocate_via_handler_v3(sizeof(movable_exception)); 10136: if ( e ) { 10136: ::new (e) movable_exception(*this); 10136: ((movable_exception*)e)->my_dynamic = true; 10136: } 10136: return (movable_exception*)e; 10136: } 10136: void destroy () throw() override { 10136: ((my_dynamic)?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_exception.h",310,"my_dynamic","Method destroy can be called only on dynamically allocated movable_exceptions")); 10136: if ( my_dynamic ) { 10136: this->~movable_exception(); 10136: internal::deallocate_via_handler_v3(this); 10136: } 10136: } 10136: void throw_self () override { throw *this; } 10136: 10136: protected: 10136: 10136: ExceptionData my_exception_data; 10136: 10136: private: 10136: 10136: bool my_dynamic; 10136: 10136: 10136: 10136: const char* my_exception_name; 10136: }; 10136: 10136: 10136: namespace internal { 10136: 10136: 10136: 10136: 10136: class tbb_exception_ptr { 10136: std::exception_ptr my_ptr; 10136: 10136: public: 10136: static tbb_exception_ptr* allocate (); 10136: static tbb_exception_ptr* allocate ( const tbb_exception& tag ); 10136: 10136: static tbb_exception_ptr* allocate ( captured_exception& src ); 10136: 10136: 10136: 10136: void destroy () throw(); 10136: 10136: 10136: void throw_self () { std::rethrow_exception(my_ptr); } 10136: 10136: private: 10136: tbb_exception_ptr ( const std::exception_ptr& src ) : my_ptr(src) {} 10136: tbb_exception_ptr ( const captured_exception& src ) : 10136: 10136: my_ptr(std::make_exception_ptr(src)) 10136: 10136: 10136: 10136: {} 10136: }; 10136: 10136: } 10136: 10136: 10136: } 10136: # 31 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/task.h" 1 10136: # 25 "../../include/tbb/task.h" 10136: # 1 "../../include/tbb/tbb_machine.h" 1 10136: # 119 "../../include/tbb/tbb_machine.h" 10136: namespace tbb { 10136: namespace internal { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct machine_load_store; 10136: 10136: template 10136: struct machine_load_store_relaxed; 10136: 10136: template 10136: struct machine_load_store_seq_cst; 10136: 10136: 10136: 10136: 10136: template struct atomic_selector; 10136: 10136: template<> struct atomic_selector<1> { 10136: typedef int8_t word; 10136: inline static word fetch_store ( volatile void* location, word value ); 10136: }; 10136: 10136: template<> struct atomic_selector<2> { 10136: typedef int16_t word; 10136: inline static word fetch_store ( volatile void* location, word value ); 10136: }; 10136: 10136: template<> struct atomic_selector<4> { 10136: 10136: 10136: 10136: 10136: typedef int32_t word; 10136: 10136: inline static word fetch_store ( volatile void* location, word value ); 10136: }; 10136: 10136: template<> struct atomic_selector<8> { 10136: typedef int64_t word; 10136: inline static word fetch_store ( volatile void* location, word value ); 10136: }; 10136: 10136: }} 10136: # 248 "../../include/tbb/tbb_machine.h" 10136: # 1 "../../include/tbb/machine/gcc_armv7.h" 1 10136: # 34 "../../include/tbb/machine/gcc_armv7.h" 10136: # 1 "/usr/include/arm-linux-gnueabihf/sys/param.h" 1 3 4 10136: # 23 "/usr/include/arm-linux-gnueabihf/sys/param.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/sys/param.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/sys/param.h" 2 3 4 10136: 10136: # 1 "/usr/include/signal.h" 1 3 4 10136: # 27 "/usr/include/signal.h" 3 4 10136: 10136: # 27 "/usr/include/signal.h" 3 4 10136: extern "C" { 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/signum.h" 1 3 4 10136: # 26 "/usr/include/arm-linux-gnueabihf/bits/signum.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/signum-generic.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/bits/signum.h" 2 3 4 10136: # 31 "/usr/include/signal.h" 2 3 4 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sig_atomic_t.h" 1 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef __sig_atomic_t sig_atomic_t; 10136: # 33 "/usr/include/signal.h" 2 3 4 10136: # 57 "/usr/include/signal.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 1 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 10136: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigval_t.h" 1 3 4 10136: 10136: 10136: 10136: 10136: union sigval 10136: { 10136: int sival_int; 10136: void *sival_ptr; 10136: }; 10136: 10136: typedef union sigval sigval_t; 10136: # 7 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 10136: # 16 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-arch.h" 1 3 4 10136: # 17 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 10136: # 36 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 10136: typedef struct 10136: { 10136: int si_signo; 10136: 10136: int si_errno; 10136: 10136: int si_code; 10136: # 51 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 10136: union 10136: { 10136: int _pad[((128 / sizeof (int)) - 3)]; 10136: 10136: 10136: struct 10136: { 10136: __pid_t si_pid; 10136: __uid_t si_uid; 10136: } _kill; 10136: 10136: 10136: struct 10136: { 10136: int si_tid; 10136: int si_overrun; 10136: sigval_t si_sigval; 10136: } _timer; 10136: 10136: 10136: struct 10136: { 10136: __pid_t si_pid; 10136: __uid_t si_uid; 10136: sigval_t si_sigval; 10136: } _rt; 10136: 10136: 10136: struct 10136: { 10136: __pid_t si_pid; 10136: __uid_t si_uid; 10136: int si_status; 10136: __clock_t si_utime; 10136: __clock_t si_stime; 10136: } _sigchld; 10136: 10136: 10136: struct 10136: { 10136: void *si_addr; 10136: 10136: short int si_addr_lsb; 10136: union 10136: { 10136: 10136: struct 10136: { 10136: void *_lower; 10136: void *_upper; 10136: } _addr_bnd; 10136: 10136: __uint32_t _pkey; 10136: } _bounds; 10136: } _sigfault; 10136: 10136: 10136: struct 10136: { 10136: long int si_band; 10136: int si_fd; 10136: } _sigpoll; 10136: 10136: 10136: 10136: struct 10136: { 10136: void *_call_addr; 10136: int _syscall; 10136: unsigned int _arch; 10136: } _sigsys; 10136: 10136: } _sifields; 10136: } siginfo_t ; 10136: # 58 "/usr/include/signal.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 1 3 4 10136: # 35 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 3 4 10136: enum 10136: { 10136: SI_ASYNCNL = -60, 10136: SI_TKILL = -6, 10136: SI_SIGIO, 10136: 10136: SI_ASYNCIO, 10136: SI_MESGQ, 10136: SI_TIMER, 10136: 10136: 10136: 10136: 10136: 10136: SI_QUEUE, 10136: SI_USER, 10136: SI_KERNEL = 0x80 10136: # 63 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 3 4 10136: }; 10136: 10136: 10136: 10136: 10136: enum 10136: { 10136: ILL_ILLOPC = 1, 10136: 10136: ILL_ILLOPN, 10136: 10136: ILL_ILLADR, 10136: 10136: ILL_ILLTRP, 10136: 10136: ILL_PRVOPC, 10136: 10136: ILL_PRVREG, 10136: 10136: ILL_COPROC, 10136: 10136: ILL_BADSTK 10136: 10136: }; 10136: 10136: 10136: enum 10136: { 10136: FPE_INTDIV = 1, 10136: 10136: FPE_INTOVF, 10136: 10136: FPE_FLTDIV, 10136: 10136: FPE_FLTOVF, 10136: 10136: FPE_FLTUND, 10136: 10136: FPE_FLTRES, 10136: 10136: FPE_FLTINV, 10136: 10136: FPE_FLTSUB 10136: 10136: }; 10136: 10136: 10136: enum 10136: { 10136: SEGV_MAPERR = 1, 10136: 10136: SEGV_ACCERR 10136: 10136: }; 10136: 10136: 10136: enum 10136: { 10136: BUS_ADRALN = 1, 10136: 10136: BUS_ADRERR, 10136: 10136: BUS_OBJERR, 10136: 10136: BUS_MCEERR_AR, 10136: 10136: BUS_MCEERR_AO 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: enum 10136: { 10136: TRAP_BRKPT = 1, 10136: 10136: TRAP_TRACE 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: enum 10136: { 10136: CLD_EXITED = 1, 10136: 10136: CLD_KILLED, 10136: 10136: CLD_DUMPED, 10136: 10136: CLD_TRAPPED, 10136: 10136: CLD_STOPPED, 10136: 10136: CLD_CONTINUED 10136: 10136: }; 10136: 10136: 10136: enum 10136: { 10136: POLL_IN = 1, 10136: 10136: POLL_OUT, 10136: 10136: POLL_MSG, 10136: 10136: POLL_ERR, 10136: 10136: POLL_PRI, 10136: 10136: POLL_HUP 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts-arch.h" 1 3 4 10136: # 185 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 2 3 4 10136: # 59 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 1 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 10136: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 2 3 4 10136: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 3 4 10136: typedef struct sigevent 10136: { 10136: sigval_t sigev_value; 10136: int sigev_signo; 10136: int sigev_notify; 10136: 10136: union 10136: { 10136: int _pad[((64 / sizeof (int)) - 3)]; 10136: 10136: 10136: 10136: __pid_t _tid; 10136: 10136: struct 10136: { 10136: void (*_function) (sigval_t); 10136: pthread_attr_t *_attribute; 10136: } _sigev_thread; 10136: } _sigev_un; 10136: } sigevent_t; 10136: # 63 "/usr/include/signal.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigevent-consts.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/bits/sigevent-consts.h" 3 4 10136: enum 10136: { 10136: SIGEV_SIGNAL = 0, 10136: 10136: SIGEV_NONE, 10136: 10136: SIGEV_THREAD, 10136: 10136: 10136: SIGEV_THREAD_ID = 4 10136: 10136: 10136: }; 10136: # 64 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: 10136: 10136: typedef void (*__sighandler_t) (int); 10136: 10136: 10136: 10136: 10136: extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) 10136: throw (); 10136: 10136: extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) 10136: throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __sighandler_t signal (int __sig, __sighandler_t __handler) 10136: throw (); 10136: # 108 "/usr/include/signal.h" 3 4 10136: extern int kill (__pid_t __pid, int __sig) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int killpg (__pid_t __pgrp, int __sig) throw (); 10136: 10136: 10136: 10136: extern int raise (int __sig) throw (); 10136: 10136: 10136: 10136: extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) 10136: throw (); 10136: extern int gsignal (int __sig) throw (); 10136: 10136: 10136: 10136: 10136: extern void psignal (int __sig, const char *__s); 10136: 10136: 10136: extern void psiginfo (const siginfo_t *__pinfo, const char *__s); 10136: # 147 "/usr/include/signal.h" 3 4 10136: extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); 10136: # 166 "/usr/include/signal.h" 3 4 10136: extern int sigblock (int __mask) throw () __attribute__ ((__deprecated__)); 10136: 10136: 10136: extern int sigsetmask (int __mask) throw () __attribute__ ((__deprecated__)); 10136: 10136: 10136: extern int siggetmask (void) throw () __attribute__ ((__deprecated__)); 10136: # 181 "/usr/include/signal.h" 3 4 10136: typedef __sighandler_t sighandler_t; 10136: 10136: 10136: 10136: 10136: typedef __sighandler_t sig_t; 10136: 10136: 10136: 10136: 10136: 10136: extern int sigemptyset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int sigfillset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int sigaddset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int sigdelset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int sigismember (const sigset_t *__set, int __signo) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int sigisemptyset (const sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int sigandset (sigset_t *__set, const sigset_t *__left, 10136: const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3))); 10136: 10136: 10136: extern int sigorset (sigset_t *__set, const sigset_t *__left, 10136: const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3))); 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigaction.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/sigaction.h" 3 4 10136: struct sigaction 10136: { 10136: 10136: 10136: union 10136: { 10136: 10136: __sighandler_t sa_handler; 10136: 10136: void (*sa_sigaction) (int, siginfo_t *, void *); 10136: } 10136: __sigaction_handler; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: __sigset_t sa_mask; 10136: 10136: 10136: int sa_flags; 10136: 10136: 10136: void (*sa_restorer) (void); 10136: }; 10136: # 223 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: extern int sigprocmask (int __how, const sigset_t *__restrict __set, 10136: sigset_t *__restrict __oset) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int sigaction (int __sig, const struct sigaction *__restrict __act, 10136: struct sigaction *__restrict __oact) throw (); 10136: 10136: 10136: extern int sigpending (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig) 10136: __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int sigwaitinfo (const sigset_t *__restrict __set, 10136: siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int sigtimedwait (const sigset_t *__restrict __set, 10136: siginfo_t *__restrict __info, 10136: const struct timespec *__restrict __timeout) 10136: __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val) 10136: throw (); 10136: # 282 "/usr/include/signal.h" 3 4 10136: extern const char *const _sys_siglist[(64 + 1)]; 10136: extern const char *const sys_siglist[(64 + 1)]; 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 1 3 4 10136: # 30 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/asm/sigcontext.h" 1 3 4 10136: # 9 "/usr/include/arm-linux-gnueabihf/asm/sigcontext.h" 3 4 10136: struct sigcontext { 10136: unsigned long trap_no; 10136: unsigned long error_code; 10136: unsigned long oldmask; 10136: unsigned long arm_r0; 10136: unsigned long arm_r1; 10136: unsigned long arm_r2; 10136: unsigned long arm_r3; 10136: unsigned long arm_r4; 10136: unsigned long arm_r5; 10136: unsigned long arm_r6; 10136: unsigned long arm_r7; 10136: unsigned long arm_r8; 10136: unsigned long arm_r9; 10136: unsigned long arm_r10; 10136: unsigned long arm_fp; 10136: unsigned long arm_ip; 10136: unsigned long arm_sp; 10136: unsigned long arm_lr; 10136: unsigned long arm_pc; 10136: unsigned long arm_cpsr; 10136: unsigned long fault_address; 10136: }; 10136: # 31 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 35 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 2 3 4 10136: # 288 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: extern int sigreturn (struct sigcontext *__scp) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 298 "/usr/include/signal.h" 2 3 4 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 1 3 4 10136: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 2 3 4 10136: 10136: 10136: typedef struct 10136: { 10136: void *ss_sp; 10136: int ss_flags; 10136: size_t ss_size; 10136: } stack_t; 10136: # 300 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/sys/ucontext.h" 1 3 4 10136: # 31 "/usr/include/arm-linux-gnueabihf/sys/ucontext.h" 3 4 10136: typedef int greg_t; 10136: 10136: 10136: 10136: 10136: 10136: typedef greg_t gregset_t[18]; 10136: 10136: 10136: enum 10136: { 10136: REG_R0 = 0, 10136: 10136: REG_R1 = 1, 10136: 10136: REG_R2 = 2, 10136: 10136: REG_R3 = 3, 10136: 10136: REG_R4 = 4, 10136: 10136: REG_R5 = 5, 10136: 10136: REG_R6 = 6, 10136: 10136: REG_R7 = 7, 10136: 10136: REG_R8 = 8, 10136: 10136: REG_R9 = 9, 10136: 10136: REG_R10 = 10, 10136: 10136: REG_R11 = 11, 10136: 10136: REG_R12 = 12, 10136: 10136: REG_R13 = 13, 10136: 10136: REG_R14 = 14, 10136: 10136: REG_R15 = 15 10136: 10136: }; 10136: 10136: struct _libc_fpstate 10136: { 10136: struct 10136: { 10136: unsigned int sign1:1; 10136: unsigned int unused:15; 10136: unsigned int sign2:1; 10136: unsigned int exponent:14; 10136: unsigned int j:1; 10136: unsigned int mantissa1:31; 10136: unsigned int mantissa0:32; 10136: } fpregs[8]; 10136: unsigned int fpsr:32; 10136: unsigned int fpcr:32; 10136: unsigned char ftype[8]; 10136: unsigned int init_flag; 10136: }; 10136: 10136: typedef struct _libc_fpstate fpregset_t; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef struct sigcontext mcontext_t; 10136: 10136: 10136: typedef struct ucontext_t 10136: { 10136: unsigned long uc_flags; 10136: struct ucontext_t *uc_link; 10136: stack_t uc_stack; 10136: mcontext_t uc_mcontext; 10136: sigset_t uc_sigmask; 10136: unsigned long uc_regspace[128] __attribute__((__aligned__(8))); 10136: } ucontext_t; 10136: # 303 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int siginterrupt (int __sig, int __interrupt) throw (); 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigstack.h" 1 3 4 10136: # 313 "/usr/include/signal.h" 2 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/ss_flags.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/bits/ss_flags.h" 3 4 10136: enum 10136: { 10136: SS_ONSTACK = 1, 10136: 10136: SS_DISABLE 10136: 10136: }; 10136: # 314 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: 10136: extern int sigaltstack (const stack_t *__restrict __ss, 10136: stack_t *__restrict __oss) throw (); 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sigstack.h" 1 3 4 10136: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sigstack.h" 3 4 10136: struct sigstack 10136: { 10136: void *ss_sp; 10136: int ss_onstack; 10136: }; 10136: # 324 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) 10136: throw () __attribute__ ((__deprecated__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int sighold (int __sig) throw (); 10136: 10136: 10136: extern int sigrelse (int __sig) throw (); 10136: 10136: 10136: extern int sigignore (int __sig) throw (); 10136: 10136: 10136: extern __sighandler_t sigset (int __sig, __sighandler_t __disp) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigthread.h" 1 3 4 10136: # 31 "/usr/include/arm-linux-gnueabihf/bits/sigthread.h" 3 4 10136: extern int pthread_sigmask (int __how, 10136: const __sigset_t *__restrict __newmask, 10136: __sigset_t *__restrict __oldmask)throw (); 10136: 10136: 10136: extern int pthread_kill (pthread_t __threadid, int __signo) throw (); 10136: 10136: 10136: 10136: extern int pthread_sigqueue (pthread_t __threadid, int __signo, 10136: const union sigval __value) throw (); 10136: # 356 "/usr/include/signal.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int __libc_current_sigrtmin (void) throw (); 10136: 10136: extern int __libc_current_sigrtmax (void) throw (); 10136: 10136: 10136: 10136: 10136: } 10136: # 29 "/usr/include/arm-linux-gnueabihf/sys/param.h" 2 3 4 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/param.h" 1 3 4 10136: # 28 "/usr/include/arm-linux-gnueabihf/bits/param.h" 3 4 10136: # 1 "/usr/include/linux/param.h" 1 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/asm/param.h" 1 3 4 10136: # 1 "/usr/include/asm-generic/param.h" 1 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/asm/param.h" 2 3 4 10136: # 5 "/usr/include/linux/param.h" 2 3 4 10136: # 29 "/usr/include/arm-linux-gnueabihf/bits/param.h" 2 3 4 10136: # 32 "/usr/include/arm-linux-gnueabihf/sys/param.h" 2 3 4 10136: # 35 "../../include/tbb/machine/gcc_armv7.h" 2 10136: # 1 "/usr/include/unistd.h" 1 3 4 10136: # 27 "/usr/include/unistd.h" 3 4 10136: extern "C" { 10136: # 205 "/usr/include/unistd.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix_opt.h" 1 3 4 10136: # 206 "/usr/include/unistd.h" 2 3 4 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 1 3 4 10136: # 22 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 10136: # 23 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 2 3 4 10136: # 210 "/usr/include/unistd.h" 2 3 4 10136: # 229 "/usr/include/unistd.h" 3 4 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h" 1 3 4 10136: # 230 "/usr/include/unistd.h" 2 3 4 10136: # 277 "/usr/include/unistd.h" 3 4 10136: typedef __socklen_t socklen_t; 10136: # 290 "/usr/include/unistd.h" 3 4 10136: extern int access (const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern int euidaccess (const char *__name, int __type) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern int eaccess (const char *__name, int __type) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int faccessat (int __fd, const char *__file, int __type, int __flag) 10136: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 10136: # 337 "/usr/include/unistd.h" 3 4 10136: extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw (); 10136: # 348 "/usr/include/unistd.h" 3 4 10136: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) 10136: throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int close (int __fd); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)); 10136: # 379 "/usr/include/unistd.h" 3 4 10136: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, 10136: __off_t __offset) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern ssize_t pwrite (int __fd, const void *__buf, size_t __n, 10136: __off_t __offset) __attribute__ ((__warn_unused_result__)); 10136: # 407 "/usr/include/unistd.h" 3 4 10136: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, 10136: __off64_t __offset) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, 10136: __off64_t __offset) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int pipe (int __pipedes[2]) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int pipe2 (int __pipedes[2], int __flags) throw () __attribute__ ((__warn_unused_result__)); 10136: # 435 "/usr/include/unistd.h" 3 4 10136: extern unsigned int alarm (unsigned int __seconds) throw (); 10136: # 447 "/usr/include/unistd.h" 3 4 10136: extern unsigned int sleep (unsigned int __seconds); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) 10136: throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int usleep (__useconds_t __useconds); 10136: # 472 "/usr/include/unistd.h" 3 4 10136: extern int pause (void); 10136: 10136: 10136: 10136: extern int chown (const char *__file, __uid_t __owner, __gid_t __group) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fchownat (int __fd, const char *__file, __uid_t __owner, 10136: __gid_t __group, int __flag) 10136: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern int chdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern int fchdir (int __fd) throw () __attribute__ ((__warn_unused_result__)); 10136: # 514 "/usr/include/unistd.h" 3 4 10136: extern char *getcwd (char *__buf, size_t __size) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern char *get_current_dir_name (void) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *getwd (char *__buf) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int dup (int __fd) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: extern int dup2 (int __fd, int __fd2) throw (); 10136: 10136: 10136: 10136: 10136: extern int dup3 (int __fd, int __fd2, int __flags) throw (); 10136: 10136: 10136: 10136: extern char **__environ; 10136: 10136: extern char **environ; 10136: 10136: 10136: 10136: 10136: 10136: extern int execve (const char *__path, char *const __argv[], 10136: char *const __envp[]) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: 10136: 10136: extern int execv (const char *__path, char *const __argv[]) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int execle (const char *__path, const char *__arg, ...) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int execl (const char *__path, const char *__arg, ...) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern int execvp (const char *__file, char *const __argv[]) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern int execlp (const char *__file, const char *__arg, ...) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: extern int execvpe (const char *__file, char *const __argv[], 10136: char *const __envp[]) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: 10136: 10136: extern int nice (int __inc) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern void _exit (int __status) __attribute__ ((__noreturn__)); 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 3 4 10136: enum 10136: { 10136: _PC_LINK_MAX, 10136: 10136: _PC_MAX_CANON, 10136: 10136: _PC_MAX_INPUT, 10136: 10136: _PC_NAME_MAX, 10136: 10136: _PC_PATH_MAX, 10136: 10136: _PC_PIPE_BUF, 10136: 10136: _PC_CHOWN_RESTRICTED, 10136: 10136: _PC_NO_TRUNC, 10136: 10136: _PC_VDISABLE, 10136: 10136: _PC_SYNC_IO, 10136: 10136: _PC_ASYNC_IO, 10136: 10136: _PC_PRIO_IO, 10136: 10136: _PC_SOCK_MAXBUF, 10136: 10136: _PC_FILESIZEBITS, 10136: 10136: _PC_REC_INCR_XFER_SIZE, 10136: 10136: _PC_REC_MAX_XFER_SIZE, 10136: 10136: _PC_REC_MIN_XFER_SIZE, 10136: 10136: _PC_REC_XFER_ALIGN, 10136: 10136: _PC_ALLOC_SIZE_MIN, 10136: 10136: _PC_SYMLINK_MAX, 10136: 10136: _PC_2_SYMLINKS 10136: 10136: }; 10136: 10136: 10136: enum 10136: { 10136: _SC_ARG_MAX, 10136: 10136: _SC_CHILD_MAX, 10136: 10136: _SC_CLK_TCK, 10136: 10136: _SC_NGROUPS_MAX, 10136: 10136: _SC_OPEN_MAX, 10136: 10136: _SC_STREAM_MAX, 10136: 10136: _SC_TZNAME_MAX, 10136: 10136: _SC_JOB_CONTROL, 10136: 10136: _SC_SAVED_IDS, 10136: 10136: _SC_REALTIME_SIGNALS, 10136: 10136: _SC_PRIORITY_SCHEDULING, 10136: 10136: _SC_TIMERS, 10136: 10136: _SC_ASYNCHRONOUS_IO, 10136: 10136: _SC_PRIORITIZED_IO, 10136: 10136: _SC_SYNCHRONIZED_IO, 10136: 10136: _SC_FSYNC, 10136: 10136: _SC_MAPPED_FILES, 10136: 10136: _SC_MEMLOCK, 10136: 10136: _SC_MEMLOCK_RANGE, 10136: 10136: _SC_MEMORY_PROTECTION, 10136: 10136: _SC_MESSAGE_PASSING, 10136: 10136: _SC_SEMAPHORES, 10136: 10136: _SC_SHARED_MEMORY_OBJECTS, 10136: 10136: _SC_AIO_LISTIO_MAX, 10136: 10136: _SC_AIO_MAX, 10136: 10136: _SC_AIO_PRIO_DELTA_MAX, 10136: 10136: _SC_DELAYTIMER_MAX, 10136: 10136: _SC_MQ_OPEN_MAX, 10136: 10136: _SC_MQ_PRIO_MAX, 10136: 10136: _SC_VERSION, 10136: 10136: _SC_PAGESIZE, 10136: 10136: 10136: _SC_RTSIG_MAX, 10136: 10136: _SC_SEM_NSEMS_MAX, 10136: 10136: _SC_SEM_VALUE_MAX, 10136: 10136: _SC_SIGQUEUE_MAX, 10136: 10136: _SC_TIMER_MAX, 10136: 10136: 10136: 10136: 10136: _SC_BC_BASE_MAX, 10136: 10136: _SC_BC_DIM_MAX, 10136: 10136: _SC_BC_SCALE_MAX, 10136: 10136: _SC_BC_STRING_MAX, 10136: 10136: _SC_COLL_WEIGHTS_MAX, 10136: 10136: _SC_EQUIV_CLASS_MAX, 10136: 10136: _SC_EXPR_NEST_MAX, 10136: 10136: _SC_LINE_MAX, 10136: 10136: _SC_RE_DUP_MAX, 10136: 10136: _SC_CHARCLASS_NAME_MAX, 10136: 10136: 10136: _SC_2_VERSION, 10136: 10136: _SC_2_C_BIND, 10136: 10136: _SC_2_C_DEV, 10136: 10136: _SC_2_FORT_DEV, 10136: 10136: _SC_2_FORT_RUN, 10136: 10136: _SC_2_SW_DEV, 10136: 10136: _SC_2_LOCALEDEF, 10136: 10136: 10136: _SC_PII, 10136: 10136: _SC_PII_XTI, 10136: 10136: _SC_PII_SOCKET, 10136: 10136: _SC_PII_INTERNET, 10136: 10136: _SC_PII_OSI, 10136: 10136: _SC_POLL, 10136: 10136: _SC_SELECT, 10136: 10136: _SC_UIO_MAXIOV, 10136: 10136: _SC_IOV_MAX = _SC_UIO_MAXIOV, 10136: 10136: _SC_PII_INTERNET_STREAM, 10136: 10136: _SC_PII_INTERNET_DGRAM, 10136: 10136: _SC_PII_OSI_COTS, 10136: 10136: _SC_PII_OSI_CLTS, 10136: 10136: _SC_PII_OSI_M, 10136: 10136: _SC_T_IOV_MAX, 10136: 10136: 10136: 10136: _SC_THREADS, 10136: 10136: _SC_THREAD_SAFE_FUNCTIONS, 10136: 10136: _SC_GETGR_R_SIZE_MAX, 10136: 10136: _SC_GETPW_R_SIZE_MAX, 10136: 10136: _SC_LOGIN_NAME_MAX, 10136: 10136: _SC_TTY_NAME_MAX, 10136: 10136: _SC_THREAD_DESTRUCTOR_ITERATIONS, 10136: 10136: _SC_THREAD_KEYS_MAX, 10136: 10136: _SC_THREAD_STACK_MIN, 10136: 10136: _SC_THREAD_THREADS_MAX, 10136: 10136: _SC_THREAD_ATTR_STACKADDR, 10136: 10136: _SC_THREAD_ATTR_STACKSIZE, 10136: 10136: _SC_THREAD_PRIORITY_SCHEDULING, 10136: 10136: _SC_THREAD_PRIO_INHERIT, 10136: 10136: _SC_THREAD_PRIO_PROTECT, 10136: 10136: _SC_THREAD_PROCESS_SHARED, 10136: 10136: 10136: _SC_NPROCESSORS_CONF, 10136: 10136: _SC_NPROCESSORS_ONLN, 10136: 10136: _SC_PHYS_PAGES, 10136: 10136: _SC_AVPHYS_PAGES, 10136: 10136: _SC_ATEXIT_MAX, 10136: 10136: _SC_PASS_MAX, 10136: 10136: 10136: _SC_XOPEN_VERSION, 10136: 10136: _SC_XOPEN_XCU_VERSION, 10136: 10136: _SC_XOPEN_UNIX, 10136: 10136: _SC_XOPEN_CRYPT, 10136: 10136: _SC_XOPEN_ENH_I18N, 10136: 10136: _SC_XOPEN_SHM, 10136: 10136: 10136: _SC_2_CHAR_TERM, 10136: 10136: _SC_2_C_VERSION, 10136: 10136: _SC_2_UPE, 10136: 10136: 10136: _SC_XOPEN_XPG2, 10136: 10136: _SC_XOPEN_XPG3, 10136: 10136: _SC_XOPEN_XPG4, 10136: 10136: 10136: _SC_CHAR_BIT, 10136: 10136: _SC_CHAR_MAX, 10136: 10136: _SC_CHAR_MIN, 10136: 10136: _SC_INT_MAX, 10136: 10136: _SC_INT_MIN, 10136: 10136: _SC_LONG_BIT, 10136: 10136: _SC_WORD_BIT, 10136: 10136: _SC_MB_LEN_MAX, 10136: 10136: _SC_NZERO, 10136: 10136: _SC_SSIZE_MAX, 10136: 10136: _SC_SCHAR_MAX, 10136: 10136: _SC_SCHAR_MIN, 10136: 10136: _SC_SHRT_MAX, 10136: 10136: _SC_SHRT_MIN, 10136: 10136: _SC_UCHAR_MAX, 10136: 10136: _SC_UINT_MAX, 10136: 10136: _SC_ULONG_MAX, 10136: 10136: _SC_USHRT_MAX, 10136: 10136: 10136: _SC_NL_ARGMAX, 10136: 10136: _SC_NL_LANGMAX, 10136: 10136: _SC_NL_MSGMAX, 10136: 10136: _SC_NL_NMAX, 10136: 10136: _SC_NL_SETMAX, 10136: 10136: _SC_NL_TEXTMAX, 10136: 10136: 10136: _SC_XBS5_ILP32_OFF32, 10136: 10136: _SC_XBS5_ILP32_OFFBIG, 10136: 10136: _SC_XBS5_LP64_OFF64, 10136: 10136: _SC_XBS5_LPBIG_OFFBIG, 10136: 10136: 10136: _SC_XOPEN_LEGACY, 10136: 10136: _SC_XOPEN_REALTIME, 10136: 10136: _SC_XOPEN_REALTIME_THREADS, 10136: 10136: 10136: _SC_ADVISORY_INFO, 10136: 10136: _SC_BARRIERS, 10136: 10136: _SC_BASE, 10136: 10136: _SC_C_LANG_SUPPORT, 10136: 10136: _SC_C_LANG_SUPPORT_R, 10136: 10136: _SC_CLOCK_SELECTION, 10136: 10136: _SC_CPUTIME, 10136: 10136: _SC_THREAD_CPUTIME, 10136: 10136: _SC_DEVICE_IO, 10136: 10136: _SC_DEVICE_SPECIFIC, 10136: 10136: _SC_DEVICE_SPECIFIC_R, 10136: 10136: _SC_FD_MGMT, 10136: 10136: _SC_FIFO, 10136: 10136: _SC_PIPE, 10136: 10136: _SC_FILE_ATTRIBUTES, 10136: 10136: _SC_FILE_LOCKING, 10136: 10136: _SC_FILE_SYSTEM, 10136: 10136: _SC_MONOTONIC_CLOCK, 10136: 10136: _SC_MULTI_PROCESS, 10136: 10136: _SC_SINGLE_PROCESS, 10136: 10136: _SC_NETWORKING, 10136: 10136: _SC_READER_WRITER_LOCKS, 10136: 10136: _SC_SPIN_LOCKS, 10136: 10136: _SC_REGEXP, 10136: 10136: _SC_REGEX_VERSION, 10136: 10136: _SC_SHELL, 10136: 10136: _SC_SIGNALS, 10136: 10136: _SC_SPAWN, 10136: 10136: _SC_SPORADIC_SERVER, 10136: 10136: _SC_THREAD_SPORADIC_SERVER, 10136: 10136: _SC_SYSTEM_DATABASE, 10136: 10136: _SC_SYSTEM_DATABASE_R, 10136: 10136: _SC_TIMEOUTS, 10136: 10136: _SC_TYPED_MEMORY_OBJECTS, 10136: 10136: _SC_USER_GROUPS, 10136: 10136: _SC_USER_GROUPS_R, 10136: 10136: _SC_2_PBS, 10136: 10136: _SC_2_PBS_ACCOUNTING, 10136: 10136: _SC_2_PBS_LOCATE, 10136: 10136: _SC_2_PBS_MESSAGE, 10136: 10136: _SC_2_PBS_TRACK, 10136: 10136: _SC_SYMLOOP_MAX, 10136: 10136: _SC_STREAMS, 10136: 10136: _SC_2_PBS_CHECKPOINT, 10136: 10136: 10136: _SC_V6_ILP32_OFF32, 10136: 10136: _SC_V6_ILP32_OFFBIG, 10136: 10136: _SC_V6_LP64_OFF64, 10136: 10136: _SC_V6_LPBIG_OFFBIG, 10136: 10136: 10136: _SC_HOST_NAME_MAX, 10136: 10136: _SC_TRACE, 10136: 10136: _SC_TRACE_EVENT_FILTER, 10136: 10136: _SC_TRACE_INHERIT, 10136: 10136: _SC_TRACE_LOG, 10136: 10136: 10136: _SC_LEVEL1_ICACHE_SIZE, 10136: 10136: _SC_LEVEL1_ICACHE_ASSOC, 10136: 10136: _SC_LEVEL1_ICACHE_LINESIZE, 10136: 10136: _SC_LEVEL1_DCACHE_SIZE, 10136: 10136: _SC_LEVEL1_DCACHE_ASSOC, 10136: 10136: _SC_LEVEL1_DCACHE_LINESIZE, 10136: 10136: _SC_LEVEL2_CACHE_SIZE, 10136: 10136: _SC_LEVEL2_CACHE_ASSOC, 10136: 10136: _SC_LEVEL2_CACHE_LINESIZE, 10136: 10136: _SC_LEVEL3_CACHE_SIZE, 10136: 10136: _SC_LEVEL3_CACHE_ASSOC, 10136: 10136: _SC_LEVEL3_CACHE_LINESIZE, 10136: 10136: _SC_LEVEL4_CACHE_SIZE, 10136: 10136: _SC_LEVEL4_CACHE_ASSOC, 10136: 10136: _SC_LEVEL4_CACHE_LINESIZE, 10136: 10136: 10136: 10136: _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, 10136: 10136: _SC_RAW_SOCKETS, 10136: 10136: 10136: _SC_V7_ILP32_OFF32, 10136: 10136: _SC_V7_ILP32_OFFBIG, 10136: 10136: _SC_V7_LP64_OFF64, 10136: 10136: _SC_V7_LPBIG_OFFBIG, 10136: 10136: 10136: _SC_SS_REPL_MAX, 10136: 10136: 10136: _SC_TRACE_EVENT_NAME_MAX, 10136: 10136: _SC_TRACE_NAME_MAX, 10136: 10136: _SC_TRACE_SYS_MAX, 10136: 10136: _SC_TRACE_USER_EVENT_MAX, 10136: 10136: 10136: _SC_XOPEN_STREAMS, 10136: 10136: 10136: _SC_THREAD_ROBUST_PRIO_INHERIT, 10136: 10136: _SC_THREAD_ROBUST_PRIO_PROTECT 10136: 10136: }; 10136: 10136: 10136: enum 10136: { 10136: _CS_PATH, 10136: 10136: 10136: _CS_V6_WIDTH_RESTRICTED_ENVS, 10136: 10136: 10136: 10136: _CS_GNU_LIBC_VERSION, 10136: 10136: _CS_GNU_LIBPTHREAD_VERSION, 10136: 10136: 10136: _CS_V5_WIDTH_RESTRICTED_ENVS, 10136: 10136: 10136: 10136: _CS_V7_WIDTH_RESTRICTED_ENVS, 10136: 10136: 10136: 10136: _CS_LFS_CFLAGS = 1000, 10136: 10136: _CS_LFS_LDFLAGS, 10136: 10136: _CS_LFS_LIBS, 10136: 10136: _CS_LFS_LINTFLAGS, 10136: 10136: _CS_LFS64_CFLAGS, 10136: 10136: _CS_LFS64_LDFLAGS, 10136: 10136: _CS_LFS64_LIBS, 10136: 10136: _CS_LFS64_LINTFLAGS, 10136: 10136: 10136: _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, 10136: 10136: _CS_XBS5_ILP32_OFF32_LDFLAGS, 10136: 10136: _CS_XBS5_ILP32_OFF32_LIBS, 10136: 10136: _CS_XBS5_ILP32_OFF32_LINTFLAGS, 10136: 10136: _CS_XBS5_ILP32_OFFBIG_CFLAGS, 10136: 10136: _CS_XBS5_ILP32_OFFBIG_LDFLAGS, 10136: 10136: _CS_XBS5_ILP32_OFFBIG_LIBS, 10136: 10136: _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, 10136: 10136: _CS_XBS5_LP64_OFF64_CFLAGS, 10136: 10136: _CS_XBS5_LP64_OFF64_LDFLAGS, 10136: 10136: _CS_XBS5_LP64_OFF64_LIBS, 10136: 10136: _CS_XBS5_LP64_OFF64_LINTFLAGS, 10136: 10136: _CS_XBS5_LPBIG_OFFBIG_CFLAGS, 10136: 10136: _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, 10136: 10136: _CS_XBS5_LPBIG_OFFBIG_LIBS, 10136: 10136: _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, 10136: 10136: 10136: _CS_POSIX_V6_ILP32_OFF32_CFLAGS, 10136: 10136: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, 10136: 10136: _CS_POSIX_V6_ILP32_OFF32_LIBS, 10136: 10136: _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, 10136: 10136: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, 10136: 10136: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, 10136: 10136: _CS_POSIX_V6_ILP32_OFFBIG_LIBS, 10136: 10136: _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, 10136: 10136: _CS_POSIX_V6_LP64_OFF64_CFLAGS, 10136: 10136: _CS_POSIX_V6_LP64_OFF64_LDFLAGS, 10136: 10136: _CS_POSIX_V6_LP64_OFF64_LIBS, 10136: 10136: _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, 10136: 10136: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, 10136: 10136: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, 10136: 10136: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, 10136: 10136: _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, 10136: 10136: 10136: _CS_POSIX_V7_ILP32_OFF32_CFLAGS, 10136: 10136: _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, 10136: 10136: _CS_POSIX_V7_ILP32_OFF32_LIBS, 10136: 10136: _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, 10136: 10136: _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, 10136: 10136: _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, 10136: 10136: _CS_POSIX_V7_ILP32_OFFBIG_LIBS, 10136: 10136: _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, 10136: 10136: _CS_POSIX_V7_LP64_OFF64_CFLAGS, 10136: 10136: _CS_POSIX_V7_LP64_OFF64_LDFLAGS, 10136: 10136: _CS_POSIX_V7_LP64_OFF64_LIBS, 10136: 10136: _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, 10136: 10136: _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, 10136: 10136: _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, 10136: 10136: _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, 10136: 10136: _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, 10136: 10136: 10136: _CS_V6_ENV, 10136: 10136: _CS_V7_ENV 10136: 10136: }; 10136: # 613 "/usr/include/unistd.h" 2 3 4 10136: 10136: 10136: extern long int pathconf (const char *__path, int __name) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: extern long int fpathconf (int __fd, int __name) throw (); 10136: 10136: 10136: extern long int sysconf (int __name) throw (); 10136: 10136: 10136: 10136: extern size_t confstr (int __name, char *__buf, size_t __len) throw (); 10136: 10136: 10136: 10136: 10136: extern __pid_t getpid (void) throw (); 10136: 10136: 10136: extern __pid_t getppid (void) throw (); 10136: 10136: 10136: extern __pid_t getpgrp (void) throw (); 10136: 10136: 10136: extern __pid_t __getpgid (__pid_t __pid) throw (); 10136: 10136: extern __pid_t getpgid (__pid_t __pid) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int setpgid (__pid_t __pid, __pid_t __pgid) throw (); 10136: # 663 "/usr/include/unistd.h" 3 4 10136: extern int setpgrp (void) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __pid_t setsid (void) throw (); 10136: 10136: 10136: 10136: extern __pid_t getsid (__pid_t __pid) throw (); 10136: 10136: 10136: 10136: extern __uid_t getuid (void) throw (); 10136: 10136: 10136: extern __uid_t geteuid (void) throw (); 10136: 10136: 10136: extern __gid_t getgid (void) throw (); 10136: 10136: 10136: extern __gid_t getegid (void) throw (); 10136: 10136: 10136: 10136: 10136: extern int getgroups (int __size, __gid_t __list[]) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern int group_member (__gid_t __gid) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int setuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int setreuid (__uid_t __ruid, __uid_t __euid) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int seteuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int setgid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int setregid (__gid_t __rgid, __gid_t __egid) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int setegid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) 10136: throw (); 10136: 10136: 10136: 10136: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) 10136: throw (); 10136: 10136: 10136: 10136: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) 10136: throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) 10136: throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __pid_t fork (void) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern __pid_t vfork (void) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern char *ttyname (int __fd) throw (); 10136: 10136: 10136: 10136: extern int ttyname_r (int __fd, char *__buf, size_t __buflen) 10136: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern int isatty (int __fd) throw (); 10136: 10136: 10136: 10136: 10136: extern int ttyslot (void) throw (); 10136: 10136: 10136: 10136: 10136: extern int link (const char *__from, const char *__to) 10136: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int linkat (int __fromfd, const char *__from, int __tofd, 10136: const char *__to, int __flags) 10136: throw () __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int symlink (const char *__from, const char *__to) 10136: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern ssize_t readlink (const char *__restrict __path, 10136: char *__restrict __buf, size_t __len) 10136: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: extern int symlinkat (const char *__from, int __tofd, 10136: const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: extern ssize_t readlinkat (int __fd, const char *__restrict __path, 10136: char *__restrict __buf, size_t __len) 10136: throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern int unlink (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern int unlinkat (int __fd, const char *__name, int __flag) 10136: throw () __attribute__ ((__nonnull__ (2))); 10136: 10136: 10136: 10136: extern int rmdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: extern __pid_t tcgetpgrp (int __fd) throw (); 10136: 10136: 10136: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *getlogin (void); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: extern int setlogin (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 1 3 4 10136: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 10136: extern "C" { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *optarg; 10136: # 50 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 10136: extern int optind; 10136: 10136: 10136: 10136: 10136: extern int opterr; 10136: 10136: 10136: 10136: extern int optopt; 10136: # 91 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 10136: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) 10136: throw () __attribute__ ((__nonnull__ (2, 3))); 10136: 10136: } 10136: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 2 3 4 10136: 10136: extern "C" { 10136: # 49 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 10136: } 10136: # 873 "/usr/include/unistd.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int sethostname (const char *__name, size_t __len) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern int sethostid (long int __id) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern int getdomainname (char *__name, size_t __len) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: extern int setdomainname (const char *__name, size_t __len) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern int vhangup (void) throw (); 10136: 10136: 10136: extern int revoke (const char *__file) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int profil (unsigned short int *__sample_buffer, size_t __size, 10136: size_t __offset, unsigned int __scale) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: extern int acct (const char *__name) throw (); 10136: 10136: 10136: 10136: extern char *getusershell (void) throw (); 10136: extern void endusershell (void) throw (); 10136: extern void setusershell (void) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int daemon (int __nochdir, int __noclose) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int chroot (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int fsync (int __fd); 10136: 10136: 10136: 10136: 10136: 10136: extern int syncfs (int __fd) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern long int gethostid (void); 10136: 10136: 10136: extern void sync (void) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int getpagesize (void) throw () __attribute__ ((__const__)); 10136: 10136: 10136: 10136: 10136: extern int getdtablesize (void) throw (); 10136: # 994 "/usr/include/unistd.h" 3 4 10136: extern int truncate (const char *__file, __off_t __length) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 1006 "/usr/include/unistd.h" 3 4 10136: extern int truncate64 (const char *__file, __off64_t __length) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: # 1017 "/usr/include/unistd.h" 3 4 10136: extern int ftruncate (int __fd, __off_t __length) throw () __attribute__ ((__warn_unused_result__)); 10136: # 1027 "/usr/include/unistd.h" 3 4 10136: extern int ftruncate64 (int __fd, __off64_t __length) throw () __attribute__ ((__warn_unused_result__)); 10136: # 1038 "/usr/include/unistd.h" 3 4 10136: extern int brk (void *__addr) throw () __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: 10136: extern void *sbrk (intptr_t __delta) throw (); 10136: # 1059 "/usr/include/unistd.h" 3 4 10136: extern long int syscall (long int __sysno, ...) throw (); 10136: # 1082 "/usr/include/unistd.h" 3 4 10136: extern int lockf (int __fd, int __cmd, __off_t __len) __attribute__ ((__warn_unused_result__)); 10136: # 1092 "/usr/include/unistd.h" 3 4 10136: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__)); 10136: # 1113 "/usr/include/unistd.h" 3 4 10136: extern int fdatasync (int __fildes); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern char *crypt (const char *__key, const char *__salt) 10136: throw () __attribute__ ((__nonnull__ (1, 2))); 10136: 10136: 10136: 10136: extern void encrypt (char *__glibc_block, int __edflag) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern void swab (const void *__restrict __from, void *__restrict __to, 10136: ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 10136: # 1162 "/usr/include/unistd.h" 3 4 10136: int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__)); 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 1 3 4 10136: # 23 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 10136: extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, 10136: size_t __buflen) __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") 10136: __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 10136: read (int __fd, void *__buf, size_t __nbytes) 10136: { 10136: if (__builtin_object_size (__buf, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__nbytes)) 10136: return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); 10136: 10136: if (__nbytes > __builtin_object_size (__buf, 0)) 10136: return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); 10136: } 10136: return __read_alias (__fd, __buf, __nbytes); 10136: } 10136: 10136: 10136: extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, 10136: __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, 10136: __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") 10136: 10136: __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) 10136: ; 10136: extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") 10136: 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) 10136: ; 10136: 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 10136: pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) 10136: { 10136: if (__builtin_object_size (__buf, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__nbytes)) 10136: return __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); 10136: 10136: if ( __nbytes > __builtin_object_size (__buf, 0)) 10136: return __pread_chk_warn (__fd, __buf, __nbytes, __offset, 10136: __builtin_object_size (__buf, 0)); 10136: } 10136: return __pread_alias (__fd, __buf, __nbytes, __offset); 10136: } 10136: # 104 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 10136: pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) 10136: { 10136: if (__builtin_object_size (__buf, 0) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__nbytes)) 10136: return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); 10136: 10136: if ( __nbytes > __builtin_object_size (__buf, 0)) 10136: return __pread64_chk_warn (__fd, __buf, __nbytes, __offset, 10136: __builtin_object_size (__buf, 0)); 10136: } 10136: 10136: return __pread64_alias (__fd, __buf, __nbytes, __offset); 10136: } 10136: 10136: 10136: 10136: 10136: extern ssize_t __readlink_chk (const char *__restrict __path, 10136: char *__restrict __buf, size_t __len, 10136: size_t __buflen) 10136: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlink") 10136: 10136: 10136: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlink_chk") 10136: 10136: 10136: 10136: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t 10136: __attribute__ ((__leaf__)) readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () 10136: 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 10136: 10136: if ( __len > __builtin_object_size (__buf, 2 > 1)) 10136: return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __readlink_alias (__path, __buf, __len); 10136: } 10136: 10136: 10136: 10136: extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, 10136: char *__restrict __buf, size_t __len, 10136: size_t __buflen) 10136: throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlinkat") 10136: 10136: 10136: 10136: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 10136: extern ssize_t __readlinkat_chk_warn (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlinkat_chk") 10136: 10136: 10136: 10136: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) 10136: 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t 10136: __attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw () 10136: 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 10136: 10136: if (__len > __builtin_object_size (__buf, 2 > 1)) 10136: return __readlinkat_chk_warn (__fd, __path, __buf, __len, 10136: __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __readlinkat_alias (__fd, __path, __buf, __len); 10136: } 10136: 10136: 10136: extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) 10136: throw () __attribute__ ((__warn_unused_result__)); 10136: extern char *__getcwd_alias (char *__buf, size_t __size) throw () __asm__ ("" "getcwd") 10136: __attribute__ ((__warn_unused_result__)); 10136: extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) throw () __asm__ ("" "__getcwd_chk") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 10136: __attribute__ ((__leaf__)) getcwd (char *__buf, size_t __size) throw () 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__size)) 10136: return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1)); 10136: 10136: if (__size > __builtin_object_size (__buf, 2 > 1)) 10136: return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __getcwd_alias (__buf, __size); 10136: } 10136: 10136: 10136: extern char *__getwd_chk (char *__buf, size_t buflen) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: extern char *__getwd_warn (char *__buf) throw () __asm__ ("" "getwd") 10136: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * 10136: __attribute__ ((__leaf__)) getwd (char *__buf) throw () 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1)); 10136: return __getwd_warn (__buf); 10136: } 10136: 10136: 10136: extern size_t __confstr_chk (int __name, char *__buf, size_t __len, 10136: size_t __buflen) throw (); 10136: extern size_t __confstr_alias (int __name, char *__buf, size_t __len) throw () __asm__ ("" "confstr") 10136: ; 10136: extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__confstr_chk") 10136: 10136: 10136: __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 10136: __attribute__ ((__leaf__)) confstr (int __name, char *__buf, size_t __len) throw () 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__len)) 10136: return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 10136: 10136: if (__builtin_object_size (__buf, 2 > 1) < __len) 10136: return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __confstr_alias (__name, __buf, __len); 10136: } 10136: 10136: 10136: extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) 10136: throw () __attribute__ ((__warn_unused_result__)); 10136: extern int __getgroups_alias (int __size, __gid_t __list[]) throw () __asm__ ("" "getgroups") 10136: __attribute__ ((__warn_unused_result__)); 10136: extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) throw () __asm__ ("" "__getgroups_chk") 10136: 10136: 10136: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) getgroups (int __size, __gid_t __list[]) throw () 10136: { 10136: if (__builtin_object_size (__list, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__size) || __size < 0) 10136: return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1)); 10136: 10136: if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1)) 10136: return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)); 10136: } 10136: return __getgroups_alias (__size, __list); 10136: } 10136: 10136: 10136: extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, 10136: size_t __nreal) throw () __attribute__ ((__nonnull__ (2))); 10136: extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ttyname_r") 10136: 10136: __attribute__ ((__nonnull__ (2))); 10136: extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ttyname_r_chk") 10136: 10136: 10136: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) ttyname_r (int __fd, char *__buf, size_t __buflen) throw () 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__buflen)) 10136: return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: 10136: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 10136: return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __ttyname_r_alias (__fd, __buf, __buflen); 10136: } 10136: 10136: 10136: 10136: extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) 10136: __attribute__ ((__nonnull__ (1))); 10136: extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") 10136: __attribute__ ((__nonnull__ (1))); 10136: extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") 10136: 10136: 10136: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: getlogin_r (char *__buf, size_t __buflen) 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__buflen)) 10136: return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: 10136: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 10136: return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __getlogin_r_alias (__buf, __buflen); 10136: } 10136: 10136: 10136: 10136: 10136: extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) 10136: throw () __attribute__ ((__nonnull__ (1))); 10136: extern int __gethostname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "gethostname") 10136: __attribute__ ((__nonnull__ (1))); 10136: extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__gethostname_chk") 10136: 10136: 10136: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) gethostname (char *__buf, size_t __buflen) throw () 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__buflen)) 10136: return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: 10136: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 10136: return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __gethostname_alias (__buf, __buflen); 10136: } 10136: 10136: 10136: 10136: 10136: extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) 10136: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: extern int __getdomainname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "getdomainname") 10136: 10136: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 10136: extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__getdomainname_chk") 10136: 10136: 10136: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) 10136: 10136: ; 10136: 10136: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 10136: __attribute__ ((__leaf__)) getdomainname (char *__buf, size_t __buflen) throw () 10136: { 10136: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 10136: { 10136: if (!__builtin_constant_p (__buflen)) 10136: return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: 10136: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 10136: return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 10136: } 10136: return __getdomainname_alias (__buf, __buflen); 10136: } 10136: # 1168 "/usr/include/unistd.h" 2 3 4 10136: 10136: 10136: } 10136: # 36 "../../include/tbb/machine/gcc_armv7.h" 2 10136: # 72 "../../include/tbb/machine/gcc_armv7.h" 10136: 10136: # 72 "../../include/tbb/machine/gcc_armv7.h" 10136: static inline int32_t __TBB_machine_cmpswp4(volatile void *ptr, int32_t value, int32_t comparand ) 10136: { 10136: int32_t oldval, res; 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: 10136: do { 10136: __asm__ __volatile__( 10136: "ldrex %1, [%3]\n" 10136: "mov %0, #0\n" 10136: "cmp %1, %4\n" 10136: "it eq\n" 10136: "strexeq %0, %5, [%3]\n" 10136: : "=&r" (res), "=&r" (oldval), "+Qo" (*(volatile int32_t*)ptr) 10136: : "r" ((volatile int32_t *)ptr), "Ir" (comparand), "r" (value) 10136: : "cc"); 10136: } while (res); 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: 10136: return oldval; 10136: } 10136: # 102 "../../include/tbb/machine/gcc_armv7.h" 10136: static inline int64_t __TBB_machine_cmpswp8(volatile void *ptr, int64_t value, int64_t comparand ) 10136: { 10136: int64_t oldval; 10136: int32_t res; 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: 10136: do { 10136: __asm__ __volatile__( 10136: "mov %0, #0\n" 10136: "ldrexd %1, %H1, [%3]\n" 10136: "cmp %1, %4\n" 10136: "it eq\n" 10136: "cmpeq %H1, %H4\n" 10136: "it eq\n" 10136: "strexdeq %0, %5, %H5, [%3]" 10136: : "=&r" (res), "=&r" (oldval), "+Qo" (*(volatile int64_t*)ptr) 10136: : "r" ((volatile int64_t *)ptr), "r" (comparand), "r" (value) 10136: : "cc"); 10136: } while (res); 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: 10136: return oldval; 10136: } 10136: 10136: static inline int32_t __TBB_machine_fetchadd4(volatile void* ptr, int32_t addend) 10136: { 10136: unsigned long tmp; 10136: int32_t result, tmp2; 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: 10136: __asm__ __volatile__( 10136: "1: ldrex %0, [%4]\n" 10136: " add %3, %0, %5\n" 10136: " strex %1, %3, [%4]\n" 10136: " cmp %1, #0\n" 10136: " bne 1b\n" 10136: : "=&r" (result), "=&r" (tmp), "+Qo" (*(volatile int32_t*)ptr), "=&r"(tmp2) 10136: : "r" ((volatile int32_t *)ptr), "Ir" (addend) 10136: : "cc"); 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: 10136: return result; 10136: } 10136: 10136: static inline int64_t __TBB_machine_fetchadd8(volatile void *ptr, int64_t addend) 10136: { 10136: unsigned long tmp; 10136: int64_t result, tmp2; 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: 10136: __asm__ __volatile__( 10136: "1: ldrexd %0, %H0, [%4]\n" 10136: " adds %3, %0, %5\n" 10136: " adc %H3, %H0, %H5\n" 10136: " strexd %1, %3, %H3, [%4]\n" 10136: " cmp %1, #0\n" 10136: " bne 1b" 10136: : "=&r" (result), "=&r" (tmp), "+Qo" (*(volatile int64_t*)ptr), "=&r"(tmp2) 10136: : "r" ((volatile int64_t *)ptr), "r" (addend) 10136: : "cc"); 10136: 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: 10136: return result; 10136: } 10136: 10136: inline void __TBB_machine_pause (int32_t delay ) 10136: { 10136: while(delay>0) 10136: { 10136: __asm__ __volatile__("": : :"memory"); 10136: delay--; 10136: } 10136: } 10136: 10136: namespace tbb { 10136: namespace internal { 10136: template 10136: struct machine_load_store_relaxed { 10136: static inline T load ( const volatile T& location ) { 10136: const T value = location; 10136: 10136: 10136: 10136: 10136: 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: return value; 10136: } 10136: 10136: static inline void store ( volatile T& location, T value ) { 10136: location = value; 10136: } 10136: }; 10136: }} 10136: # 249 "../../include/tbb/tbb_machine.h" 2 10136: 10136: 10136: 10136: # 1 "../../include/tbb/machine/linux_common.h" 1 10136: # 30 "../../include/tbb/machine/linux_common.h" 10136: # 1 "/usr/include/arm-linux-gnueabihf/sys/syscall.h" 1 3 4 10136: # 24 "/usr/include/arm-linux-gnueabihf/sys/syscall.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/asm/unistd.h" 1 3 4 10136: # 20 "/usr/include/arm-linux-gnueabihf/asm/unistd.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/asm/unistd-eabi.h" 1 3 4 10136: # 21 "/usr/include/arm-linux-gnueabihf/asm/unistd.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/asm/unistd-common.h" 1 3 4 10136: # 27 "/usr/include/arm-linux-gnueabihf/asm/unistd.h" 2 3 4 10136: # 25 "/usr/include/arm-linux-gnueabihf/sys/syscall.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/syscall.h" 1 3 4 10136: # 32 "/usr/include/arm-linux-gnueabihf/sys/syscall.h" 2 3 4 10136: # 31 "../../include/tbb/machine/linux_common.h" 2 10136: 10136: 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 1 3 4 10136: # 36 "../../include/tbb/machine/linux_common.h" 2 10136: # 55 "../../include/tbb/machine/linux_common.h" 10136: namespace tbb { 10136: 10136: namespace internal { 10136: 10136: inline int futex_wait( void *futex, int comparand ) { 10136: int r = syscall( 10136: # 60 "../../include/tbb/machine/linux_common.h" 3 4 10136: (0 + 240) 10136: # 60 "../../include/tbb/machine/linux_common.h" 10136: ,futex,0,comparand, 10136: # 60 "../../include/tbb/machine/linux_common.h" 3 4 10136: __null 10136: # 60 "../../include/tbb/machine/linux_common.h" 10136: , 10136: # 60 "../../include/tbb/machine/linux_common.h" 3 4 10136: __null 10136: # 60 "../../include/tbb/machine/linux_common.h" 10136: ,0 ); 10136: 10136: int e = 10136: # 62 "../../include/tbb/machine/linux_common.h" 3 4 10136: (*__errno_location ()) 10136: # 62 "../../include/tbb/machine/linux_common.h" 10136: ; 10136: ((r==0||r== 10136: # 63 "../../include/tbb/machine/linux_common.h" 3 4 10136: 11 10136: # 63 "../../include/tbb/machine/linux_common.h" 10136: ||(r==-1&&(e== 10136: # 63 "../../include/tbb/machine/linux_common.h" 3 4 10136: 11 10136: # 63 "../../include/tbb/machine/linux_common.h" 10136: ||e== 10136: # 63 "../../include/tbb/machine/linux_common.h" 3 4 10136: 4 10136: # 63 "../../include/tbb/machine/linux_common.h" 10136: )))?((void)0) : tbb::assertion_failure("../../include/tbb/machine/linux_common.h",63,"r==0||r==11||(r==-1&&(e==11||e==4))","futex_wait failed.")); 10136: 10136: return r; 10136: } 10136: 10136: inline int futex_wakeup_one( void *futex ) { 10136: int r = ::syscall( 10136: # 69 "../../include/tbb/machine/linux_common.h" 3 4 10136: (0 + 240) 10136: # 69 "../../include/tbb/machine/linux_common.h" 10136: ,futex,1,1, 10136: # 69 "../../include/tbb/machine/linux_common.h" 3 4 10136: __null 10136: # 69 "../../include/tbb/machine/linux_common.h" 10136: , 10136: # 69 "../../include/tbb/machine/linux_common.h" 3 4 10136: __null 10136: # 69 "../../include/tbb/machine/linux_common.h" 10136: ,0 ); 10136: ((r==0||r==1)?((void)0) : tbb::assertion_failure("../../include/tbb/machine/linux_common.h",70,"r==0||r==1","futex_wakeup_one: more than one thread woken up?")); 10136: return r; 10136: } 10136: 10136: inline int futex_wakeup_all( void *futex ) { 10136: int r = ::syscall( 10136: # 75 "../../include/tbb/machine/linux_common.h" 3 4 10136: (0 + 240) 10136: # 75 "../../include/tbb/machine/linux_common.h" 10136: ,futex,1,0x7fffffff, 10136: # 75 "../../include/tbb/machine/linux_common.h" 3 4 10136: __null 10136: # 75 "../../include/tbb/machine/linux_common.h" 10136: , 10136: # 75 "../../include/tbb/machine/linux_common.h" 3 4 10136: __null 10136: # 75 "../../include/tbb/machine/linux_common.h" 10136: ,0 ); 10136: ((r>=0)?((void)0) : tbb::assertion_failure("../../include/tbb/machine/linux_common.h",76,"r>=0","futex_wakeup_all: error in waking up threads")); 10136: return r; 10136: } 10136: 10136: } 10136: 10136: } 10136: # 253 "../../include/tbb/tbb_machine.h" 2 10136: # 343 "../../include/tbb/tbb_machine.h" 10136: namespace tbb { 10136: 10136: 10136: inline void atomic_fence () { __asm__ __volatile__("dmb ish": : :"memory"); } 10136: 10136: namespace internal { 10136: 10136: 10136: 10136: class atomic_backoff : no_copy { 10136: 10136: 10136: 10136: static const int32_t LOOPS_BEFORE_YIELD = 16; 10136: int32_t count; 10136: public: 10136: 10136: 10136: 10136: atomic_backoff() : count(1) {} 10136: 10136: atomic_backoff( bool ) : count(1) { pause(); } 10136: 10136: 10136: void pause() { 10136: if( count<=LOOPS_BEFORE_YIELD ) { 10136: __TBB_machine_pause(count); 10136: 10136: count*=2; 10136: } else { 10136: 10136: sched_yield(); 10136: } 10136: } 10136: 10136: 10136: bool bounded_pause() { 10136: __TBB_machine_pause(count); 10136: if( count 10136: void spin_wait_while_eq( const volatile T& location, U value ) { 10136: atomic_backoff backoff; 10136: while( location==value ) backoff.pause(); 10136: } 10136: 10136: 10136: 10136: template 10136: void spin_wait_until_eq( const volatile T& location, const U value ) { 10136: atomic_backoff backoff; 10136: while( location!=value ) backoff.pause(); 10136: } 10136: 10136: template 10136: void spin_wait_while(predicate_type condition){ 10136: atomic_backoff backoff; 10136: while( condition() ) backoff.pause(); 10136: } 10136: # 438 "../../include/tbb/tbb_machine.h" 10136: template 10136: inline T __TBB_MaskedCompareAndSwap (volatile T * const ptr, const T value, const T comparand ) { 10136: struct endianness{ static bool is_big_endian(){ 10136: 10136: 10136: 10136: 10136: return 0==1; 10136: 10136: 10136: 10136: }}; 10136: 10136: const uint32_t byte_offset = (uint32_t) ((uintptr_t)ptr & 0x3); 10136: volatile uint32_t * const aligned_ptr = (uint32_t*)((uintptr_t)ptr - byte_offset ); 10136: 10136: 10136: const uint32_t bits_to_shift = 8*(endianness::is_big_endian() ? (4 - sizeof(T) - (byte_offset)) : byte_offset); 10136: const uint32_t mask = (((uint32_t)1<<(sizeof(T)*8)) - 1 )<> bits_to_shift); 10136: } 10136: else continue; 10136: } 10136: } 10136: 10136: 10136: 10136: template 10136: inline T __TBB_CompareAndSwapGeneric (volatile void *ptr, T value, T comparand ); 10136: 10136: template<> 10136: inline int8_t __TBB_CompareAndSwapGeneric <1,int8_t> (volatile void *ptr, int8_t value, int8_t comparand ) { 10136: 10136: return __TBB_MaskedCompareAndSwap((volatile int8_t *)ptr,value,comparand); 10136: 10136: 10136: 10136: } 10136: 10136: template<> 10136: inline int16_t __TBB_CompareAndSwapGeneric <2,int16_t> (volatile void *ptr, int16_t value, int16_t comparand ) { 10136: 10136: return __TBB_MaskedCompareAndSwap((volatile int16_t *)ptr,value,comparand); 10136: 10136: 10136: 10136: } 10136: 10136: template<> 10136: inline int32_t __TBB_CompareAndSwapGeneric <4,int32_t> (volatile void *ptr, int32_t value, int32_t comparand ) { 10136: 10136: return (int32_t)__TBB_machine_cmpswp4(ptr,value,comparand); 10136: } 10136: 10136: 10136: template<> 10136: inline int64_t __TBB_CompareAndSwapGeneric <8,int64_t> (volatile void *ptr, int64_t value, int64_t comparand ) { 10136: return __TBB_machine_cmpswp8(ptr,value,comparand); 10136: } 10136: 10136: 10136: template 10136: inline T __TBB_FetchAndAddGeneric (volatile void *ptr, T addend) { 10136: T result; 10136: for( atomic_backoff b;;b.pause() ) { 10136: result = *reinterpret_cast(ptr); 10136: 10136: if( __TBB_CompareAndSwapGeneric ( ptr, result+addend, result )==result ) 10136: break; 10136: } 10136: return result; 10136: } 10136: 10136: template 10136: inline T __TBB_FetchAndStoreGeneric (volatile void *ptr, T value) { 10136: T result; 10136: for( atomic_backoff b;;b.pause() ) { 10136: result = *reinterpret_cast(ptr); 10136: 10136: if( __TBB_CompareAndSwapGeneric ( ptr, value, result )==result ) 10136: break; 10136: } 10136: return result; 10136: } 10136: # 589 "../../include/tbb/tbb_machine.h" 10136: inline int64_t __TBB_machine_generic_load8full_fence(const volatile void *ptr) { const int64_t anyvalue = 2305843009213693951LL; return __TBB_machine_cmpswp8(const_cast(ptr),anyvalue,anyvalue); } 10136: inline void __TBB_machine_generic_store8full_fence(volatile void *ptr, int64_t value) { for(;;) { int64_t result = *(volatile int64_t *)ptr; if( __TBB_machine_cmpswp8(ptr,value,result)==result ) break; } } 10136: # 611 "../../include/tbb/tbb_machine.h" 10136: template 10136: struct machine_load_store { 10136: static T load_with_acquire ( const volatile T& location ) { 10136: T to_return = location; 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: return to_return; 10136: } 10136: static void store_with_release ( volatile T &location, T value ) { 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: location = value; 10136: } 10136: }; 10136: 10136: 10136: 10136: template 10136: struct machine_load_store { 10136: static T load_with_acquire ( const volatile T& location ) { 10136: return (T)tbb::internal::__TBB_machine_generic_load8full_fence( (const volatile void*)&location ); 10136: } 10136: static void store_with_release ( volatile T& location, T value ) { 10136: tbb::internal::__TBB_machine_generic_store8full_fence( (volatile void*)&location, (int64_t)value ); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct machine_load_store_seq_cst { 10136: static T load ( const volatile T& location ) { 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: return machine_load_store::load_with_acquire( location ); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: static void store ( volatile T &location, T value ) { 10136: machine_load_store::store_with_release( location, value ); 10136: __asm__ __volatile__("dmb ish": : :"memory"); 10136: } 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct machine_load_store_seq_cst { 10136: static T load ( const volatile T& location ) { 10136: 10136: 10136: const int64_t anyvalue = 2305843009213693951LL; 10136: return __TBB_machine_cmpswp8( (volatile void*)const_cast(&location), anyvalue, anyvalue ); 10136: } 10136: static void store ( volatile T &location, T value ) { 10136: int64_t result = (volatile int64_t&)location; 10136: while ( __TBB_machine_cmpswp8((volatile void*)&location, (int64_t)value, result) != result ) 10136: result = (volatile int64_t&)location; 10136: } 10136: }; 10136: # 707 "../../include/tbb/tbb_machine.h" 10136: template 10136: inline T __TBB_load_with_acquire(const volatile T &location) { 10136: return machine_load_store::load_with_acquire( location ); 10136: } 10136: template 10136: inline void __TBB_store_with_release(volatile T& location, V value) { 10136: machine_load_store::store_with_release( location, T(value) ); 10136: } 10136: 10136: inline void __TBB_store_with_release(volatile size_t& location, size_t value) { 10136: machine_load_store::store_with_release( location, value ); 10136: } 10136: 10136: template 10136: inline T __TBB_load_full_fence(const volatile T &location) { 10136: return machine_load_store_seq_cst::load( location ); 10136: } 10136: template 10136: inline void __TBB_store_full_fence(volatile T& location, V value) { 10136: machine_load_store_seq_cst::store( location, T(value) ); 10136: } 10136: 10136: inline void __TBB_store_full_fence(volatile size_t& location, size_t value) { 10136: machine_load_store_seq_cst::store( location, value ); 10136: } 10136: 10136: template 10136: inline T __TBB_load_relaxed (const volatile T& location) { 10136: return machine_load_store_relaxed::load( const_cast(location) ); 10136: } 10136: template 10136: inline void __TBB_store_relaxed ( volatile T& location, V value ) { 10136: machine_load_store_relaxed::store( const_cast(location), T(value) ); 10136: } 10136: 10136: inline void __TBB_store_relaxed ( volatile size_t& location, size_t value ) { 10136: machine_load_store_relaxed::store( const_cast(location), value ); 10136: } 10136: # 787 "../../include/tbb/tbb_machine.h" 10136: struct alignas(16) __TBB_machine_type_with_alignment_16 { uint32_t member[16/sizeof(uint32_t)]; }; 10136: struct alignas(32) __TBB_machine_type_with_alignment_32 { uint32_t member[32/sizeof(uint32_t)]; }; 10136: struct alignas(64) __TBB_machine_type_with_alignment_64 { uint32_t member[64/sizeof(uint32_t)]; }; 10136: 10136: typedef __TBB_machine_type_with_alignment_64 __TBB_machine_type_with_strictest_alignment; 10136: 10136: 10136: template struct type_with_alignment; 10136: 10136: 10136: template<> struct type_with_alignment<1> { char member; }; 10136: template<> struct type_with_alignment<2> { uint16_t member; }; 10136: template<> struct type_with_alignment<4> { uint32_t member; }; 10136: template<> struct type_with_alignment<8> { uint64_t member; }; 10136: template<> struct type_with_alignment<16> {__TBB_machine_type_with_alignment_16 member; }; 10136: template<> struct type_with_alignment<32> {__TBB_machine_type_with_alignment_32 member; }; 10136: template<> struct type_with_alignment<64> {__TBB_machine_type_with_alignment_64 member; }; 10136: # 821 "../../include/tbb/tbb_machine.h" 10136: template 10136: struct reverse { 10136: static const T byte_table[256]; 10136: }; 10136: 10136: 10136: template 10136: const T reverse::byte_table[256] = { 10136: 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, 10136: 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, 10136: 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, 10136: 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, 10136: 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, 10136: 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, 10136: 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, 10136: 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, 10136: 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, 10136: 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, 10136: 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, 10136: 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, 10136: 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, 10136: 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, 10136: 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, 10136: 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF 10136: }; 10136: 10136: } 10136: } 10136: 10136: 10136: using tbb::internal::__TBB_load_with_acquire; 10136: using tbb::internal::__TBB_store_with_release; 10136: 10136: 10136: 10136: 10136: 10136: 10136: inline intptr_t __TBB_Log2( uintptr_t x ) { 10136: if( x==0 ) return -1; 10136: intptr_t result = 0; 10136: 10136: 10136: uintptr_t tmp_; 10136: if( sizeof(x)>4 && (tmp_ = ((uint64_t)x)>>32) ) { x=tmp_; result += 32; } 10136: 10136: if( uintptr_t tmp = x>>16 ) { x=tmp; result += 16; } 10136: if( uintptr_t tmp = x>>8 ) { x=tmp; result += 8; } 10136: if( uintptr_t tmp = x>>4 ) { x=tmp; result += 4; } 10136: if( uintptr_t tmp = x>>2 ) { x=tmp; result += 2; } 10136: 10136: return (x&2)? result+1: result; 10136: } 10136: 10136: 10136: 10136: inline void __TBB_AtomicOR( volatile void *operand, uintptr_t addend ) { 10136: for( tbb::internal::atomic_backoff b;;b.pause() ) { 10136: uintptr_t tmp = *(volatile uintptr_t *)operand; 10136: uintptr_t result = __TBB_machine_cmpswp4(operand,tmp|addend,tmp); 10136: if( result==tmp ) break; 10136: } 10136: } 10136: 10136: 10136: 10136: inline void __TBB_AtomicAND( volatile void *operand, uintptr_t addend ) { 10136: for( tbb::internal::atomic_backoff b;;b.pause() ) { 10136: uintptr_t tmp = *(volatile uintptr_t *)operand; 10136: uintptr_t result = __TBB_machine_cmpswp4(operand,tmp&addend,tmp); 10136: if( result==tmp ) break; 10136: } 10136: } 10136: # 907 "../../include/tbb/tbb_machine.h" 10136: typedef unsigned char __TBB_Flag; 10136: 10136: typedef __TBB_Flag __TBB_atomic_flag; 10136: 10136: 10136: inline bool __TBB_TryLockByte( __TBB_atomic_flag &flag ) { 10136: return tbb::internal::__TBB_CompareAndSwapGeneric<1,int8_t>(&flag,1,0)==0; 10136: } 10136: 10136: 10136: 10136: inline __TBB_Flag __TBB_LockByte( __TBB_atomic_flag& flag ) { 10136: tbb::internal::atomic_backoff backoff; 10136: while( !__TBB_TryLockByte(flag) ) backoff.pause(); 10136: return 0; 10136: } 10136: # 960 "../../include/tbb/tbb_machine.h" 10136: inline unsigned char __TBB_ReverseByte(unsigned char src) { 10136: return tbb::internal::reverse::byte_table[src]; 10136: } 10136: 10136: 10136: template 10136: T __TBB_ReverseBits(T src) { 10136: T dst; 10136: unsigned char *original = (unsigned char *) &src; 10136: unsigned char *reversed = (unsigned char *) &dst; 10136: 10136: for( int i = sizeof(T)-1; i >= 0; i-- ) 10136: reversed[i] = __TBB_ReverseByte( original[sizeof(T)-i-1] ); 10136: 10136: return dst; 10136: } 10136: # 26 "../../include/tbb/task.h" 2 10136: # 1 "../../include/tbb/tbb_profiling.h" 1 10136: # 24 "../../include/tbb/tbb_profiling.h" 10136: namespace tbb { 10136: namespace internal { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: enum string_index { 10136: # 1 "../../include/tbb/internal/_tbb_strings.h" 1 10136: # 21 "../../include/tbb/internal/_tbb_strings.h" 10136: FLOW_BROADCAST_NODE, 10136: FLOW_BUFFER_NODE, 10136: FLOW_CONTINUE_NODE, 10136: FLOW_FUNCTION_NODE, 10136: FLOW_JOIN_NODE_QUEUEING, 10136: FLOW_JOIN_NODE_RESERVING, 10136: FLOW_JOIN_NODE_TAG_MATCHING, 10136: FLOW_LIMITER_NODE, 10136: FLOW_MULTIFUNCTION_NODE, 10136: FLOW_OR_NODE, 10136: FLOW_OVERWRITE_NODE, 10136: FLOW_PRIORITY_QUEUE_NODE, 10136: FLOW_QUEUE_NODE, 10136: FLOW_SEQUENCER_NODE, 10136: FLOW_SOURCE_NODE, 10136: FLOW_SPLIT_NODE, 10136: FLOW_WRITE_ONCE_NODE, 10136: FLOW_BODY, 10136: FLOW_GRAPH, 10136: FLOW_NODE, 10136: FLOW_INPUT_PORT, 10136: FLOW_INPUT_PORT_0, 10136: FLOW_INPUT_PORT_1, 10136: FLOW_INPUT_PORT_2, 10136: FLOW_INPUT_PORT_3, 10136: FLOW_INPUT_PORT_4, 10136: FLOW_INPUT_PORT_5, 10136: FLOW_INPUT_PORT_6, 10136: FLOW_INPUT_PORT_7, 10136: FLOW_INPUT_PORT_8, 10136: FLOW_INPUT_PORT_9, 10136: FLOW_OUTPUT_PORT, 10136: FLOW_OUTPUT_PORT_0, 10136: FLOW_OUTPUT_PORT_1, 10136: FLOW_OUTPUT_PORT_2, 10136: FLOW_OUTPUT_PORT_3, 10136: FLOW_OUTPUT_PORT_4, 10136: FLOW_OUTPUT_PORT_5, 10136: FLOW_OUTPUT_PORT_6, 10136: FLOW_OUTPUT_PORT_7, 10136: FLOW_OUTPUT_PORT_8, 10136: FLOW_OUTPUT_PORT_9, 10136: FLOW_OBJECT_NAME, 10136: FLOW_NULL, 10136: FLOW_INDEXER_NODE, 10136: FLOW_COMPOSITE_NODE, 10136: FLOW_ASYNC_NODE, 10136: # 35 "../../include/tbb/tbb_profiling.h" 2 10136: NUM_STRINGS 10136: }; 10136: 10136: 10136: enum itt_relation 10136: { 10136: __itt_relation_is_unknown = 0, 10136: __itt_relation_is_dependent_on, 10136: __itt_relation_is_sibling_of, 10136: __itt_relation_is_parent_of, 10136: __itt_relation_is_continuation_of, 10136: __itt_relation_is_child_of, 10136: __itt_relation_is_continued_by, 10136: __itt_relation_is_predecessor_to 10136: }; 10136: 10136: } 10136: } 10136: # 62 "../../include/tbb/tbb_profiling.h" 10136: namespace tbb { 10136: namespace internal { 10136: # 80 "../../include/tbb/tbb_profiling.h" 10136: void itt_set_sync_name_v3( void *obj, const char* name ); 10136: 10136: } 10136: } 10136: # 128 "../../include/tbb/tbb_profiling.h" 10136: # 1 "../../include/tbb/atomic.h" 1 10136: # 40 "../../include/tbb/atomic.h" 10136: namespace tbb { 10136: 10136: 10136: enum memory_semantics { 10136: 10136: full_fence, 10136: 10136: acquire, 10136: 10136: release, 10136: 10136: relaxed 10136: }; 10136: 10136: 10136: namespace internal { 10136: # 67 "../../include/tbb/atomic.h" 10136: template 10136: struct atomic_rep; 10136: 10136: template<> 10136: struct atomic_rep<1> { 10136: typedef int8_t word; 10136: }; 10136: template<> 10136: struct atomic_rep<2> { 10136: typedef int16_t word; 10136: }; 10136: template<> 10136: struct atomic_rep<4> { 10136: 10136: 10136: 10136: 10136: typedef int32_t word; 10136: 10136: }; 10136: 10136: template<> 10136: struct atomic_rep<8> { 10136: typedef int64_t word; 10136: }; 10136: 10136: 10136: template 10136: struct aligned_storage; 10136: # 116 "../../include/tbb/atomic.h" 10136: template 10136: struct aligned_storage { 10136: value_type my_value; 10136: 10136: aligned_storage() = default ; 10136: constexpr aligned_storage(value_type value):my_value(value){} 10136: 10136: }; 10136: 10136: template struct aligned_storage { alignas(2) value_type my_value; aligned_storage() = default ; constexpr aligned_storage(value_type value):my_value(value){} }; 10136: template struct aligned_storage { alignas(4) value_type my_value; aligned_storage() = default ; constexpr aligned_storage(value_type value):my_value(value){} }; 10136: 10136: template struct aligned_storage { alignas(8) value_type my_value; aligned_storage() = default ; constexpr aligned_storage(value_type value):my_value(value){} }; 10136: 10136: 10136: template 10136: struct atomic_traits; 10136: # 163 "../../include/tbb/atomic.h" 10136: template 10136: struct atomic_load_store_traits; 10136: # 198 "../../include/tbb/atomic.h" 10136: template struct atomic_traits<1,M> { typedef atomic_rep<1>::word word; inline static word compare_and_swap( volatile void* location, word new_value, word comparand ) { return tbb::internal::__TBB_CompareAndSwapGeneric<1,int8_t>(location,new_value,comparand); } inline static word fetch_and_add( volatile void* location, word addend ) { return tbb::internal::__TBB_FetchAndAddGeneric<1,int8_t>(location,addend); } inline static word fetch_and_store( volatile void* location, word value ) { return tbb::internal::__TBB_FetchAndStoreGeneric<1,int8_t>(location,value); } }; 10136: template struct atomic_traits<2,M> { typedef atomic_rep<2>::word word; inline static word compare_and_swap( volatile void* location, word new_value, word comparand ) { return tbb::internal::__TBB_CompareAndSwapGeneric<2,int16_t>(location,new_value,comparand); } inline static word fetch_and_add( volatile void* location, word addend ) { return tbb::internal::__TBB_FetchAndAddGeneric<2,int16_t>(location,addend); } inline static word fetch_and_store( volatile void* location, word value ) { return tbb::internal::__TBB_FetchAndStoreGeneric<2,int16_t>(location,value); } }; 10136: template struct atomic_traits<4,M> { typedef atomic_rep<4>::word word; inline static word compare_and_swap( volatile void* location, word new_value, word comparand ) { return __TBB_machine_cmpswp4(location,new_value,comparand); } inline static word fetch_and_add( volatile void* location, word addend ) { return __TBB_machine_fetchadd4(location,addend); } inline static word fetch_and_store( volatile void* location, word value ) { return tbb::internal::__TBB_FetchAndStoreGeneric<4,int32_t>(location,value); } }; 10136: 10136: template struct atomic_traits<8,M> { typedef atomic_rep<8>::word word; inline static word compare_and_swap( volatile void* location, word new_value, word comparand ) { return __TBB_machine_cmpswp8(location,new_value,comparand); } inline static word fetch_and_add( volatile void* location, word addend ) { return __TBB_machine_fetchadd8(location,addend); } inline static word fetch_and_store( volatile void* location, word value ) { return tbb::internal::__TBB_FetchAndStoreGeneric<8,int64_t>(location,value); } }; 10136: 10136: 10136: 10136: template<> struct atomic_load_store_traits { template inline static T load( const volatile T& location ) { return __TBB_load_full_fence( location ); } template inline static void store( volatile T& location, T value ) { __TBB_store_full_fence( location, value ); } }; 10136: template<> struct atomic_load_store_traits { template inline static T load( const volatile T& location ) { return __TBB_load_with_acquire( location ); } template inline static void store( volatile T& location, T value ) { __TBB_store_acquire( location, value ); } }; 10136: template<> struct atomic_load_store_traits { template inline static T load( const volatile T& location ) { return __TBB_load_release( location ); } template inline static void store( volatile T& location, T value ) { __TBB_store_with_release( location, value ); } }; 10136: template<> struct atomic_load_store_traits { template inline static T load( const volatile T& location ) { return __TBB_load_relaxed( location ); } template inline static void store( volatile T& location, T value ) { __TBB_store_relaxed( location, value ); } }; 10136: # 219 "../../include/tbb/atomic.h" 10136: template 10136: struct atomic_impl { 10136: protected: 10136: aligned_storage my_storage; 10136: private: 10136: 10136: 10136: template 10136: union converter { 10136: typedef typename atomic_rep::word bits_type; 10136: converter(){} 10136: converter(value_type a_value) : value(a_value) {} 10136: value_type value; 10136: bits_type bits; 10136: }; 10136: 10136: template 10136: static typename converter::bits_type to_bits(value_t value){ 10136: return converter(value).bits; 10136: } 10136: template 10136: static value_t to_value(typename converter::bits_type bits){ 10136: converter u; 10136: u.bits = bits; 10136: return u.value; 10136: } 10136: 10136: template 10136: union ptr_converter; 10136: 10136: template 10136: union ptr_converter { 10136: ptr_converter(){} 10136: ptr_converter(value_t* a_value) : value(a_value) {} 10136: value_t* value; 10136: uintptr_t bits; 10136: }; 10136: 10136: 10136: template 10136: static typename converter::bits_type & to_bits_ref(value_t& value){ 10136: 10136: 10136: 10136: return *(typename converter::bits_type*)ptr_converter(&value).bits; 10136: 10136: 10136: 10136: } 10136: 10136: 10136: public: 10136: typedef T value_type; 10136: 10136: 10136: atomic_impl() = default ; 10136: constexpr atomic_impl(value_type value):my_storage(value){} 10136: 10136: template 10136: value_type fetch_and_store( value_type value ) { 10136: return to_value( 10136: internal::atomic_traits::fetch_and_store( &my_storage.my_value, to_bits(value) ) 10136: ); 10136: } 10136: 10136: value_type fetch_and_store( value_type value ) { 10136: return fetch_and_store(value); 10136: } 10136: 10136: template 10136: value_type compare_and_swap( value_type value, value_type comparand ) { 10136: return to_value( 10136: internal::atomic_traits::compare_and_swap( &my_storage.my_value, to_bits(value), to_bits(comparand) ) 10136: ); 10136: } 10136: 10136: value_type compare_and_swap( value_type value, value_type comparand ) { 10136: return compare_and_swap(value,comparand); 10136: } 10136: 10136: operator value_type() const volatile { 10136: return to_value( 10136: __TBB_load_with_acquire( to_bits_ref(my_storage.my_value) ) 10136: ); 10136: } 10136: 10136: template 10136: value_type load () const { 10136: return to_value( 10136: internal::atomic_load_store_traits::load( to_bits_ref(my_storage.my_value) ) 10136: ); 10136: } 10136: 10136: value_type load () const { 10136: return load(); 10136: } 10136: 10136: template 10136: void store ( value_type value ) { 10136: internal::atomic_load_store_traits::store( to_bits_ref(my_storage.my_value), to_bits(value)); 10136: } 10136: 10136: void store ( value_type value ) { 10136: store( value ); 10136: } 10136: 10136: protected: 10136: value_type store_with_release( value_type rhs ) { 10136: 10136: __TBB_store_with_release( to_bits_ref(my_storage.my_value), to_bits(rhs) ); 10136: return rhs; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct atomic_impl_with_arithmetic: atomic_impl { 10136: public: 10136: typedef I value_type; 10136: 10136: atomic_impl_with_arithmetic() = default ; 10136: constexpr atomic_impl_with_arithmetic(value_type value): atomic_impl(value){} 10136: 10136: template 10136: value_type fetch_and_add( D addend ) { 10136: return value_type(internal::atomic_traits::fetch_and_add( &this->my_storage.my_value, addend*sizeof(StepType) )); 10136: } 10136: 10136: value_type fetch_and_add( D addend ) { 10136: return fetch_and_add(addend); 10136: } 10136: 10136: template 10136: value_type fetch_and_increment() { 10136: return fetch_and_add(1); 10136: } 10136: 10136: value_type fetch_and_increment() { 10136: return fetch_and_add(1); 10136: } 10136: 10136: template 10136: value_type fetch_and_decrement() { 10136: return fetch_and_add((D(D(0)-D(1)))); 10136: } 10136: 10136: value_type fetch_and_decrement() { 10136: return fetch_and_add((D(D(0)-D(1)))); 10136: } 10136: 10136: public: 10136: value_type operator+=( D value ) { 10136: return fetch_and_add(value)+value; 10136: } 10136: 10136: value_type operator-=( D value ) { 10136: 10136: 10136: return operator+=(D(0)-value); 10136: } 10136: 10136: value_type operator++() { 10136: return fetch_and_add(1)+1; 10136: } 10136: 10136: value_type operator--() { 10136: return fetch_and_add((D(D(0)-D(1))))-1; 10136: } 10136: 10136: value_type operator++(int) { 10136: return fetch_and_add(1); 10136: } 10136: 10136: value_type operator--(int) { 10136: return fetch_and_add((D(D(0)-D(1)))); 10136: } 10136: }; 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct atomic: internal::atomic_impl { 10136: 10136: atomic() = default; 10136: constexpr atomic(T arg): internal::atomic_impl(arg) {} 10136: 10136: T operator=( T rhs ) { 10136: 10136: return this->store_with_release(rhs); 10136: } 10136: atomic& operator=( const atomic& rhs ) {this->store_with_release(rhs); return *this;} 10136: }; 10136: # 438 "../../include/tbb/atomic.h" 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(long long arg): internal::atomic_impl_with_arithmetic(arg) {} long long operator=( long long rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(unsigned long long arg): internal::atomic_impl_with_arithmetic(arg) {} unsigned long long operator=( unsigned long long rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: 10136: 10136: 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(long arg): internal::atomic_impl_with_arithmetic(arg) {} long operator=( long rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(unsigned long arg): internal::atomic_impl_with_arithmetic(arg) {} unsigned long operator=( unsigned long rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: # 470 "../../include/tbb/atomic.h" 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(unsigned arg): internal::atomic_impl_with_arithmetic(arg) {} unsigned operator=( unsigned rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(int arg): internal::atomic_impl_with_arithmetic(arg) {} int operator=( int rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: 10136: 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(unsigned short arg): internal::atomic_impl_with_arithmetic(arg) {} unsigned short operator=( unsigned short rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(short arg): internal::atomic_impl_with_arithmetic(arg) {} short operator=( short rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(char arg): internal::atomic_impl_with_arithmetic(arg) {} char operator=( char rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(signed char arg): internal::atomic_impl_with_arithmetic(arg) {} signed char operator=( signed char rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(unsigned char arg): internal::atomic_impl_with_arithmetic(arg) {} unsigned char operator=( unsigned char rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: 10136: 10136: template<> struct atomic: internal::atomic_impl_with_arithmetic { atomic() = default; constexpr atomic(wchar_t arg): internal::atomic_impl_with_arithmetic(arg) {} wchar_t operator=( wchar_t rhs ) {return store_with_release(rhs);} atomic& operator=( const atomic& rhs ) {store_with_release(rhs); return *this;} }; 10136: 10136: 10136: 10136: template struct atomic: internal::atomic_impl_with_arithmetic { 10136: 10136: atomic() = default ; 10136: constexpr atomic(T* arg): internal::atomic_impl_with_arithmetic(arg) {} 10136: 10136: T* operator=( T* rhs ) { 10136: 10136: return this->store_with_release(rhs); 10136: } 10136: atomic& operator=( const atomic& rhs ) { 10136: this->store_with_release(rhs); return *this; 10136: } 10136: T* operator->() const { 10136: return (*this); 10136: } 10136: }; 10136: 10136: 10136: template<> struct atomic: internal::atomic_impl { 10136: 10136: atomic() = default ; 10136: constexpr atomic(void* arg): internal::atomic_impl(arg) {} 10136: 10136: void* operator=( void* rhs ) { 10136: 10136: return this->store_with_release(rhs); 10136: } 10136: atomic& operator=( const atomic& rhs ) { 10136: this->store_with_release(rhs); return *this; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: T load ( const atomic& a ) { return a.template load(); } 10136: 10136: template 10136: void store ( atomic& a, T value ) { a.template store(value); } 10136: 10136: namespace interface6{ 10136: 10136: template 10136: atomic make_atomic(T t) { 10136: atomic a; 10136: store(a,t); 10136: return a; 10136: } 10136: } 10136: using interface6::make_atomic; 10136: 10136: namespace internal { 10136: template 10136: void swap(atomic & lhs, atomic & rhs){ 10136: T tmp = load(lhs); 10136: store(lhs,load(rhs)); 10136: store(rhs,tmp); 10136: } 10136: 10136: 10136: template 10136: inline atomic& as_atomic( T& t ) { 10136: return (atomic&)t; 10136: } 10136: } 10136: 10136: } 10136: # 129 "../../include/tbb/tbb_profiling.h" 2 10136: 10136: namespace tbb { 10136: namespace internal { 10136: 10136: enum notify_type {prepare=0, cancel, acquired, releasing}; 10136: 10136: const uintptr_t NUM_NOTIFY_TYPES = 4; 10136: 10136: void call_itt_notify_v5(int t, void *ptr); 10136: void itt_store_pointer_with_release_v3(void *dst, void *src); 10136: void* itt_load_pointer_with_acquire_v3(const void *src); 10136: void* itt_load_pointer_v3( const void* src ); 10136: # 160 "../../include/tbb/tbb_profiling.h" 10136: template 10136: inline void itt_store_word_with_release(tbb::atomic& dst, U src) { 10136: 10136: 10136: ((sizeof(T) == sizeof(void *))?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_profiling.h",164,"sizeof(T) == sizeof(void *)","Type must be word-sized.")); 10136: itt_store_pointer_with_release_v3(&dst, (void *)uintptr_t(src)); 10136: 10136: 10136: 10136: } 10136: 10136: template 10136: inline T itt_load_word_with_acquire(const tbb::atomic& src) { 10136: 10136: 10136: ((sizeof(T) == sizeof(void *))?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_profiling.h",175,"sizeof(T) == sizeof(void *)","Type must be word-sized.")); 10136: 10136: 10136: 10136: 10136: 10136: T result = (T)itt_load_pointer_with_acquire_v3(&src); 10136: 10136: 10136: 10136: return result; 10136: 10136: 10136: 10136: } 10136: 10136: template 10136: inline void itt_store_word_with_release(T& dst, T src) { 10136: 10136: 10136: ((sizeof(T) == sizeof(void *))?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_profiling.h",195,"sizeof(T) == sizeof(void *)","Type must be word-sized.")); 10136: itt_store_pointer_with_release_v3(&dst, (void *)src); 10136: 10136: 10136: 10136: } 10136: 10136: template 10136: inline T itt_load_word_with_acquire(const T& src) { 10136: 10136: 10136: ((sizeof(T) == sizeof(void *))?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_profiling.h",206,"sizeof(T) == sizeof(void *)","Type must be word-sized")); 10136: return (T)itt_load_pointer_with_acquire_v3(&src); 10136: 10136: 10136: 10136: } 10136: 10136: template 10136: inline void itt_hide_store_word(T& dst, T src) { 10136: 10136: 10136: ((sizeof(T) == sizeof(void *))?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_profiling.h",217,"sizeof(T) == sizeof(void *)","Type must be word-sized")); 10136: itt_store_pointer_with_release_v3(&dst, (void *)src); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: template 10136: inline T itt_hide_load_word(const T& src) { 10136: 10136: 10136: ((sizeof(T) == sizeof(void *))?((void)0) : tbb::assertion_failure("../../include/tbb/tbb_profiling.h",229,"sizeof(T) == sizeof(void *)","Type must be word-sized.")); 10136: return (T)itt_load_pointer_v3(&src); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: inline void call_itt_notify(notify_type t, void *ptr) { 10136: call_itt_notify_v5((int)t, ptr); 10136: } 10136: # 281 "../../include/tbb/tbb_profiling.h" 10136: } 10136: } 10136: # 27 "../../include/tbb/task.h" 2 10136: # 1 "/usr/include/c++/8/climits" 1 3 10136: # 39 "/usr/include/c++/8/climits" 3 10136: 10136: # 40 "/usr/include/c++/8/climits" 3 10136: 10136: 10136: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed/limits.h" 1 3 4 10136: # 43 "/usr/include/c++/8/climits" 2 3 10136: # 28 "../../include/tbb/task.h" 2 10136: 10136: typedef struct ___itt_caller *__itt_caller; 10136: 10136: namespace tbb { 10136: 10136: class task; 10136: class task_list; 10136: class task_group_context; 10136: # 45 "../../include/tbb/task.h" 10136: namespace internal { 10136: 10136: class allocate_additional_child_of_proxy: no_assign { 10136: 10136: task* self; 10136: task& parent; 10136: public: 10136: explicit allocate_additional_child_of_proxy( task& parent_ ) : self( 10136: # 52 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 52 "../../include/tbb/task.h" 10136: ), parent(parent_) {} 10136: task& allocate( size_t size ) const; 10136: void free( task& ) const; 10136: }; 10136: 10136: struct cpu_ctl_env_space { int space[sizeof(internal::uint64_t)/sizeof(int)]; }; 10136: } 10136: 10136: namespace interface5 { 10136: namespace internal { 10136: 10136: 10136: 10136: 10136: 10136: 10136: class task_base: tbb::internal::no_copy { 10136: private: 10136: friend class tbb::task; 10136: 10136: 10136: static void spawn( task& t ); 10136: 10136: 10136: static void spawn( task_list& list ); 10136: 10136: 10136: 10136: 10136: static tbb::internal::allocate_additional_child_of_proxy allocate_additional_child_of( task& t ) { 10136: return tbb::internal::allocate_additional_child_of_proxy(t); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: static void destroy( task& victim ); 10136: }; 10136: } 10136: } 10136: 10136: 10136: namespace internal { 10136: 10136: class scheduler: no_copy { 10136: public: 10136: 10136: virtual void spawn( task& first, task*& next ) = 0; 10136: 10136: 10136: virtual void wait_for_all( task& parent, task* child ) = 0; 10136: 10136: 10136: virtual void spawn_root_and_wait( task& first, task*& next ) = 0; 10136: 10136: 10136: 10136: virtual ~scheduler() = 0; 10136: 10136: 10136: virtual void enqueue( task& t, void* reserved ) = 0; 10136: }; 10136: 10136: 10136: 10136: typedef intptr_t reference_count; 10136: 10136: 10136: typedef unsigned short affinity_id; 10136: # 131 "../../include/tbb/task.h" 10136: class generic_scheduler; 10136: 10136: struct context_list_node_t { 10136: context_list_node_t *my_prev, 10136: *my_next; 10136: }; 10136: 10136: class allocate_root_with_context_proxy: no_assign { 10136: task_group_context& my_context; 10136: public: 10136: allocate_root_with_context_proxy ( task_group_context& ctx ) : my_context(ctx) {} 10136: task& allocate( size_t size ) const; 10136: void free( task& ) const; 10136: }; 10136: 10136: 10136: class allocate_root_proxy: no_assign { 10136: public: 10136: static task& allocate( size_t size ); 10136: static void free( task& ); 10136: }; 10136: 10136: class allocate_continuation_proxy: no_assign { 10136: public: 10136: task& allocate( size_t size ) const; 10136: void free( task& ) const; 10136: }; 10136: 10136: class allocate_child_proxy: no_assign { 10136: public: 10136: task& allocate( size_t size ) const; 10136: void free( task& ) const; 10136: }; 10136: # 179 "../../include/tbb/task.h" 10136: class task_prefix { 10136: private: 10136: friend class tbb::task; 10136: friend class tbb::interface5::internal::task_base; 10136: friend class tbb::task_list; 10136: friend class internal::scheduler; 10136: friend class internal::allocate_root_proxy; 10136: friend class internal::allocate_child_proxy; 10136: friend class internal::allocate_continuation_proxy; 10136: friend class internal::allocate_additional_child_of_proxy; 10136: # 200 "../../include/tbb/task.h" 10136: task_group_context *context; 10136: # 209 "../../include/tbb/task.h" 10136: scheduler* origin; 10136: 10136: 10136: union { 10136: 10136: 10136: 10136: 10136: scheduler* owner; 10136: 10136: 10136: 10136: 10136: task* next_offloaded; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: tbb::task* parent; 10136: 10136: 10136: 10136: 10136: 10136: 10136: reference_count ref_count; 10136: 10136: 10136: 10136: 10136: int depth; 10136: 10136: 10136: 10136: unsigned char state; 10136: # 255 "../../include/tbb/task.h" 10136: unsigned char extra_state; 10136: 10136: affinity_id affinity; 10136: 10136: 10136: tbb::task* next; 10136: 10136: 10136: tbb::task& task() {return *reinterpret_cast(this+1);} 10136: }; 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: namespace internal { 10136: static const int priority_stride_v4 = 0x7fffffff / 4; 10136: } 10136: 10136: enum priority_t { 10136: priority_normal = internal::priority_stride_v4 * 2, 10136: priority_low = priority_normal - internal::priority_stride_v4, 10136: priority_high = priority_normal + internal::priority_stride_v4 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace internal { 10136: class tbb_exception_ptr; 10136: } 10136: 10136: 10136: class task_scheduler_init; 10136: namespace interface7 { class task_arena; } 10136: # 316 "../../include/tbb/task.h" 10136: class task_group_context : internal::no_copy { 10136: private: 10136: friend class internal::generic_scheduler; 10136: friend class task_scheduler_init; 10136: friend class interface7::task_arena; 10136: 10136: 10136: 10136: 10136: typedef internal::tbb_exception_ptr exception_container_type; 10136: 10136: 10136: enum version_traits_word_layout { 10136: traits_offset = 16, 10136: version_mask = 0xFFFF, 10136: traits_mask = 0xFFFFul << traits_offset 10136: }; 10136: 10136: public: 10136: enum kind_type { 10136: isolated, 10136: bound 10136: }; 10136: 10136: enum traits_type { 10136: exact_exception = 0x0001ul << traits_offset, 10136: 10136: fp_settings = 0x0002ul << traits_offset, 10136: 10136: concurrent_wait = 0x0004ul << traits_offset, 10136: 10136: 10136: 10136: default_traits = exact_exception 10136: 10136: }; 10136: 10136: private: 10136: enum state { 10136: may_have_children = 1, 10136: 10136: next_state_value, low_unused_state_bit = (next_state_value-1)*2 10136: }; 10136: 10136: union { 10136: 10136: 10136: kind_type my_kind; 10136: uintptr_t _my_kind_aligner; 10136: }; 10136: 10136: 10136: task_group_context *my_parent; 10136: 10136: 10136: 10136: 10136: internal::context_list_node_t my_node; 10136: 10136: 10136: __itt_caller itt_caller; 10136: 10136: 10136: 10136: 10136: 10136: char _leading_padding[internal::NFS_MaxLineSize 10136: - 2 * sizeof(uintptr_t)- sizeof(void*) - sizeof(internal::context_list_node_t) 10136: - sizeof(__itt_caller) 10136: 10136: - sizeof(internal::cpu_ctl_env_space) 10136: 10136: ]; 10136: 10136: 10136: 10136: 10136: 10136: internal::cpu_ctl_env_space my_cpu_ctl_env; 10136: 10136: 10136: 10136: uintptr_t my_cancellation_requested; 10136: 10136: 10136: 10136: 10136: 10136: uintptr_t my_version_and_traits; 10136: 10136: 10136: exception_container_type *my_exception; 10136: 10136: 10136: internal::generic_scheduler *my_owner; 10136: 10136: 10136: uintptr_t my_state; 10136: 10136: 10136: 10136: intptr_t my_priority; 10136: 10136: 10136: 10136: 10136: char _trailing_padding[internal::NFS_MaxLineSize - 2 * sizeof(uintptr_t) - 2 * sizeof(void*) 10136: 10136: - sizeof(intptr_t) 10136: 10136: ]; 10136: 10136: public: 10136: # 458 "../../include/tbb/task.h" 10136: task_group_context ( kind_type relation_with_parent = bound, 10136: uintptr_t t = default_traits ) 10136: : my_kind(relation_with_parent) 10136: , my_version_and_traits(2 | t) 10136: { 10136: init(); 10136: } 10136: 10136: 10136: ~task_group_context (); 10136: # 477 "../../include/tbb/task.h" 10136: void reset (); 10136: # 487 "../../include/tbb/task.h" 10136: bool cancel_group_execution (); 10136: 10136: 10136: bool is_group_execution_cancelled () const; 10136: # 499 "../../include/tbb/task.h" 10136: void register_pending_exception (); 10136: # 510 "../../include/tbb/task.h" 10136: void capture_fp_settings (); 10136: 10136: 10136: 10136: 10136: void set_priority ( priority_t ); 10136: 10136: 10136: priority_t priority () const; 10136: 10136: 10136: 10136: uintptr_t traits() const { return my_version_and_traits & traits_mask; } 10136: 10136: protected: 10136: 10136: 10136: void init (); 10136: 10136: private: 10136: friend class task; 10136: friend class internal::allocate_root_with_context_proxy; 10136: 10136: static const kind_type binding_required = bound; 10136: static const kind_type binding_completed = kind_type(bound+1); 10136: static const kind_type detached = kind_type(binding_completed+1); 10136: static const kind_type dying = kind_type(detached+1); 10136: 10136: 10136: template 10136: void propagate_task_group_state ( T task_group_context::*mptr_state, task_group_context& src, T new_state ); 10136: 10136: 10136: void bind_to ( internal::generic_scheduler *local_sched ); 10136: 10136: 10136: void register_with ( internal::generic_scheduler *local_sched ); 10136: 10136: 10136: 10136: 10136: void copy_fp_settings( const task_group_context &src ); 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: class task: private interface5::internal::task_base { 10136: 10136: 10136: void internal_set_ref_count( int count ); 10136: 10136: 10136: internal::reference_count internal_decrement_ref_count(); 10136: 10136: protected: 10136: 10136: task() {prefix().extra_state=1;} 10136: 10136: public: 10136: 10136: virtual ~task() {} 10136: 10136: 10136: virtual task* execute() = 0; 10136: 10136: 10136: enum state_type { 10136: 10136: executing, 10136: 10136: reexecute, 10136: 10136: ready, 10136: 10136: allocated, 10136: 10136: freed, 10136: 10136: recycle 10136: 10136: 10136: 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: static internal::allocate_root_proxy allocate_root() { 10136: return internal::allocate_root_proxy(); 10136: } 10136: 10136: 10136: 10136: static internal::allocate_root_with_context_proxy allocate_root( task_group_context& ctx ) { 10136: return internal::allocate_root_with_context_proxy(ctx); 10136: } 10136: 10136: 10136: 10136: 10136: internal::allocate_continuation_proxy& allocate_continuation() { 10136: return *reinterpret_cast(this); 10136: } 10136: 10136: 10136: internal::allocate_child_proxy& allocate_child() { 10136: return *reinterpret_cast(this); 10136: } 10136: 10136: 10136: using task_base::allocate_additional_child_of; 10136: # 637 "../../include/tbb/task.h" 10136: using task_base::destroy; 10136: # 651 "../../include/tbb/task.h" 10136: void recycle_as_continuation() { 10136: ((prefix().state==executing)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",652,"prefix().state==executing","execute not running?")); 10136: prefix().state = allocated; 10136: } 10136: 10136: 10136: 10136: 10136: void recycle_as_safe_continuation() { 10136: ((prefix().state==executing)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",660,"prefix().state==executing","execute not running?")); 10136: prefix().state = recycle; 10136: } 10136: 10136: 10136: void recycle_as_child_of( task& new_parent ) { 10136: internal::task_prefix& p = prefix(); 10136: ((prefix().state==executing||prefix().state==allocated)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",667,"prefix().state==executing||prefix().state==allocated","execute not running, or already recycled")); 10136: ((prefix().ref_count==0)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",668,"prefix().ref_count==0","no child tasks allowed when recycled as a child")); 10136: ((p.parent== 10136: # 669 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 669 "../../include/tbb/task.h" 10136: )?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",669,"p.parent==__null","parent must be null")); 10136: ((new_parent.prefix().state<=recycle)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",670,"new_parent.prefix().state<=recycle","corrupt parent's state")); 10136: ((new_parent.prefix().state!=freed)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",671,"new_parent.prefix().state!=freed","parent already freed")); 10136: p.state = allocated; 10136: p.parent = &new_parent; 10136: 10136: p.context = new_parent.prefix().context; 10136: 10136: } 10136: 10136: 10136: 10136: void recycle_to_reexecute() { 10136: ((prefix().state==executing)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",682,"prefix().state==executing","execute not running, or already recycled")); 10136: ((prefix().ref_count==0)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",683,"prefix().ref_count==0","no child tasks allowed when recycled for reexecution")); 10136: prefix().state = reexecute; 10136: } 10136: # 701 "../../include/tbb/task.h" 10136: void set_ref_count( int count ) { 10136: 10136: internal_set_ref_count(count); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: 10136: void increment_ref_count() { 10136: __TBB_machine_fetchadd4(&prefix().ref_count,1); 10136: } 10136: 10136: 10136: 10136: int add_ref_count( int count ) { 10136: internal::call_itt_notify( internal::releasing, &prefix().ref_count ); 10136: internal::reference_count k = count+__TBB_machine_fetchadd4(&prefix().ref_count,count); 10136: ((k>=0)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",720,"k>=0","task's reference count underflowed")); 10136: if( k==0 ) 10136: internal::call_itt_notify( internal::acquired, &prefix().ref_count ); 10136: return int(k); 10136: } 10136: 10136: 10136: 10136: int decrement_ref_count() { 10136: 10136: return int(internal_decrement_ref_count()); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: using task_base::spawn; 10136: 10136: 10136: void spawn_and_wait_for_all( task& child ) { 10136: prefix().owner->wait_for_all( *this, &child ); 10136: } 10136: 10136: 10136: void spawn_and_wait_for_all( task_list& list ); 10136: 10136: 10136: static void spawn_root_and_wait( task& root ) { 10136: root.prefix().owner->spawn_root_and_wait( root, root.prefix().next ); 10136: } 10136: 10136: 10136: 10136: 10136: static void spawn_root_and_wait( task_list& root_list ); 10136: 10136: 10136: 10136: void wait_for_all() { 10136: prefix().owner->wait_for_all( *this, 10136: # 760 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 760 "../../include/tbb/task.h" 10136: ); 10136: } 10136: # 776 "../../include/tbb/task.h" 10136: static void enqueue( task& t ) { 10136: t.prefix().owner->enqueue( t, 10136: # 777 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 777 "../../include/tbb/task.h" 10136: ); 10136: } 10136: 10136: 10136: 10136: static void enqueue( task& t, priority_t p ) { 10136: ((p == priority_low || p == priority_normal || p == priority_high)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",783,"p == priority_low || p == priority_normal || p == priority_high","Invalid priority level value")); 10136: t.prefix().owner->enqueue( t, (void*)p ); 10136: } 10136: 10136: 10136: 10136: static task& self(); 10136: 10136: 10136: task* parent() const {return prefix().parent;} 10136: 10136: 10136: void set_parent(task* p) { 10136: 10136: ((!p || prefix().context == p->prefix().context)?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",797,"!p || prefix().context == p->prefix().context","The tasks must be in the same context")); 10136: 10136: prefix().parent = p; 10136: } 10136: 10136: 10136: 10136: 10136: task_group_context* context() {return prefix().context;} 10136: 10136: 10136: task_group_context* group () { return prefix().context; } 10136: 10136: 10136: 10136: bool is_stolen_task() const { 10136: return (prefix().extra_state & 0x80)!=0; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: state_type state() const {return state_type(prefix().state);} 10136: 10136: 10136: int ref_count() const { 10136: 10136: internal::reference_count ref_count_ = prefix().ref_count; 10136: ((ref_count_==int(ref_count_))?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",827,"ref_count_==int(ref_count_)","integer overflow error")); 10136: 10136: return int(prefix().ref_count); 10136: } 10136: 10136: 10136: bool is_owned_by_current_thread() const; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef internal::affinity_id affinity_id; 10136: 10136: 10136: void set_affinity( affinity_id id ) {prefix().affinity = id;} 10136: 10136: 10136: affinity_id affinity() const {return prefix().affinity;} 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual void note_affinity( affinity_id id ); 10136: # 868 "../../include/tbb/task.h" 10136: void change_group ( task_group_context& ctx ); 10136: 10136: 10136: 10136: bool cancel_group_execution () { return prefix().context->cancel_group_execution(); } 10136: 10136: 10136: bool is_cancelled () const { return prefix().context->is_group_execution_cancelled(); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: void set_group_priority ( priority_t p ) { prefix().context->set_priority(p); } 10136: 10136: 10136: priority_t group_priority () const { return prefix().context->priority(); } 10136: 10136: 10136: 10136: private: 10136: friend class interface5::internal::task_base; 10136: friend class task_list; 10136: friend class internal::scheduler; 10136: friend class internal::allocate_root_proxy; 10136: 10136: friend class internal::allocate_root_with_context_proxy; 10136: 10136: friend class internal::allocate_continuation_proxy; 10136: friend class internal::allocate_child_proxy; 10136: friend class internal::allocate_additional_child_of_proxy; 10136: 10136: 10136: 10136: internal::task_prefix& prefix( internal::version_tag* = 10136: # 903 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 903 "../../include/tbb/task.h" 10136: ) const { 10136: return reinterpret_cast(const_cast(this))[-1]; 10136: } 10136: }; 10136: 10136: 10136: 10136: class empty_task: public task { 10136: task* execute() override { 10136: return 10136: # 912 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 912 "../../include/tbb/task.h" 10136: ; 10136: } 10136: }; 10136: 10136: 10136: namespace internal { 10136: template 10136: class function_task : public task { 10136: 10136: 10136: 10136: const F my_func; 10136: 10136: task* execute() override { 10136: my_func(); 10136: return 10136: # 927 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 927 "../../include/tbb/task.h" 10136: ; 10136: } 10136: public: 10136: function_task( const F& f ) : my_func(f) {} 10136: }; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: class task_list: internal::no_copy { 10136: private: 10136: task* first; 10136: task** next_ptr; 10136: friend class task; 10136: friend class interface5::internal::task_base; 10136: public: 10136: 10136: task_list() : first( 10136: # 946 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 946 "../../include/tbb/task.h" 10136: ), next_ptr(&first) {} 10136: 10136: 10136: ~task_list() {} 10136: 10136: 10136: bool empty() const {return !first;} 10136: 10136: 10136: void push_back( task& task ) { 10136: task.prefix().next = 10136: # 956 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 956 "../../include/tbb/task.h" 10136: ; 10136: *next_ptr = &task; 10136: next_ptr = &task.prefix().next; 10136: } 10136: # 973 "../../include/tbb/task.h" 10136: task& pop_front() { 10136: ((!empty())?((void)0) : tbb::assertion_failure("../../include/tbb/task.h",974,"!empty()","attempt to pop item from empty task_list")); 10136: task* result = first; 10136: first = result->prefix().next; 10136: if( !first ) next_ptr = &first; 10136: return *result; 10136: } 10136: 10136: 10136: void clear() { 10136: first= 10136: # 983 "../../include/tbb/task.h" 3 4 10136: __null 10136: # 983 "../../include/tbb/task.h" 10136: ; 10136: next_ptr=&first; 10136: } 10136: }; 10136: 10136: inline void interface5::internal::task_base::spawn( task& t ) { 10136: t.prefix().owner->spawn( t, t.prefix().next ); 10136: } 10136: 10136: inline void interface5::internal::task_base::spawn( task_list& list ) { 10136: if( task* t = list.first ) { 10136: t->prefix().owner->spawn( *t, *list.next_ptr ); 10136: list.clear(); 10136: } 10136: } 10136: 10136: inline void task::spawn_root_and_wait( task_list& root_list ) { 10136: if( task* t = root_list.first ) { 10136: t->prefix().owner->spawn_root_and_wait( *t, *root_list.next_ptr ); 10136: root_list.clear(); 10136: } 10136: } 10136: 10136: } 10136: 10136: inline void *operator new( size_t bytes, const tbb::internal::allocate_root_proxy& ) { 10136: return &tbb::internal::allocate_root_proxy::allocate(bytes); 10136: } 10136: 10136: inline void operator delete( void* task, const tbb::internal::allocate_root_proxy& ) { 10136: tbb::internal::allocate_root_proxy::free( *static_cast(task) ); 10136: } 10136: 10136: 10136: inline void *operator new( size_t bytes, const tbb::internal::allocate_root_with_context_proxy& p ) { 10136: return &p.allocate(bytes); 10136: } 10136: 10136: inline void operator delete( void* task, const tbb::internal::allocate_root_with_context_proxy& p ) { 10136: p.free( *static_cast(task) ); 10136: } 10136: 10136: 10136: inline void *operator new( size_t bytes, const tbb::internal::allocate_continuation_proxy& p ) { 10136: return &p.allocate(bytes); 10136: } 10136: 10136: inline void operator delete( void* task, const tbb::internal::allocate_continuation_proxy& p ) { 10136: p.free( *static_cast(task) ); 10136: } 10136: 10136: inline void *operator new( size_t bytes, const tbb::internal::allocate_child_proxy& p ) { 10136: return &p.allocate(bytes); 10136: } 10136: 10136: inline void operator delete( void* task, const tbb::internal::allocate_child_proxy& p ) { 10136: p.free( *static_cast(task) ); 10136: } 10136: 10136: inline void *operator new( size_t bytes, const tbb::internal::allocate_additional_child_of_proxy& p ) { 10136: return &p.allocate(bytes); 10136: } 10136: 10136: inline void operator delete( void* task, const tbb::internal::allocate_additional_child_of_proxy& p ) { 10136: p.free( *static_cast(task) ); 10136: } 10136: # 32 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/atomic.h" 1 10136: # 33 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/parallel_for.h" 1 10136: # 25 "../../include/tbb/parallel_for.h" 10136: # 1 "../../include/tbb/task.h" 1 10136: # 26 "../../include/tbb/parallel_for.h" 2 10136: # 1 "../../include/tbb/partitioner.h" 1 10136: # 53 "../../include/tbb/partitioner.h" 10136: # 1 "../../include/tbb/aligned_space.h" 1 10136: # 27 "../../include/tbb/aligned_space.h" 10136: namespace tbb { 10136: 10136: 10136: 10136: 10136: template 10136: class aligned_space { 10136: private: 10136: typedef tbb::internal::type_with_alignment element_type; 10136: element_type array[(sizeof(T)*N+sizeof(element_type)-1)/sizeof(element_type)]; 10136: public: 10136: 10136: T* begin() {return internal::punned_cast(this);} 10136: 10136: 10136: T* end() {return begin()+N;} 10136: }; 10136: 10136: } 10136: # 54 "../../include/tbb/partitioner.h" 2 10136: 10136: # 1 "../../include/tbb/internal/_template_helpers.h" 1 10136: # 27 "../../include/tbb/internal/_template_helpers.h" 10136: namespace tbb { namespace internal { 10136: 10136: 10136: template struct enable_if {}; 10136: template struct enable_if { typedef T type; }; 10136: 10136: 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: 10136: template struct strip { typedef T(*type)(); }; 10136: 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: template struct strip { typedef T type; }; 10136: 10136: 10136: template struct strip { typedef T* type; }; 10136: template struct strip { typedef const T* type; }; 10136: template struct strip { typedef volatile T* type; }; 10136: template struct strip { typedef const volatile T* type; }; 10136: 10136: 10136: template struct is_same_type { static const bool value = false; }; 10136: template struct is_same_type { static const bool value = true; }; 10136: 10136: template struct is_ref { static const bool value = false; }; 10136: template struct is_ref { static const bool value = true; }; 10136: 10136: 10136: 10136: template struct void_t { typedef void type; }; 10136: 10136: 10136: 10136: 10136: 10136: template< typename... Types > 10136: struct stored_pack; 10136: 10136: template<> 10136: struct stored_pack<> 10136: { 10136: typedef stored_pack<> pack_type; 10136: stored_pack() {} 10136: 10136: 10136: template< typename F, typename Pack > friend void call( F&& f, Pack&& p ); 10136: template< typename Ret, typename F, typename Pack > friend Ret call_and_return( F&& f, Pack&& p ); 10136: 10136: protected: 10136: 10136: 10136: template< typename Ret, typename F, typename... Preceding > 10136: static Ret call( F&& f, const pack_type& , Preceding&&... params ) { 10136: return std::forward(f)( std::forward(params)... ); 10136: } 10136: template< typename Ret, typename F, typename... Preceding > 10136: static Ret call( F&& f, pack_type&& , Preceding&&... params ) { 10136: return std::forward(f)( std::forward(params)... ); 10136: } 10136: }; 10136: 10136: template< typename T, typename... Types > 10136: struct stored_pack : stored_pack 10136: { 10136: typedef stored_pack pack_type; 10136: typedef stored_pack pack_remainder; 10136: 10136: 10136: typename strip::type leftmost_value; 10136: 10136: 10136: 10136: stored_pack( T&& t, Types&&... types ) 10136: : pack_remainder(std::forward(types)...), leftmost_value(std::forward(t)) {} 10136: 10136: 10136: template< typename F, typename Pack > friend void call( F&& f, Pack&& p ); 10136: template< typename Ret, typename F, typename Pack > friend Ret call_and_return( F&& f, Pack&& p ); 10136: 10136: protected: 10136: template< typename Ret, typename F, typename... Preceding > 10136: static Ret call( F&& f, pack_type& pack, Preceding&&... params ) { 10136: return pack_remainder::template call( 10136: std::forward(f), static_cast(pack), 10136: std::forward(params)... , pack.leftmost_value 10136: ); 10136: } 10136: template< typename Ret, typename F, typename... Preceding > 10136: static Ret call( F&& f, const pack_type& pack, Preceding&&... params ) { 10136: return pack_remainder::template call( 10136: std::forward(f), static_cast(pack), 10136: std::forward(params)... , pack.leftmost_value 10136: ); 10136: } 10136: template< typename Ret, typename F, typename... Preceding > 10136: static Ret call( F&& f, pack_type&& pack, Preceding&&... params ) { 10136: return pack_remainder::template call( 10136: std::forward(f), static_cast(pack), 10136: std::forward(params)... , std::move(pack.leftmost_value) 10136: ); 10136: } 10136: }; 10136: 10136: 10136: template< typename F, typename Pack > 10136: void call( F&& f, Pack&& p ) { 10136: strip::type::template call( std::forward(f), std::forward(p) ); 10136: } 10136: 10136: template< typename Ret, typename F, typename Pack > 10136: Ret call_and_return( F&& f, Pack&& p ) { 10136: return strip::type::template call( std::forward(f), std::forward(p) ); 10136: } 10136: 10136: template< typename... Types > 10136: stored_pack save_pack( Types&&... types ) { 10136: return stored_pack( std::forward(types)... ); 10136: } 10136: 10136: 10136: } } 10136: # 56 "../../include/tbb/partitioner.h" 2 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: namespace tbb { 10136: 10136: class auto_partitioner; 10136: class simple_partitioner; 10136: class static_partitioner; 10136: class affinity_partitioner; 10136: 10136: namespace interface9 { 10136: namespace internal { 10136: class affinity_partition_type; 10136: } 10136: } 10136: 10136: namespace internal { 10136: size_t get_initial_auto_partitioner_divisor(); 10136: 10136: 10136: class affinity_partitioner_base_v3: no_copy { 10136: friend class tbb::affinity_partitioner; 10136: friend class tbb::interface9::internal::affinity_partition_type; 10136: 10136: 10136: affinity_id* my_array; 10136: 10136: size_t my_size; 10136: 10136: affinity_partitioner_base_v3() : my_array( 10136: # 89 "../../include/tbb/partitioner.h" 3 4 10136: __null 10136: # 89 "../../include/tbb/partitioner.h" 10136: ), my_size(0) {} 10136: 10136: ~affinity_partitioner_base_v3() {resize(0);} 10136: 10136: 10136: void resize( unsigned factor ); 10136: }; 10136: 10136: 10136: class partition_type_base { 10136: public: 10136: void set_affinity( task & ) {} 10136: void note_affinity( task::affinity_id ) {} 10136: task* continue_after_execute_range() {return 10136: # 102 "../../include/tbb/partitioner.h" 3 4 10136: __null 10136: # 102 "../../include/tbb/partitioner.h" 10136: ;} 10136: bool decide_whether_to_delay() {return false;} 10136: void spawn_or_delay( bool, task& b ) { 10136: task::spawn(b); 10136: } 10136: }; 10136: 10136: template class start_scan; 10136: 10136: } 10136: 10136: namespace serial { 10136: namespace interface9 { 10136: template class start_for; 10136: } 10136: } 10136: 10136: namespace interface9 { 10136: 10136: namespace internal { 10136: using namespace tbb::internal; 10136: template class start_for; 10136: template class start_reduce; 10136: 10136: 10136: class flag_task: public task { 10136: public: 10136: tbb::atomic my_child_stolen; 10136: flag_task() { my_child_stolen = false; } 10136: task* execute() override { return 10136: # 131 "../../include/tbb/partitioner.h" 3 4 10136: __null 10136: # 131 "../../include/tbb/partitioner.h" 10136: ; } 10136: static void mark_task_stolen(task &t) { 10136: tbb::atomic &flag = static_cast(t.parent())->my_child_stolen; 10136: 10136: 10136: flag.fetch_and_store(true); 10136: 10136: 10136: 10136: } 10136: static bool is_peer_stolen(task &t) { 10136: return static_cast(t.parent())->my_child_stolen; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: typedef unsigned char depth_t; 10136: 10136: 10136: template 10136: class range_vector { 10136: depth_t my_head; 10136: depth_t my_tail; 10136: depth_t my_size; 10136: depth_t my_depth[MaxCapacity]; 10136: tbb::aligned_space my_pool; 10136: 10136: public: 10136: 10136: range_vector(const T& elem) : my_head(0), my_tail(0), my_size(1) { 10136: my_depth[0] = 0; 10136: new( static_cast(my_pool.begin()) ) T(elem); 10136: } 10136: ~range_vector() { 10136: while( !empty() ) pop_back(); 10136: } 10136: bool empty() const { return my_size == 0; } 10136: depth_t size() const { return my_size; } 10136: 10136: 10136: void split_to_fill(depth_t max_depth) { 10136: while( my_size < MaxCapacity && is_divisible(max_depth) ) { 10136: depth_t prev = my_head; 10136: my_head = (my_head + 1) % MaxCapacity; 10136: new(my_pool.begin()+my_head) T(my_pool.begin()[prev]); 10136: my_pool.begin()[prev].~T(); 10136: new(my_pool.begin()+prev) T(my_pool.begin()[my_head], split()); 10136: my_depth[my_head] = ++my_depth[prev]; 10136: my_size++; 10136: } 10136: } 10136: void pop_back() { 10136: ((my_size > 0)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",185,"my_size > 0","range_vector::pop_back() with empty size")); 10136: my_pool.begin()[my_head].~T(); 10136: my_size--; 10136: my_head = (my_head + MaxCapacity - 1) % MaxCapacity; 10136: } 10136: void pop_front() { 10136: ((my_size > 0)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",191,"my_size > 0","range_vector::pop_front() with empty size")); 10136: my_pool.begin()[my_tail].~T(); 10136: my_size--; 10136: my_tail = (my_tail + 1) % MaxCapacity; 10136: } 10136: T& back() { 10136: ((my_size > 0)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",197,"my_size > 0","range_vector::back() with empty size")); 10136: return my_pool.begin()[my_head]; 10136: } 10136: T& front() { 10136: ((my_size > 0)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",201,"my_size > 0","range_vector::front() with empty size")); 10136: return my_pool.begin()[my_tail]; 10136: } 10136: 10136: depth_t front_depth() { 10136: ((my_size > 0)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",206,"my_size > 0","range_vector::front_depth() with empty size")); 10136: return my_depth[my_tail]; 10136: } 10136: depth_t back_depth() { 10136: ((my_size > 0)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",210,"my_size > 0","range_vector::back_depth() with empty size")); 10136: return my_depth[my_head]; 10136: } 10136: bool is_divisible(depth_t max_depth) { 10136: return back_depth() < max_depth && back().is_divisible(); 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct partition_type_base { 10136: typedef split split_type; 10136: 10136: void set_affinity( task & ) {} 10136: void note_affinity( task::affinity_id ) {} 10136: bool check_being_stolen(task &) { return false; } 10136: bool check_for_demand(task &) { return false; } 10136: bool is_divisible() { return true; } 10136: depth_t max_depth() { return 0; } 10136: void align_depth(depth_t) { } 10136: template split_type get_split() { return split(); } 10136: Partition& self() { return *static_cast(this); } 10136: 10136: template 10136: void work_balance(StartType &start, Range &range) { 10136: start.run_body( range ); 10136: } 10136: 10136: template 10136: void execute(StartType &start, Range &range) { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: if ( range.is_divisible() ) { 10136: if ( self().is_divisible() ) { 10136: do { 10136: typename Partition::split_type split_obj = self().template get_split(); 10136: start.offer_work( split_obj ); 10136: } while ( range.is_divisible() && self().is_divisible() ); 10136: } 10136: } 10136: self().work_balance(start, range); 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct adaptive_mode : partition_type_base { 10136: typedef Partition my_partition; 10136: using partition_type_base::self; 10136: size_t my_divisor; 10136: 10136: 10136: 10136: 10136: static const unsigned factor = 1; 10136: adaptive_mode() : my_divisor(tbb::internal::get_initial_auto_partitioner_divisor() / 4 * my_partition::factor) {} 10136: adaptive_mode(adaptive_mode &src, split) : my_divisor(do_split(src, split())) {} 10136: adaptive_mode(adaptive_mode &src, const proportional_split& split_obj) : my_divisor(do_split(src, split_obj)) {} 10136: 10136: size_t do_split(adaptive_mode &src, split) { 10136: return src.my_divisor /= 2u; 10136: } 10136: size_t do_split(adaptive_mode &src, const proportional_split& split_obj) { 10136: 10136: 10136: 10136: 10136: size_t portion = split_obj.right() * my_partition::factor; 10136: 10136: portion = (portion + my_partition::factor/2) & (0ul - my_partition::factor); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: src.my_divisor -= portion; 10136: return portion; 10136: } 10136: bool is_divisible() { 10136: return my_divisor > my_partition::factor; 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct linear_affinity_mode : adaptive_mode { 10136: using adaptive_mode::my_divisor; 10136: size_t my_head; 10136: using adaptive_mode::self; 10136: linear_affinity_mode() : adaptive_mode(), my_head(0) {} 10136: linear_affinity_mode(linear_affinity_mode &src, split) : adaptive_mode(src, split()) 10136: , my_head(src.my_head + src.my_divisor) {} 10136: linear_affinity_mode(linear_affinity_mode &src, const proportional_split& split_obj) : adaptive_mode(src, split_obj) 10136: , my_head(src.my_head + src.my_divisor) {} 10136: void set_affinity( task &t ) { 10136: if( my_divisor ) 10136: t.set_affinity( affinity_id(my_head) + 1 ); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class is_splittable_in_proportion { 10136: private: 10136: typedef char yes[1]; 10136: typedef char no [2]; 10136: 10136: template static yes& decide(typename enable_if::type *); 10136: template static no& decide(...); 10136: public: 10136: 10136: 10136: static const bool value = (sizeof(decide(0)) == sizeof(yes)); 10136: }; 10136: 10136: 10136: template 10136: struct unbalancing_partition_type : Mode { 10136: using Mode::self; 10136: unbalancing_partition_type() : Mode() {} 10136: unbalancing_partition_type(unbalancing_partition_type& p, split) : Mode(p, split()) {} 10136: unbalancing_partition_type(unbalancing_partition_type& p, const proportional_split& split_obj) : Mode(p, split_obj) {} 10136: 10136: 10136: 10136: 10136: 10136: template 10136: proportional_split get_split() { 10136: if (is_splittable_in_proportion::value) { 10136: size_t size = self().my_divisor / Mode::my_partition::factor; 10136: 10136: 10136: 10136: size_t right = size / 2; 10136: 10136: size_t left = size - right; 10136: return proportional_split(left, right); 10136: } else { 10136: return proportional_split(1, 1); 10136: } 10136: } 10136: 10136: 10136: 10136: }; 10136: 10136: 10136: template 10136: struct balancing_partition_type : unbalancing_partition_type { 10136: using Mode::self; 10136: 10136: 10136: 10136: enum { 10136: begin = 0, 10136: run, 10136: pass 10136: } my_delay; 10136: depth_t my_max_depth; 10136: static const unsigned range_pool_size = 8; 10136: balancing_partition_type(): unbalancing_partition_type() 10136: 10136: 10136: 10136: , my_delay(begin) 10136: , my_max_depth(5) {} 10136: balancing_partition_type(balancing_partition_type& p, split) 10136: : unbalancing_partition_type(p, split()) 10136: 10136: 10136: 10136: , my_delay(pass) 10136: , my_max_depth(p.my_max_depth) {} 10136: balancing_partition_type(balancing_partition_type& p, const proportional_split& split_obj) 10136: : unbalancing_partition_type(p, split_obj) 10136: 10136: 10136: 10136: , my_delay(begin) 10136: , my_max_depth(p.my_max_depth) {} 10136: bool check_being_stolen( task &t) { 10136: if( !(self().my_divisor / Mode::my_partition::factor) ) { 10136: self().my_divisor = 1; 10136: if( t.is_stolen_task() && t.parent()->ref_count() >= 2 ) { 10136: 10136: 10136: ((dynamic_cast(t.parent()))?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",408,"dynamic_cast(t.parent())",0)); 10136: 10136: 10136: 10136: 10136: flag_task::mark_task_stolen(t); 10136: if( !my_max_depth ) my_max_depth++; 10136: my_max_depth += 1; 10136: return true; 10136: } 10136: } 10136: return false; 10136: } 10136: depth_t max_depth() { return my_max_depth; } 10136: void align_depth(depth_t base) { 10136: ((base <= my_max_depth)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",423,"base <= my_max_depth",0)); 10136: my_max_depth -= base; 10136: } 10136: template 10136: void work_balance(StartType &start, Range &range) { 10136: if( !range.is_divisible() || !self().max_depth() ) { 10136: start.run_body( range ); 10136: } 10136: else { 10136: internal::range_vector range_pool(range); 10136: do { 10136: range_pool.split_to_fill(self().max_depth()); 10136: if( self().check_for_demand( start ) ) { 10136: if( range_pool.size() > 1 ) { 10136: start.offer_work( range_pool.front(), range_pool.front_depth() ); 10136: range_pool.pop_front(); 10136: continue; 10136: } 10136: if( range_pool.is_divisible(self().max_depth()) ) 10136: continue; 10136: } 10136: start.run_body( range_pool.back() ); 10136: range_pool.pop_back(); 10136: } while( !range_pool.empty() && !start.is_cancelled() ); 10136: } 10136: } 10136: bool check_for_demand( task &t ) { 10136: if( pass == my_delay ) { 10136: if( self().my_divisor > 1 ) 10136: return true; 10136: else if( self().my_divisor && my_max_depth ) { 10136: self().my_divisor = 0; 10136: return true; 10136: } 10136: else if( flag_task::is_peer_stolen(t) ) { 10136: my_max_depth += 1; 10136: return true; 10136: } 10136: } else if( begin == my_delay ) { 10136: 10136: my_delay = pass; 10136: # 476 "../../include/tbb/partitioner.h" 10136: } 10136: return false; 10136: } 10136: }; 10136: 10136: class auto_partition_type: public balancing_partition_type > { 10136: public: 10136: auto_partition_type( const auto_partitioner& ) 10136: : balancing_partition_type >() { 10136: my_divisor *= 2; 10136: } 10136: auto_partition_type( auto_partition_type& src, split) 10136: : balancing_partition_type >(src, split()) {} 10136: bool is_divisible() { 10136: if( my_divisor > 1 ) return true; 10136: if( my_divisor && my_max_depth ) { 10136: 10136: my_max_depth--; 10136: my_divisor = 0; 10136: return true; 10136: } else return false; 10136: } 10136: bool check_for_demand(task &t) { 10136: if( flag_task::is_peer_stolen(t) ) { 10136: my_max_depth += 1; 10136: return true; 10136: } else return false; 10136: } 10136: }; 10136: 10136: class simple_partition_type: public partition_type_base { 10136: public: 10136: simple_partition_type( const simple_partitioner& ) {} 10136: simple_partition_type( const simple_partition_type&, split ) {} 10136: 10136: template 10136: void execute(StartType &start, Range &range) { 10136: split_type split_obj = split(); 10136: while( range.is_divisible() ) 10136: start.offer_work( split_obj ); 10136: start.run_body( range ); 10136: } 10136: }; 10136: 10136: class static_partition_type : public unbalancing_partition_type > { 10136: public: 10136: typedef proportional_split split_type; 10136: static_partition_type( const static_partitioner& ) 10136: : unbalancing_partition_type >() {} 10136: static_partition_type( static_partition_type& p, split ) 10136: : unbalancing_partition_type >(p, split()) {} 10136: static_partition_type( static_partition_type& p, const proportional_split& split_obj ) 10136: : unbalancing_partition_type >(p, split_obj) {} 10136: }; 10136: 10136: class affinity_partition_type : public balancing_partition_type > { 10136: static const unsigned factor_power = 4; 10136: tbb::internal::affinity_id* my_array; 10136: public: 10136: static const unsigned factor = 1 << factor_power; 10136: typedef proportional_split split_type; 10136: affinity_partition_type( tbb::internal::affinity_partitioner_base_v3& ap ) 10136: : balancing_partition_type >() { 10136: (((factor&(factor-1))==0)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",539,"(factor&(factor-1))==0","factor must be power of two")); 10136: ap.resize(factor); 10136: my_array = ap.my_array; 10136: my_max_depth = factor_power + 1; 10136: ((my_max_depth < 8)?((void)0) : tbb::assertion_failure("../../include/tbb/partitioner.h",543,"my_max_depth < 8",0)); 10136: } 10136: affinity_partition_type(affinity_partition_type& p, split) 10136: : balancing_partition_type >(p, split()) 10136: , my_array(p.my_array) {} 10136: affinity_partition_type(affinity_partition_type& p, const proportional_split& split_obj) 10136: : balancing_partition_type >(p, split_obj) 10136: , my_array(p.my_array) {} 10136: void set_affinity( task &t ) { 10136: if( my_divisor ) { 10136: if( !my_array[my_head] ) 10136: 10136: t.set_affinity( affinity_id(my_head / factor + 1) ); 10136: else 10136: t.set_affinity( my_array[my_head] ); 10136: } 10136: } 10136: void note_affinity( task::affinity_id id ) { 10136: if( my_divisor ) 10136: my_array[my_head] = id; 10136: } 10136: }; 10136: 10136: 10136: class old_auto_partition_type: public tbb::internal::partition_type_base { 10136: size_t num_chunks; 10136: static const size_t VICTIM_CHUNKS = 4; 10136: public: 10136: bool should_execute_range(const task &t) { 10136: if( num_chunks friend class serial::interface9::start_for; 10136: template friend class interface9::internal::start_for; 10136: template friend class interface9::internal::start_reduce; 10136: template friend class internal::start_scan; 10136: 10136: class partition_type: public internal::partition_type_base { 10136: public: 10136: bool should_execute_range(const task& ) {return false;} 10136: partition_type( const simple_partitioner& ) {} 10136: partition_type( const partition_type&, split ) {} 10136: }; 10136: 10136: typedef interface9::internal::simple_partition_type task_partition_type; 10136: 10136: 10136: typedef interface9::internal::simple_partition_type::split_type split_type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: class auto_partitioner { 10136: public: 10136: auto_partitioner() {} 10136: 10136: private: 10136: template friend class serial::interface9::start_for; 10136: template friend class interface9::internal::start_for; 10136: template friend class interface9::internal::start_reduce; 10136: template friend class internal::start_scan; 10136: 10136: typedef interface9::internal::old_auto_partition_type partition_type; 10136: 10136: typedef interface9::internal::auto_partition_type task_partition_type; 10136: 10136: 10136: typedef interface9::internal::auto_partition_type::split_type split_type; 10136: }; 10136: 10136: 10136: class static_partitioner { 10136: public: 10136: static_partitioner() {} 10136: private: 10136: template friend class serial::interface9::start_for; 10136: template friend class interface9::internal::start_for; 10136: template friend class interface9::internal::start_reduce; 10136: template friend class internal::start_scan; 10136: 10136: typedef interface9::internal::old_auto_partition_type partition_type; 10136: 10136: typedef interface9::internal::static_partition_type task_partition_type; 10136: 10136: 10136: typedef interface9::internal::static_partition_type::split_type split_type; 10136: }; 10136: 10136: 10136: class affinity_partitioner: internal::affinity_partitioner_base_v3 { 10136: public: 10136: affinity_partitioner() {} 10136: 10136: private: 10136: template friend class serial::interface9::start_for; 10136: template friend class interface9::internal::start_for; 10136: template friend class interface9::internal::start_reduce; 10136: template friend class internal::start_scan; 10136: 10136: typedef interface9::internal::old_auto_partition_type partition_type; 10136: 10136: typedef interface9::internal::affinity_partition_type task_partition_type; 10136: 10136: 10136: typedef interface9::internal::affinity_partition_type::split_type split_type; 10136: }; 10136: 10136: } 10136: # 27 "../../include/tbb/parallel_for.h" 2 10136: # 1 "../../include/tbb/blocked_range.h" 1 10136: # 28 "../../include/tbb/parallel_for.h" 2 10136: # 1 "../../include/tbb/tbb_exception.h" 1 10136: # 29 "../../include/tbb/parallel_for.h" 2 10136: 10136: namespace tbb { 10136: 10136: namespace interface9 { 10136: 10136: namespace internal { 10136: 10136: 10136: void* allocate_sibling(task* start_for_task, size_t bytes); 10136: 10136: 10136: 10136: template 10136: class start_for: public task { 10136: Range my_range; 10136: const Body my_body; 10136: typename Partitioner::task_partition_type my_partition; 10136: task* execute() override; 10136: 10136: 10136: void note_affinity( affinity_id id ) override { 10136: my_partition.note_affinity( id ); 10136: } 10136: 10136: public: 10136: 10136: start_for( const Range& range, const Body& body, Partitioner& partitioner ) : 10136: my_range(range), 10136: my_body(body), 10136: my_partition(partitioner) 10136: { 10136: } 10136: 10136: 10136: start_for( start_for& parent_, typename Partitioner::split_type& split_obj) : 10136: my_range(parent_.my_range, split_obj), 10136: my_body(parent_.my_body), 10136: my_partition(parent_.my_partition, split_obj) 10136: { 10136: my_partition.set_affinity(*this); 10136: } 10136: 10136: 10136: start_for( start_for& parent_, const Range& r, depth_t d ) : 10136: my_range(r), 10136: my_body(parent_.my_body), 10136: my_partition(parent_.my_partition, split()) 10136: { 10136: my_partition.set_affinity(*this); 10136: my_partition.align_depth( d ); 10136: } 10136: static void run( const Range& range, const Body& body, Partitioner& partitioner ) { 10136: if( !range.empty() ) { 10136: 10136: 10136: 10136: 10136: 10136: task_group_context context; 10136: start_for& a = *new(task::allocate_root(context)) start_for(range,body,partitioner); 10136: 10136: task::spawn_root_and_wait(a); 10136: } 10136: } 10136: 10136: static void run( const Range& range, const Body& body, Partitioner& partitioner, task_group_context& context ) { 10136: if( !range.empty() ) { 10136: start_for& a = *new(task::allocate_root(context)) start_for(range,body,partitioner); 10136: task::spawn_root_and_wait(a); 10136: } 10136: } 10136: 10136: 10136: void run_body( Range &r ) { my_body( r ); } 10136: 10136: 10136: void offer_work(typename Partitioner::split_type& split_obj) { 10136: spawn( *new( allocate_sibling(static_cast(this), sizeof(start_for)) ) start_for(*this, split_obj) ); 10136: } 10136: 10136: void offer_work(const Range& r, depth_t d = 0) { 10136: spawn( *new( allocate_sibling(static_cast(this), sizeof(start_for)) ) start_for(*this, r, d) ); 10136: } 10136: }; 10136: 10136: 10136: 10136: inline void* allocate_sibling(task* start_for_task, size_t bytes) { 10136: task* parent_ptr = new( start_for_task->allocate_continuation() ) flag_task(); 10136: start_for_task->set_parent(parent_ptr); 10136: parent_ptr->set_ref_count(2); 10136: return &parent_ptr->allocate_child().allocate(bytes); 10136: } 10136: 10136: 10136: template 10136: task* start_for::execute() { 10136: my_partition.check_being_stolen( *this ); 10136: my_partition.execute(*this, my_range); 10136: return 10136: # 128 "../../include/tbb/parallel_for.h" 3 4 10136: __null 10136: # 128 "../../include/tbb/parallel_for.h" 10136: ; 10136: } 10136: } 10136: 10136: } 10136: 10136: 10136: namespace internal { 10136: using interface9::internal::start_for; 10136: 10136: 10136: template 10136: class parallel_for_body : internal::no_assign { 10136: const Function &my_func; 10136: const Index my_begin; 10136: const Index my_step; 10136: public: 10136: parallel_for_body( const Function& _func, Index& _begin, Index& _step ) 10136: : my_func(_func), my_begin(_begin), my_step(_step) {} 10136: 10136: void operator()( const tbb::blocked_range& r ) const { 10136: 10136: Index b = r.begin(); 10136: Index e = r.end(); 10136: Index ms = my_step; 10136: Index k = my_begin + b*ms; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: for ( Index i = b; i < e; ++i, k += ms ) { 10136: my_func( k ); 10136: } 10136: } 10136: }; 10136: } 10136: # 184 "../../include/tbb/parallel_for.h" 10136: template 10136: void parallel_for( const Range& range, const Body& body ) { 10136: internal::start_for::run(range,body,tbb::auto_partitioner()); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, const simple_partitioner& partitioner ) { 10136: internal::start_for::run(range,body,partitioner); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, const auto_partitioner& partitioner ) { 10136: internal::start_for::run(range,body,partitioner); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, const static_partitioner& partitioner ) { 10136: internal::start_for::run(range,body,partitioner); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, affinity_partitioner& partitioner ) { 10136: internal::start_for::run(range,body,partitioner); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, task_group_context& context ) { 10136: internal::start_for::run(range, body, tbb::auto_partitioner(), context); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, const simple_partitioner& partitioner, task_group_context& context ) { 10136: internal::start_for::run(range, body, partitioner, context); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, const auto_partitioner& partitioner, task_group_context& context ) { 10136: internal::start_for::run(range, body, partitioner, context); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, const static_partitioner& partitioner, task_group_context& context ) { 10136: internal::start_for::run(range, body, partitioner, context); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for( const Range& range, const Body& body, affinity_partitioner& partitioner, task_group_context& context ) { 10136: internal::start_for::run(range,body,partitioner, context); 10136: } 10136: 10136: 10136: 10136: namespace strict_ppl { 10136: 10136: 10136: 10136: template 10136: void parallel_for_impl(Index first, Index last, Index step, const Function& f, Partitioner& partitioner) { 10136: if (step <= 0 ) 10136: internal::throw_exception(internal::eid_nonpositive_step); 10136: else if (last > first) { 10136: 10136: Index end = (last - first - Index(1)) / step + Index(1); 10136: tbb::blocked_range range(static_cast(0), end); 10136: internal::parallel_for_body body(f, first, step); 10136: tbb::parallel_for(range, body, partitioner); 10136: } 10136: } 10136: 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f) { 10136: parallel_for_impl(first, last, step, f, auto_partitioner()); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, const simple_partitioner& partitioner) { 10136: parallel_for_impl(first, last, step, f, partitioner); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, const auto_partitioner& partitioner) { 10136: parallel_for_impl(first, last, step, f, partitioner); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, const static_partitioner& partitioner) { 10136: parallel_for_impl(first, last, step, f, partitioner); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, affinity_partitioner& partitioner) { 10136: parallel_for_impl(first, last, step, f, partitioner); 10136: } 10136: 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f) { 10136: parallel_for_impl(first, last, static_cast(1), f, auto_partitioner()); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, const simple_partitioner& partitioner) { 10136: parallel_for_impl(first, last, static_cast(1), f, partitioner); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, const auto_partitioner& partitioner) { 10136: parallel_for_impl(first, last, static_cast(1), f, partitioner); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, const static_partitioner& partitioner) { 10136: parallel_for_impl(first, last, static_cast(1), f, partitioner); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, affinity_partitioner& partitioner) { 10136: parallel_for_impl(first, last, static_cast(1), f, partitioner); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for_impl(Index first, Index last, Index step, const Function& f, Partitioner& partitioner, tbb::task_group_context &context) { 10136: if (step <= 0 ) 10136: internal::throw_exception(internal::eid_nonpositive_step); 10136: else if (last > first) { 10136: 10136: Index end = (last - first - Index(1)) / step + Index(1); 10136: tbb::blocked_range range(static_cast(0), end); 10136: internal::parallel_for_body body(f, first, step); 10136: tbb::parallel_for(range, body, partitioner, context); 10136: } 10136: } 10136: 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, step, f, auto_partitioner(), context); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, const simple_partitioner& partitioner, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, step, f, partitioner, context); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, const auto_partitioner& partitioner, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, step, f, partitioner, context); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, const static_partitioner& partitioner, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, step, f, partitioner, context); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, Index step, const Function& f, affinity_partitioner& partitioner, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, step, f, partitioner, context); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, static_cast(1), f, auto_partitioner(), context); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, const simple_partitioner& partitioner, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, static_cast(1), f, partitioner, context); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, const auto_partitioner& partitioner, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, static_cast(1), f, partitioner, context); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, const static_partitioner& partitioner, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, static_cast(1), f, partitioner, context); 10136: } 10136: 10136: template 10136: void parallel_for(Index first, Index last, const Function& f, affinity_partitioner& partitioner, tbb::task_group_context &context) { 10136: parallel_for_impl(first, last, static_cast(1), f, partitioner, context); 10136: } 10136: 10136: 10136: 10136: 10136: } 10136: 10136: using strict_ppl::parallel_for; 10136: 10136: } 10136: # 34 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/parallel_reduce.h" 1 10136: # 30 "../../include/tbb/parallel_reduce.h" 10136: namespace tbb { 10136: 10136: namespace interface9 { 10136: 10136: namespace internal { 10136: 10136: using namespace tbb::internal; 10136: 10136: 10136: enum { 10136: root_task, left_child, right_child 10136: }; 10136: 10136: 10136: typedef char reduction_context; 10136: 10136: 10136: 10136: template 10136: class finish_reduce: public flag_task { 10136: 10136: bool has_right_zombie; 10136: const reduction_context my_context; 10136: Body* my_body; 10136: aligned_space zombie_space; 10136: finish_reduce( reduction_context context_ ) : 10136: has_right_zombie(false), 10136: my_context(context_), 10136: my_body( 10136: # 58 "../../include/tbb/parallel_reduce.h" 3 4 10136: __null 10136: # 58 "../../include/tbb/parallel_reduce.h" 10136: ) 10136: { 10136: } 10136: ~finish_reduce() { 10136: if( has_right_zombie ) 10136: zombie_space.begin()->~Body(); 10136: } 10136: task* execute() override { 10136: if( has_right_zombie ) { 10136: 10136: Body* s = zombie_space.begin(); 10136: my_body->join( *s ); 10136: 10136: } 10136: if( my_context==left_child ) 10136: itt_store_word_with_release( static_cast(parent())->my_body, my_body ); 10136: return 10136: # 74 "../../include/tbb/parallel_reduce.h" 3 4 10136: __null 10136: # 74 "../../include/tbb/parallel_reduce.h" 10136: ; 10136: } 10136: template 10136: friend class start_reduce; 10136: }; 10136: 10136: 10136: void allocate_sibling(task* start_reduce_task, task *tasks[], size_t start_bytes, size_t finish_bytes); 10136: 10136: 10136: 10136: template 10136: class start_reduce: public task { 10136: typedef finish_reduce finish_type; 10136: Body* my_body; 10136: Range my_range; 10136: typename Partitioner::task_partition_type my_partition; 10136: reduction_context my_context; 10136: task* execute() override; 10136: 10136: void note_affinity( affinity_id id ) override { 10136: my_partition.note_affinity( id ); 10136: } 10136: template 10136: friend class finish_reduce; 10136: 10136: public: 10136: 10136: start_reduce( const Range& range, Body* body, Partitioner& partitioner ) : 10136: my_body(body), 10136: my_range(range), 10136: my_partition(partitioner), 10136: my_context(root_task) 10136: { 10136: } 10136: 10136: 10136: start_reduce( start_reduce& parent_, typename Partitioner::split_type& split_obj ) : 10136: my_body(parent_.my_body), 10136: my_range(parent_.my_range, split_obj), 10136: my_partition(parent_.my_partition, split_obj), 10136: my_context(right_child) 10136: { 10136: my_partition.set_affinity(*this); 10136: parent_.my_context = left_child; 10136: } 10136: 10136: 10136: start_reduce( start_reduce& parent_, const Range& r, depth_t d ) : 10136: my_body(parent_.my_body), 10136: my_range(r), 10136: my_partition(parent_.my_partition, split()), 10136: my_context(right_child) 10136: { 10136: my_partition.set_affinity(*this); 10136: my_partition.align_depth( d ); 10136: parent_.my_context = left_child; 10136: } 10136: static void run( const Range& range, Body& body, Partitioner& partitioner ) { 10136: if( !range.empty() ) { 10136: 10136: 10136: 10136: 10136: 10136: task_group_context context; 10136: task::spawn_root_and_wait( *new(task::allocate_root(context)) start_reduce(range,&body,partitioner) ); 10136: 10136: } 10136: } 10136: 10136: static void run( const Range& range, Body& body, Partitioner& partitioner, task_group_context& context ) { 10136: if( !range.empty() ) 10136: task::spawn_root_and_wait( *new(task::allocate_root(context)) start_reduce(range,&body,partitioner) ); 10136: } 10136: 10136: 10136: void run_body( Range &r ) { (*my_body)( r ); } 10136: 10136: 10136: 10136: void offer_work(typename Partitioner::split_type& split_obj) { 10136: task *tasks[2]; 10136: allocate_sibling(static_cast(this), tasks, sizeof(start_reduce), sizeof(finish_type)); 10136: new((void*)tasks[0]) finish_type(my_context); 10136: new((void*)tasks[1]) start_reduce(*this, split_obj); 10136: spawn(*tasks[1]); 10136: } 10136: 10136: void offer_work(const Range& r, depth_t d = 0) { 10136: task *tasks[2]; 10136: allocate_sibling(static_cast(this), tasks, sizeof(start_reduce), sizeof(finish_type)); 10136: new((void*)tasks[0]) finish_type(my_context); 10136: new((void*)tasks[1]) start_reduce(*this, r, d); 10136: spawn(*tasks[1]); 10136: } 10136: }; 10136: 10136: 10136: 10136: inline void allocate_sibling(task* start_reduce_task, task *tasks[], size_t start_bytes, size_t finish_bytes) { 10136: tasks[0] = &start_reduce_task->allocate_continuation().allocate(finish_bytes); 10136: start_reduce_task->set_parent(tasks[0]); 10136: tasks[0]->set_ref_count(2); 10136: tasks[1] = &tasks[0]->allocate_child().allocate(start_bytes); 10136: } 10136: 10136: template 10136: task* start_reduce::execute() { 10136: my_partition.check_being_stolen( *this ); 10136: if( my_context==right_child ) { 10136: finish_type* parent_ptr = static_cast(parent()); 10136: if( !itt_load_word_with_acquire(parent_ptr->my_body) ) { 10136: my_body = new( parent_ptr->zombie_space.begin() ) Body(*my_body,split()); 10136: parent_ptr->has_right_zombie = true; 10136: } 10136: } else ((my_context==root_task)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_reduce.h",190,"my_context==root_task", 10136: # 190 "../../include/tbb/parallel_reduce.h" 3 4 10136: __null 10136: # 190 "../../include/tbb/parallel_reduce.h" 10136: )); 10136: my_partition.execute(*this, my_range); 10136: if( my_context==left_child ) { 10136: finish_type* parent_ptr = static_cast(parent()); 10136: ((my_body!=parent_ptr->zombie_space.begin())?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_reduce.h",194,"my_body!=parent_ptr->zombie_space.begin()", 10136: # 194 "../../include/tbb/parallel_reduce.h" 3 4 10136: __null 10136: # 194 "../../include/tbb/parallel_reduce.h" 10136: )); 10136: itt_store_word_with_release(parent_ptr->my_body, my_body ); 10136: } 10136: return 10136: # 197 "../../include/tbb/parallel_reduce.h" 3 4 10136: __null 10136: # 197 "../../include/tbb/parallel_reduce.h" 10136: ; 10136: } 10136: 10136: 10136: 10136: template 10136: class finish_deterministic_reduce: public task { 10136: Body &my_left_body; 10136: Body my_right_body; 10136: 10136: finish_deterministic_reduce( Body &body ) : 10136: my_left_body( body ), 10136: my_right_body( body, split() ) 10136: { 10136: } 10136: task* execute() override { 10136: my_left_body.join( my_right_body ); 10136: return 10136: # 214 "../../include/tbb/parallel_reduce.h" 3 4 10136: __null 10136: # 214 "../../include/tbb/parallel_reduce.h" 10136: ; 10136: } 10136: template 10136: friend class start_deterministic_reduce; 10136: }; 10136: 10136: 10136: 10136: template 10136: class start_deterministic_reduce: public task { 10136: typedef finish_deterministic_reduce finish_type; 10136: Body &my_body; 10136: Range my_range; 10136: task* execute() override; 10136: 10136: 10136: start_deterministic_reduce( const Range& range, Body& body ) : 10136: my_body( body ), 10136: my_range( range ) 10136: { 10136: } 10136: 10136: 10136: start_deterministic_reduce( start_deterministic_reduce& parent_, finish_type& c ) : 10136: my_body( c.my_right_body ), 10136: my_range( parent_.my_range, split() ) 10136: { 10136: } 10136: 10136: public: 10136: static void run( const Range& range, Body& body ) { 10136: if( !range.empty() ) { 10136: 10136: 10136: 10136: 10136: 10136: task_group_context context; 10136: task::spawn_root_and_wait( *new(task::allocate_root(context)) start_deterministic_reduce(range,body) ); 10136: 10136: } 10136: } 10136: 10136: static void run( const Range& range, Body& body, task_group_context& context ) { 10136: if( !range.empty() ) 10136: task::spawn_root_and_wait( *new(task::allocate_root(context)) start_deterministic_reduce(range,body) ); 10136: } 10136: 10136: }; 10136: 10136: template 10136: task* start_deterministic_reduce::execute() { 10136: if( !my_range.is_divisible() ) { 10136: my_body( my_range ); 10136: return 10136: # 268 "../../include/tbb/parallel_reduce.h" 3 4 10136: __null 10136: # 268 "../../include/tbb/parallel_reduce.h" 10136: ; 10136: } else { 10136: finish_type& c = *new( allocate_continuation() ) finish_type( my_body ); 10136: recycle_as_child_of(c); 10136: c.set_ref_count(2); 10136: start_deterministic_reduce& b = *new( c.allocate_child() ) start_deterministic_reduce( *this, c ); 10136: task::spawn(b); 10136: return this; 10136: } 10136: } 10136: } 10136: 10136: } 10136: 10136: 10136: namespace internal { 10136: using interface9::internal::start_reduce; 10136: using interface9::internal::start_deterministic_reduce; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class lambda_reduce_body { 10136: 10136: 10136: 10136: 10136: const Value& identity_element; 10136: const RealBody& my_real_body; 10136: const Reduction& my_reduction; 10136: Value my_value; 10136: lambda_reduce_body& operator= ( const lambda_reduce_body& other ); 10136: public: 10136: lambda_reduce_body( const Value& identity, const RealBody& body, const Reduction& reduction ) 10136: : identity_element(identity) 10136: , my_real_body(body) 10136: , my_reduction(reduction) 10136: , my_value(identity) 10136: { } 10136: lambda_reduce_body( const lambda_reduce_body& other ) 10136: : identity_element(other.identity_element) 10136: , my_real_body(other.my_real_body) 10136: , my_reduction(other.my_reduction) 10136: , my_value(other.my_value) 10136: { } 10136: lambda_reduce_body( lambda_reduce_body& other, tbb::split ) 10136: : identity_element(other.identity_element) 10136: , my_real_body(other.my_real_body) 10136: , my_reduction(other.my_reduction) 10136: , my_value(other.identity_element) 10136: { } 10136: void operator()(Range& range) { 10136: my_value = my_real_body(range, const_cast(my_value)); 10136: } 10136: void join( lambda_reduce_body& rhs ) { 10136: my_value = my_reduction(const_cast(my_value), const_cast(rhs.my_value)); 10136: } 10136: Value result() const { 10136: return my_value; 10136: } 10136: }; 10136: 10136: } 10136: # 358 "../../include/tbb/parallel_reduce.h" 10136: template 10136: void parallel_reduce( const Range& range, Body& body ) { 10136: internal::start_reduce::run( range, body, tbb::auto_partitioner() ); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_reduce( const Range& range, Body& body, const simple_partitioner& partitioner ) { 10136: internal::start_reduce::run( range, body, partitioner ); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_reduce( const Range& range, Body& body, const auto_partitioner& partitioner ) { 10136: internal::start_reduce::run( range, body, partitioner ); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_reduce( const Range& range, Body& body, const static_partitioner& partitioner ) { 10136: internal::start_reduce::run( range, body, partitioner ); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_reduce( const Range& range, Body& body, affinity_partitioner& partitioner ) { 10136: internal::start_reduce::run( range, body, partitioner ); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void parallel_reduce( const Range& range, Body& body, const simple_partitioner& partitioner, task_group_context& context ) { 10136: internal::start_reduce::run( range, body, partitioner, context ); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_reduce( const Range& range, Body& body, const auto_partitioner& partitioner, task_group_context& context ) { 10136: internal::start_reduce::run( range, body, partitioner, context ); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_reduce( const Range& range, Body& body, const static_partitioner& partitioner, task_group_context& context ) { 10136: internal::start_reduce::run( range, body, partitioner, context ); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_reduce( const Range& range, Body& body, affinity_partitioner& partitioner, task_group_context& context ) { 10136: internal::start_reduce::run( range, body, partitioner, context ); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,const tbb::auto_partitioner> 10136: ::run(range, body, tbb::auto_partitioner() ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: const simple_partitioner& partitioner ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,const simple_partitioner> 10136: ::run(range, body, partitioner ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: const auto_partitioner& partitioner ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,const auto_partitioner> 10136: ::run( range, body, partitioner ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: const static_partitioner& partitioner ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,const static_partitioner> 10136: ::run( range, body, partitioner ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: affinity_partitioner& partitioner ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,affinity_partitioner> 10136: ::run( range, body, partitioner ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: const simple_partitioner& partitioner, task_group_context& context ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,const simple_partitioner> 10136: ::run( range, body, partitioner, context ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: const auto_partitioner& partitioner, task_group_context& context ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,const auto_partitioner> 10136: ::run( range, body, partitioner, context ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: const static_partitioner& partitioner, task_group_context& context ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,const static_partitioner> 10136: ::run( range, body, partitioner, context ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: template 10136: Value parallel_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: affinity_partitioner& partitioner, task_group_context& context ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_reduce,affinity_partitioner> 10136: ::run( range, body, partitioner, context ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void parallel_deterministic_reduce( const Range& range, Body& body ) { 10136: internal::start_deterministic_reduce::run( range, body ); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void parallel_deterministic_reduce( const Range& range, Body& body, task_group_context& context ) { 10136: internal::start_deterministic_reduce::run( range, body, context ); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: Value parallel_deterministic_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_deterministic_reduce > 10136: ::run(range, body); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: Value parallel_deterministic_reduce( const Range& range, const Value& identity, const RealBody& real_body, const Reduction& reduction, 10136: task_group_context& context ) { 10136: internal::lambda_reduce_body body(identity, real_body, reduction); 10136: internal::start_deterministic_reduce > 10136: ::run( range, body, context ); 10136: return body.result(); 10136: } 10136: 10136: 10136: 10136: } 10136: # 35 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/parallel_do.h" 1 10136: # 24 "../../include/tbb/parallel_do.h" 10136: # 1 "../../include/tbb/internal/_range_iterator.h" 1 10136: # 24 "../../include/tbb/internal/_range_iterator.h" 10136: # 1 "../../include/tbb/internal/../tbb_stddef.h" 1 10136: # 25 "../../include/tbb/internal/_range_iterator.h" 2 10136: 10136: 10136: # 1 "/usr/include/c++/8/iterator" 1 3 10136: # 58 "/usr/include/c++/8/iterator" 3 10136: 10136: # 59 "/usr/include/c++/8/iterator" 3 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/ostream" 1 3 10136: # 36 "/usr/include/c++/8/ostream" 3 10136: 10136: # 37 "/usr/include/c++/8/ostream" 3 10136: 10136: # 1 "/usr/include/c++/8/ios" 1 3 10136: # 36 "/usr/include/c++/8/ios" 3 10136: 10136: # 37 "/usr/include/c++/8/ios" 3 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/ios_base.h" 1 3 10136: # 37 "/usr/include/c++/8/bits/ios_base.h" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/ios_base.h" 3 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/locale_classes.h" 1 3 10136: # 37 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 43 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 62 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: class locale 10136: { 10136: public: 10136: 10136: 10136: typedef int category; 10136: 10136: 10136: class facet; 10136: class id; 10136: class _Impl; 10136: 10136: friend class facet; 10136: friend class _Impl; 10136: 10136: template 10136: friend bool 10136: has_facet(const locale&) throw(); 10136: 10136: template 10136: friend const _Facet& 10136: use_facet(const locale&); 10136: 10136: template 10136: friend struct __use_cache; 10136: # 98 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: static const category none = 0; 10136: static const category ctype = 1L << 0; 10136: static const category numeric = 1L << 1; 10136: static const category collate = 1L << 2; 10136: static const category time = 1L << 3; 10136: static const category monetary = 1L << 4; 10136: static const category messages = 1L << 5; 10136: static const category all = (ctype | numeric | collate | 10136: time | monetary | messages); 10136: # 117 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: locale() throw(); 10136: # 126 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: locale(const locale& __other) throw(); 10136: # 136 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: explicit 10136: locale(const char* __s); 10136: # 151 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: locale(const locale& __base, const char* __s, category __cat); 10136: # 162 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: explicit 10136: locale(const std::string& __s) : locale(__s.c_str()) { } 10136: # 177 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: locale(const locale& __base, const std::string& __s, category __cat) 10136: : locale(__base, __s.c_str(), __cat) { } 10136: # 192 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: locale(const locale& __base, const locale& __add, category __cat); 10136: # 205 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: template 10136: locale(const locale& __other, _Facet* __f); 10136: 10136: 10136: ~locale() throw(); 10136: # 219 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: const locale& 10136: operator=(const locale& __other) throw(); 10136: # 234 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: template 10136: locale 10136: combine(const locale& __other) const; 10136: 10136: 10136: 10136: 10136: 10136: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: string 10136: name() const; 10136: # 254 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: bool 10136: operator==(const locale& __other) const throw(); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: bool 10136: operator!=(const locale& __other) const throw() 10136: { return !(this->operator==(__other)); } 10136: # 282 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: template 10136: bool 10136: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, 10136: const basic_string<_Char, _Traits, _Alloc>& __s2) const; 10136: # 298 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: static locale 10136: global(const locale& __loc); 10136: 10136: 10136: 10136: 10136: static const locale& 10136: classic(); 10136: 10136: private: 10136: 10136: _Impl* _M_impl; 10136: 10136: 10136: static _Impl* _S_classic; 10136: 10136: 10136: static _Impl* _S_global; 10136: 10136: 10136: 10136: 10136: 10136: static const char* const* const _S_categories; 10136: # 333 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: enum { _S_categories_size = 6 + 6 }; 10136: 10136: 10136: static __gthread_once_t _S_once; 10136: 10136: 10136: explicit 10136: locale(_Impl*) throw(); 10136: 10136: static void 10136: _S_initialize(); 10136: 10136: static void 10136: _S_initialize_once() throw(); 10136: 10136: static category 10136: _S_normalize_category(category); 10136: 10136: void 10136: _M_coalesce(const locale& __base, const locale& __add, category __cat); 10136: 10136: 10136: static const id* const _S_twinned_facets[]; 10136: 10136: }; 10136: # 371 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: class locale::facet 10136: { 10136: private: 10136: friend class locale; 10136: friend class locale::_Impl; 10136: 10136: mutable _Atomic_word _M_refcount; 10136: 10136: 10136: static __c_locale _S_c_locale; 10136: 10136: 10136: static const char _S_c_name[2]; 10136: 10136: 10136: static __gthread_once_t _S_once; 10136: 10136: 10136: static void 10136: _S_initialize_once(); 10136: 10136: protected: 10136: # 402 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: explicit 10136: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) 10136: { } 10136: 10136: 10136: virtual 10136: ~facet(); 10136: 10136: static void 10136: _S_create_c_locale(__c_locale& __cloc, const char* __s, 10136: __c_locale __old = 0); 10136: 10136: static __c_locale 10136: _S_clone_c_locale(__c_locale& __cloc) throw(); 10136: 10136: static void 10136: _S_destroy_c_locale(__c_locale& __cloc); 10136: 10136: static __c_locale 10136: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); 10136: 10136: 10136: 10136: static __c_locale 10136: _S_get_c_locale(); 10136: 10136: __attribute__ ((__const__)) static const char* 10136: _S_get_c_name() throw(); 10136: # 438 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: facet(const facet&) = delete; 10136: 10136: facet& 10136: operator=(const facet&) = delete; 10136: 10136: 10136: private: 10136: void 10136: _M_add_reference() const throw() 10136: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 10136: 10136: void 10136: _M_remove_reference() const throw() 10136: { 10136: 10136: ; 10136: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 10136: { 10136: ; 10136: try 10136: { delete this; } 10136: catch(...) 10136: { } 10136: } 10136: } 10136: 10136: const facet* _M_sso_shim(const id*) const; 10136: const facet* _M_cow_shim(const id*) const; 10136: 10136: protected: 10136: class __shim; 10136: }; 10136: # 483 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: class locale::id 10136: { 10136: private: 10136: friend class locale; 10136: friend class locale::_Impl; 10136: 10136: template 10136: friend const _Facet& 10136: use_facet(const locale&); 10136: 10136: template 10136: friend bool 10136: has_facet(const locale&) throw(); 10136: 10136: 10136: 10136: 10136: mutable size_t _M_index; 10136: 10136: 10136: static _Atomic_word _S_refcount; 10136: 10136: void 10136: operator=(const id&); 10136: 10136: id(const id&); 10136: 10136: public: 10136: 10136: 10136: 10136: id() { } 10136: 10136: size_t 10136: _M_id() const throw(); 10136: }; 10136: 10136: 10136: 10136: class locale::_Impl 10136: { 10136: public: 10136: 10136: friend class locale; 10136: friend class locale::facet; 10136: 10136: template 10136: friend bool 10136: has_facet(const locale&) throw(); 10136: 10136: template 10136: friend const _Facet& 10136: use_facet(const locale&); 10136: 10136: template 10136: friend struct __use_cache; 10136: 10136: private: 10136: 10136: _Atomic_word _M_refcount; 10136: const facet** _M_facets; 10136: size_t _M_facets_size; 10136: const facet** _M_caches; 10136: char** _M_names; 10136: static const locale::id* const _S_id_ctype[]; 10136: static const locale::id* const _S_id_numeric[]; 10136: static const locale::id* const _S_id_collate[]; 10136: static const locale::id* const _S_id_time[]; 10136: static const locale::id* const _S_id_monetary[]; 10136: static const locale::id* const _S_id_messages[]; 10136: static const locale::id* const* const _S_facet_categories[]; 10136: 10136: void 10136: _M_add_reference() throw() 10136: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 10136: 10136: void 10136: _M_remove_reference() throw() 10136: { 10136: 10136: ; 10136: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 10136: { 10136: ; 10136: try 10136: { delete this; } 10136: catch(...) 10136: { } 10136: } 10136: } 10136: 10136: _Impl(const _Impl&, size_t); 10136: _Impl(const char*, size_t); 10136: _Impl(size_t) throw(); 10136: 10136: ~_Impl() throw(); 10136: 10136: _Impl(const _Impl&); 10136: 10136: void 10136: operator=(const _Impl&); 10136: 10136: bool 10136: _M_check_same_name() 10136: { 10136: bool __ret = true; 10136: if (_M_names[1]) 10136: 10136: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) 10136: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; 10136: return __ret; 10136: } 10136: 10136: void 10136: _M_replace_categories(const _Impl*, category); 10136: 10136: void 10136: _M_replace_category(const _Impl*, const locale::id* const*); 10136: 10136: void 10136: _M_replace_facet(const _Impl*, const locale::id*); 10136: 10136: void 10136: _M_install_facet(const locale::id*, const facet*); 10136: 10136: template 10136: void 10136: _M_init_facet(_Facet* __facet) 10136: { _M_install_facet(&_Facet::id, __facet); } 10136: 10136: template 10136: void 10136: _M_init_facet_unchecked(_Facet* __facet) 10136: { 10136: __facet->_M_add_reference(); 10136: _M_facets[_Facet::id._M_id()] = __facet; 10136: } 10136: 10136: void 10136: _M_install_cache(const facet*, size_t); 10136: 10136: void _M_init_extra(facet**); 10136: void _M_init_extra(void*, void*, const char*, const char*); 10136: }; 10136: # 641 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: template 10136: class __cxx11:: collate : public locale::facet 10136: { 10136: public: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef basic_string<_CharT> string_type; 10136: 10136: 10136: protected: 10136: 10136: 10136: __c_locale _M_c_locale_collate; 10136: 10136: public: 10136: 10136: static locale::id id; 10136: # 668 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: explicit 10136: collate(size_t __refs = 0) 10136: : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) 10136: { } 10136: # 682 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: explicit 10136: collate(__c_locale __cloc, size_t __refs = 0) 10136: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) 10136: { } 10136: # 699 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: int 10136: compare(const _CharT* __lo1, const _CharT* __hi1, 10136: const _CharT* __lo2, const _CharT* __hi2) const 10136: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } 10136: # 718 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: string_type 10136: transform(const _CharT* __lo, const _CharT* __hi) const 10136: { return this->do_transform(__lo, __hi); } 10136: # 732 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: long 10136: hash(const _CharT* __lo, const _CharT* __hi) const 10136: { return this->do_hash(__lo, __hi); } 10136: 10136: 10136: int 10136: _M_compare(const _CharT*, const _CharT*) const throw(); 10136: 10136: size_t 10136: _M_transform(_CharT*, const _CharT*, size_t) const throw(); 10136: 10136: protected: 10136: 10136: virtual 10136: ~collate() 10136: { _S_destroy_c_locale(_M_c_locale_collate); } 10136: # 761 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: virtual int 10136: do_compare(const _CharT* __lo1, const _CharT* __hi1, 10136: const _CharT* __lo2, const _CharT* __hi2) const; 10136: # 775 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: virtual string_type 10136: do_transform(const _CharT* __lo, const _CharT* __hi) const; 10136: # 788 "/usr/include/c++/8/bits/locale_classes.h" 3 10136: virtual long 10136: do_hash(const _CharT* __lo, const _CharT* __hi) const; 10136: }; 10136: 10136: template 10136: locale::id collate<_CharT>::id; 10136: 10136: 10136: template<> 10136: int 10136: collate::_M_compare(const char*, const char*) const throw(); 10136: 10136: template<> 10136: size_t 10136: collate::_M_transform(char*, const char*, size_t) const throw(); 10136: 10136: 10136: template<> 10136: int 10136: collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); 10136: 10136: template<> 10136: size_t 10136: collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); 10136: 10136: 10136: 10136: template 10136: class __cxx11:: collate_byname : public collate<_CharT> 10136: { 10136: public: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef basic_string<_CharT> string_type; 10136: 10136: 10136: explicit 10136: collate_byname(const char* __s, size_t __refs = 0) 10136: : collate<_CharT>(__refs) 10136: { 10136: if (__builtin_strcmp(__s, "C") != 0 10136: && __builtin_strcmp(__s, "POSIX") != 0) 10136: { 10136: this->_S_destroy_c_locale(this->_M_c_locale_collate); 10136: this->_S_create_c_locale(this->_M_c_locale_collate, __s); 10136: } 10136: } 10136: 10136: 10136: explicit 10136: collate_byname(const string& __s, size_t __refs = 0) 10136: : collate_byname(__s.c_str(), __refs) { } 10136: 10136: 10136: protected: 10136: virtual 10136: ~collate_byname() { } 10136: }; 10136: 10136: 10136: } 10136: 10136: # 1 "/usr/include/c++/8/bits/locale_classes.tcc" 1 3 10136: # 37 "/usr/include/c++/8/bits/locale_classes.tcc" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/locale_classes.tcc" 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: locale:: 10136: locale(const locale& __other, _Facet* __f) 10136: { 10136: _M_impl = new _Impl(*__other._M_impl, 1); 10136: 10136: try 10136: { _M_impl->_M_install_facet(&_Facet::id, __f); } 10136: catch(...) 10136: { 10136: _M_impl->_M_remove_reference(); 10136: throw; 10136: } 10136: delete [] _M_impl->_M_names[0]; 10136: _M_impl->_M_names[0] = 0; 10136: } 10136: 10136: template 10136: locale 10136: locale:: 10136: combine(const locale& __other) const 10136: { 10136: _Impl* __tmp = new _Impl(*_M_impl, 1); 10136: try 10136: { 10136: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); 10136: } 10136: catch(...) 10136: { 10136: __tmp->_M_remove_reference(); 10136: throw; 10136: } 10136: return locale(__tmp); 10136: } 10136: 10136: template 10136: bool 10136: locale:: 10136: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, 10136: const basic_string<_CharT, _Traits, _Alloc>& __s2) const 10136: { 10136: typedef std::collate<_CharT> __collate_type; 10136: const __collate_type& __collate = use_facet<__collate_type>(*this); 10136: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), 10136: __s2.data(), __s2.data() + __s2.length()) < 0); 10136: } 10136: # 102 "/usr/include/c++/8/bits/locale_classes.tcc" 3 10136: template 10136: bool 10136: has_facet(const locale& __loc) throw() 10136: { 10136: const size_t __i = _Facet::id._M_id(); 10136: const locale::facet** __facets = __loc._M_impl->_M_facets; 10136: return (__i < __loc._M_impl->_M_facets_size 10136: 10136: && dynamic_cast(__facets[__i])); 10136: 10136: 10136: 10136: } 10136: # 130 "/usr/include/c++/8/bits/locale_classes.tcc" 3 10136: template 10136: const _Facet& 10136: use_facet(const locale& __loc) 10136: { 10136: const size_t __i = _Facet::id._M_id(); 10136: const locale::facet** __facets = __loc._M_impl->_M_facets; 10136: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) 10136: __throw_bad_cast(); 10136: 10136: return dynamic_cast(*__facets[__i]); 10136: 10136: 10136: 10136: } 10136: 10136: 10136: 10136: template 10136: int 10136: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () 10136: { return 0; } 10136: 10136: 10136: template 10136: size_t 10136: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () 10136: { return 0; } 10136: 10136: template 10136: int 10136: collate<_CharT>:: 10136: do_compare(const _CharT* __lo1, const _CharT* __hi1, 10136: const _CharT* __lo2, const _CharT* __hi2) const 10136: { 10136: 10136: 10136: const string_type __one(__lo1, __hi1); 10136: const string_type __two(__lo2, __hi2); 10136: 10136: const _CharT* __p = __one.c_str(); 10136: const _CharT* __pend = __one.data() + __one.length(); 10136: const _CharT* __q = __two.c_str(); 10136: const _CharT* __qend = __two.data() + __two.length(); 10136: 10136: 10136: 10136: 10136: for (;;) 10136: { 10136: const int __res = _M_compare(__p, __q); 10136: if (__res) 10136: return __res; 10136: 10136: __p += char_traits<_CharT>::length(__p); 10136: __q += char_traits<_CharT>::length(__q); 10136: if (__p == __pend && __q == __qend) 10136: return 0; 10136: else if (__p == __pend) 10136: return -1; 10136: else if (__q == __qend) 10136: return 1; 10136: 10136: __p++; 10136: __q++; 10136: } 10136: } 10136: 10136: template 10136: typename collate<_CharT>::string_type 10136: collate<_CharT>:: 10136: do_transform(const _CharT* __lo, const _CharT* __hi) const 10136: { 10136: string_type __ret; 10136: 10136: 10136: const string_type __str(__lo, __hi); 10136: 10136: const _CharT* __p = __str.c_str(); 10136: const _CharT* __pend = __str.data() + __str.length(); 10136: 10136: size_t __len = (__hi - __lo) * 2; 10136: 10136: _CharT* __c = new _CharT[__len]; 10136: 10136: try 10136: { 10136: 10136: 10136: 10136: for (;;) 10136: { 10136: 10136: size_t __res = _M_transform(__c, __p, __len); 10136: 10136: 10136: if (__res >= __len) 10136: { 10136: __len = __res + 1; 10136: delete [] __c, __c = 0; 10136: __c = new _CharT[__len]; 10136: __res = _M_transform(__c, __p, __len); 10136: } 10136: 10136: __ret.append(__c, __res); 10136: __p += char_traits<_CharT>::length(__p); 10136: if (__p == __pend) 10136: break; 10136: 10136: __p++; 10136: __ret.push_back(_CharT()); 10136: } 10136: } 10136: catch(...) 10136: { 10136: delete [] __c; 10136: throw; 10136: } 10136: 10136: delete [] __c; 10136: 10136: return __ret; 10136: } 10136: 10136: template 10136: long 10136: collate<_CharT>:: 10136: do_hash(const _CharT* __lo, const _CharT* __hi) const 10136: { 10136: unsigned long __val = 0; 10136: for (; __lo < __hi; ++__lo) 10136: __val = 10136: *__lo + ((__val << 7) 10136: | (__val >> (__gnu_cxx::__numeric_traits:: 10136: __digits - 7))); 10136: return static_cast(__val); 10136: } 10136: 10136: 10136: 10136: 10136: extern template class collate; 10136: extern template class collate_byname; 10136: 10136: extern template 10136: const collate& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: 10136: extern template class collate; 10136: extern template class collate_byname; 10136: 10136: extern template 10136: const collate& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: 10136: 10136: 10136: } 10136: # 852 "/usr/include/c++/8/bits/locale_classes.h" 2 3 10136: # 42 "/usr/include/c++/8/bits/ios_base.h" 2 3 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/system_error" 1 3 10136: # 32 "/usr/include/c++/8/system_error" 3 10136: 10136: # 33 "/usr/include/c++/8/system_error" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/error_constants.h" 1 3 10136: # 34 "/usr/include/arm-linux-gnueabihf/c++/8/bits/error_constants.h" 3 10136: # 1 "/usr/include/c++/8/cerrno" 1 3 10136: # 39 "/usr/include/c++/8/cerrno" 3 10136: 10136: # 40 "/usr/include/c++/8/cerrno" 3 10136: # 35 "/usr/include/arm-linux-gnueabihf/c++/8/bits/error_constants.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: enum class errc 10136: { 10136: address_family_not_supported = 97, 10136: address_in_use = 98, 10136: address_not_available = 99, 10136: already_connected = 106, 10136: argument_list_too_long = 7, 10136: argument_out_of_domain = 33, 10136: bad_address = 14, 10136: bad_file_descriptor = 9, 10136: 10136: 10136: bad_message = 74, 10136: 10136: 10136: broken_pipe = 32, 10136: connection_aborted = 103, 10136: connection_already_in_progress = 114, 10136: connection_refused = 111, 10136: connection_reset = 104, 10136: cross_device_link = 18, 10136: destination_address_required = 89, 10136: device_or_resource_busy = 16, 10136: directory_not_empty = 39, 10136: executable_format_error = 8, 10136: file_exists = 17, 10136: file_too_large = 27, 10136: filename_too_long = 36, 10136: function_not_supported = 38, 10136: host_unreachable = 113, 10136: 10136: 10136: identifier_removed = 43, 10136: 10136: 10136: illegal_byte_sequence = 84, 10136: inappropriate_io_control_operation = 25, 10136: interrupted = 4, 10136: invalid_argument = 22, 10136: invalid_seek = 29, 10136: io_error = 5, 10136: is_a_directory = 21, 10136: message_size = 90, 10136: network_down = 100, 10136: network_reset = 102, 10136: network_unreachable = 101, 10136: no_buffer_space = 105, 10136: no_child_process = 10, 10136: 10136: 10136: no_link = 67, 10136: 10136: 10136: no_lock_available = 37, 10136: 10136: 10136: no_message_available = 61, 10136: 10136: 10136: no_message = 42, 10136: no_protocol_option = 92, 10136: no_space_on_device = 28, 10136: 10136: 10136: no_stream_resources = 63, 10136: 10136: 10136: no_such_device_or_address = 6, 10136: no_such_device = 19, 10136: no_such_file_or_directory = 2, 10136: no_such_process = 3, 10136: not_a_directory = 20, 10136: not_a_socket = 88, 10136: 10136: 10136: not_a_stream = 60, 10136: 10136: 10136: not_connected = 107, 10136: not_enough_memory = 12, 10136: 10136: 10136: not_supported = 95, 10136: 10136: 10136: 10136: operation_canceled = 125, 10136: 10136: 10136: operation_in_progress = 115, 10136: operation_not_permitted = 1, 10136: operation_not_supported = 95, 10136: operation_would_block = 11, 10136: 10136: 10136: owner_dead = 130, 10136: 10136: 10136: permission_denied = 13, 10136: 10136: 10136: protocol_error = 71, 10136: 10136: 10136: protocol_not_supported = 93, 10136: read_only_file_system = 30, 10136: resource_deadlock_would_occur = 35, 10136: resource_unavailable_try_again = 11, 10136: result_out_of_range = 34, 10136: 10136: 10136: state_not_recoverable = 131, 10136: 10136: 10136: 10136: stream_timeout = 62, 10136: 10136: 10136: 10136: text_file_busy = 26, 10136: 10136: 10136: timed_out = 110, 10136: too_many_files_open_in_system = 23, 10136: too_many_files_open = 24, 10136: too_many_links = 31, 10136: too_many_symbolic_link_levels = 40, 10136: 10136: 10136: value_too_large = 75, 10136: 10136: 10136: wrong_protocol_type = 91 10136: }; 10136: 10136: 10136: } 10136: # 40 "/usr/include/c++/8/system_error" 2 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: class error_code; 10136: class error_condition; 10136: class system_error; 10136: 10136: 10136: template 10136: struct is_error_code_enum : public false_type { }; 10136: 10136: 10136: template 10136: struct is_error_condition_enum : public false_type { }; 10136: 10136: template<> 10136: struct is_error_condition_enum 10136: : public true_type { }; 10136: # 71 "/usr/include/c++/8/system_error" 3 10136: inline namespace _V2 { 10136: 10136: 10136: class error_category 10136: { 10136: public: 10136: constexpr error_category() noexcept = default; 10136: 10136: virtual ~error_category(); 10136: 10136: error_category(const error_category&) = delete; 10136: error_category& operator=(const error_category&) = delete; 10136: 10136: virtual const char* 10136: name() const noexcept = 0; 10136: 10136: 10136: 10136: 10136: 10136: 10136: private: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: virtual __cow_string 10136: _M_message(int) const; 10136: 10136: public: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: virtual string 10136: message(int) const = 0; 10136: # 110 "/usr/include/c++/8/system_error" 3 10136: public: 10136: virtual error_condition 10136: default_error_condition(int __i) const noexcept; 10136: 10136: virtual bool 10136: equivalent(int __i, const error_condition& __cond) const noexcept; 10136: 10136: virtual bool 10136: equivalent(const error_code& __code, int __i) const noexcept; 10136: 10136: bool 10136: operator<(const error_category& __other) const noexcept 10136: { return less()(this, &__other); } 10136: 10136: bool 10136: operator==(const error_category& __other) const noexcept 10136: { return this == &__other; } 10136: 10136: bool 10136: operator!=(const error_category& __other) const noexcept 10136: { return this != &__other; } 10136: }; 10136: 10136: 10136: __attribute__ ((__const__)) const error_category& system_category() noexcept; 10136: __attribute__ ((__const__)) const error_category& generic_category() noexcept; 10136: 10136: } 10136: 10136: error_code make_error_code(errc) noexcept; 10136: 10136: template 10136: struct hash; 10136: 10136: 10136: 10136: struct error_code 10136: { 10136: error_code() noexcept 10136: : _M_value(0), _M_cat(&system_category()) { } 10136: 10136: error_code(int __v, const error_category& __cat) noexcept 10136: : _M_value(__v), _M_cat(&__cat) { } 10136: 10136: template::value>::type> 10136: error_code(_ErrorCodeEnum __e) noexcept 10136: { *this = make_error_code(__e); } 10136: 10136: void 10136: assign(int __v, const error_category& __cat) noexcept 10136: { 10136: _M_value = __v; 10136: _M_cat = &__cat; 10136: } 10136: 10136: void 10136: clear() noexcept 10136: { assign(0, system_category()); } 10136: 10136: 10136: template 10136: typename enable_if::value, 10136: error_code&>::type 10136: operator=(_ErrorCodeEnum __e) noexcept 10136: { return *this = make_error_code(__e); } 10136: 10136: int 10136: value() const noexcept { return _M_value; } 10136: 10136: const error_category& 10136: category() const noexcept { return *_M_cat; } 10136: 10136: error_condition 10136: default_error_condition() const noexcept; 10136: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: string 10136: message() const 10136: { return category().message(value()); } 10136: 10136: explicit operator bool() const noexcept 10136: { return _M_value != 0; } 10136: 10136: 10136: private: 10136: friend class hash; 10136: 10136: int _M_value; 10136: const error_category* _M_cat; 10136: }; 10136: 10136: 10136: inline error_code 10136: make_error_code(errc __e) noexcept 10136: { return error_code(static_cast(__e), generic_category()); } 10136: 10136: inline bool 10136: operator<(const error_code& __lhs, const error_code& __rhs) noexcept 10136: { 10136: return (__lhs.category() < __rhs.category() 10136: || (__lhs.category() == __rhs.category() 10136: && __lhs.value() < __rhs.value())); 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) 10136: { return (__os << __e.category().name() << ':' << __e.value()); } 10136: 10136: error_condition make_error_condition(errc) noexcept; 10136: 10136: 10136: 10136: struct error_condition 10136: { 10136: error_condition() noexcept 10136: : _M_value(0), _M_cat(&generic_category()) { } 10136: 10136: error_condition(int __v, const error_category& __cat) noexcept 10136: : _M_value(__v), _M_cat(&__cat) { } 10136: 10136: template::value>::type> 10136: error_condition(_ErrorConditionEnum __e) noexcept 10136: { *this = make_error_condition(__e); } 10136: 10136: void 10136: assign(int __v, const error_category& __cat) noexcept 10136: { 10136: _M_value = __v; 10136: _M_cat = &__cat; 10136: } 10136: 10136: 10136: template 10136: typename enable_if::value, error_condition&>::type 10136: operator=(_ErrorConditionEnum __e) noexcept 10136: { return *this = make_error_condition(__e); } 10136: 10136: void 10136: clear() noexcept 10136: { assign(0, generic_category()); } 10136: 10136: 10136: int 10136: value() const noexcept { return _M_value; } 10136: 10136: const error_category& 10136: category() const noexcept { return *_M_cat; } 10136: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: string 10136: message() const 10136: { return category().message(value()); } 10136: 10136: explicit operator bool() const noexcept 10136: { return _M_value != 0; } 10136: 10136: 10136: private: 10136: int _M_value; 10136: const error_category* _M_cat; 10136: }; 10136: 10136: 10136: inline error_condition 10136: make_error_condition(errc __e) noexcept 10136: { return error_condition(static_cast(__e), generic_category()); } 10136: 10136: inline bool 10136: operator<(const error_condition& __lhs, 10136: const error_condition& __rhs) noexcept 10136: { 10136: return (__lhs.category() < __rhs.category() 10136: || (__lhs.category() == __rhs.category() 10136: && __lhs.value() < __rhs.value())); 10136: } 10136: 10136: 10136: inline bool 10136: operator==(const error_code& __lhs, const error_code& __rhs) noexcept 10136: { return (__lhs.category() == __rhs.category() 10136: && __lhs.value() == __rhs.value()); } 10136: 10136: inline bool 10136: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept 10136: { 10136: return (__lhs.category().equivalent(__lhs.value(), __rhs) 10136: || __rhs.category().equivalent(__lhs, __rhs.value())); 10136: } 10136: 10136: inline bool 10136: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept 10136: { 10136: return (__rhs.category().equivalent(__rhs.value(), __lhs) 10136: || __lhs.category().equivalent(__rhs, __lhs.value())); 10136: } 10136: 10136: inline bool 10136: operator==(const error_condition& __lhs, 10136: const error_condition& __rhs) noexcept 10136: { 10136: return (__lhs.category() == __rhs.category() 10136: && __lhs.value() == __rhs.value()); 10136: } 10136: 10136: inline bool 10136: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept 10136: { return !(__lhs == __rhs); } 10136: 10136: inline bool 10136: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept 10136: { return !(__lhs == __rhs); } 10136: 10136: inline bool 10136: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept 10136: { return !(__lhs == __rhs); } 10136: 10136: inline bool 10136: operator!=(const error_condition& __lhs, 10136: const error_condition& __rhs) noexcept 10136: { return !(__lhs == __rhs); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: class system_error : public std::runtime_error 10136: { 10136: private: 10136: error_code _M_code; 10136: 10136: public: 10136: system_error(error_code __ec = error_code()) 10136: : runtime_error(__ec.message()), _M_code(__ec) { } 10136: 10136: system_error(error_code __ec, const string& __what) 10136: : runtime_error(__what + ": " + __ec.message()), _M_code(__ec) { } 10136: 10136: system_error(error_code __ec, const char* __what) 10136: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } 10136: 10136: system_error(int __v, const error_category& __ecat, const char* __what) 10136: : system_error(error_code(__v, __ecat), __what) { } 10136: 10136: system_error(int __v, const error_category& __ecat) 10136: : runtime_error(error_code(__v, __ecat).message()), 10136: _M_code(__v, __ecat) { } 10136: 10136: system_error(int __v, const error_category& __ecat, const string& __what) 10136: : runtime_error(__what + ": " + error_code(__v, __ecat).message()), 10136: _M_code(__v, __ecat) { } 10136: 10136: virtual ~system_error() noexcept; 10136: 10136: const error_code& 10136: code() const noexcept { return _M_code; } 10136: }; 10136: 10136: 10136: } 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: struct hash 10136: : public __hash_base 10136: { 10136: size_t 10136: operator()(const error_code& __e) const noexcept 10136: { 10136: const size_t __tmp = std::_Hash_impl::hash(__e._M_value); 10136: return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp); 10136: } 10136: }; 10136: # 414 "/usr/include/c++/8/system_error" 3 10136: 10136: } 10136: # 47 "/usr/include/c++/8/bits/ios_base.h" 2 3 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: enum _Ios_Fmtflags 10136: { 10136: _S_boolalpha = 1L << 0, 10136: _S_dec = 1L << 1, 10136: _S_fixed = 1L << 2, 10136: _S_hex = 1L << 3, 10136: _S_internal = 1L << 4, 10136: _S_left = 1L << 5, 10136: _S_oct = 1L << 6, 10136: _S_right = 1L << 7, 10136: _S_scientific = 1L << 8, 10136: _S_showbase = 1L << 9, 10136: _S_showpoint = 1L << 10, 10136: _S_showpos = 1L << 11, 10136: _S_skipws = 1L << 12, 10136: _S_unitbuf = 1L << 13, 10136: _S_uppercase = 1L << 14, 10136: _S_adjustfield = _S_left | _S_right | _S_internal, 10136: _S_basefield = _S_dec | _S_oct | _S_hex, 10136: _S_floatfield = _S_scientific | _S_fixed, 10136: _S_ios_fmtflags_end = 1L << 16, 10136: _S_ios_fmtflags_max = 0x7fffffff, 10136: _S_ios_fmtflags_min = ~0x7fffffff 10136: }; 10136: 10136: inline constexpr _Ios_Fmtflags 10136: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 10136: { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Fmtflags 10136: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 10136: { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Fmtflags 10136: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 10136: { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Fmtflags 10136: operator~(_Ios_Fmtflags __a) 10136: { return _Ios_Fmtflags(~static_cast(__a)); } 10136: 10136: inline const _Ios_Fmtflags& 10136: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 10136: { return __a = __a | __b; } 10136: 10136: inline const _Ios_Fmtflags& 10136: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 10136: { return __a = __a & __b; } 10136: 10136: inline const _Ios_Fmtflags& 10136: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 10136: { return __a = __a ^ __b; } 10136: 10136: 10136: enum _Ios_Openmode 10136: { 10136: _S_app = 1L << 0, 10136: _S_ate = 1L << 1, 10136: _S_bin = 1L << 2, 10136: _S_in = 1L << 3, 10136: _S_out = 1L << 4, 10136: _S_trunc = 1L << 5, 10136: _S_ios_openmode_end = 1L << 16, 10136: _S_ios_openmode_max = 0x7fffffff, 10136: _S_ios_openmode_min = ~0x7fffffff 10136: }; 10136: 10136: inline constexpr _Ios_Openmode 10136: operator&(_Ios_Openmode __a, _Ios_Openmode __b) 10136: { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Openmode 10136: operator|(_Ios_Openmode __a, _Ios_Openmode __b) 10136: { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Openmode 10136: operator^(_Ios_Openmode __a, _Ios_Openmode __b) 10136: { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Openmode 10136: operator~(_Ios_Openmode __a) 10136: { return _Ios_Openmode(~static_cast(__a)); } 10136: 10136: inline const _Ios_Openmode& 10136: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) 10136: { return __a = __a | __b; } 10136: 10136: inline const _Ios_Openmode& 10136: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) 10136: { return __a = __a & __b; } 10136: 10136: inline const _Ios_Openmode& 10136: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) 10136: { return __a = __a ^ __b; } 10136: 10136: 10136: enum _Ios_Iostate 10136: { 10136: _S_goodbit = 0, 10136: _S_badbit = 1L << 0, 10136: _S_eofbit = 1L << 1, 10136: _S_failbit = 1L << 2, 10136: _S_ios_iostate_end = 1L << 16, 10136: _S_ios_iostate_max = 0x7fffffff, 10136: _S_ios_iostate_min = ~0x7fffffff 10136: }; 10136: 10136: inline constexpr _Ios_Iostate 10136: operator&(_Ios_Iostate __a, _Ios_Iostate __b) 10136: { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Iostate 10136: operator|(_Ios_Iostate __a, _Ios_Iostate __b) 10136: { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Iostate 10136: operator^(_Ios_Iostate __a, _Ios_Iostate __b) 10136: { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } 10136: 10136: inline constexpr _Ios_Iostate 10136: operator~(_Ios_Iostate __a) 10136: { return _Ios_Iostate(~static_cast(__a)); } 10136: 10136: inline const _Ios_Iostate& 10136: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) 10136: { return __a = __a | __b; } 10136: 10136: inline const _Ios_Iostate& 10136: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) 10136: { return __a = __a & __b; } 10136: 10136: inline const _Ios_Iostate& 10136: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) 10136: { return __a = __a ^ __b; } 10136: 10136: 10136: enum _Ios_Seekdir 10136: { 10136: _S_beg = 0, 10136: _S_cur = 1, 10136: _S_end = 2, 10136: _S_ios_seekdir_end = 1L << 16 10136: }; 10136: 10136: 10136: 10136: enum class io_errc { stream = 1 }; 10136: 10136: template <> struct is_error_code_enum : public true_type { }; 10136: 10136: const error_category& iostream_category() noexcept; 10136: 10136: inline error_code 10136: make_error_code(io_errc __e) noexcept 10136: { return error_code(static_cast(__e), iostream_category()); } 10136: 10136: inline error_condition 10136: make_error_condition(io_errc __e) noexcept 10136: { return error_condition(static_cast(__e), iostream_category()); } 10136: # 228 "/usr/include/c++/8/bits/ios_base.h" 3 10136: class ios_base 10136: { 10136: # 246 "/usr/include/c++/8/bits/ios_base.h" 3 10136: public: 10136: # 255 "/usr/include/c++/8/bits/ios_base.h" 3 10136: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error 10136: { 10136: public: 10136: explicit 10136: failure(const string& __str); 10136: 10136: 10136: explicit 10136: failure(const string&, const error_code&); 10136: 10136: explicit 10136: failure(const char*, const error_code& = io_errc::stream); 10136: 10136: 10136: virtual 10136: ~failure() throw(); 10136: 10136: virtual const char* 10136: what() const throw(); 10136: }; 10136: # 323 "/usr/include/c++/8/bits/ios_base.h" 3 10136: typedef _Ios_Fmtflags fmtflags; 10136: 10136: 10136: static const fmtflags boolalpha = _S_boolalpha; 10136: 10136: 10136: static const fmtflags dec = _S_dec; 10136: 10136: 10136: static const fmtflags fixed = _S_fixed; 10136: 10136: 10136: static const fmtflags hex = _S_hex; 10136: 10136: 10136: 10136: 10136: static const fmtflags internal = _S_internal; 10136: 10136: 10136: 10136: static const fmtflags left = _S_left; 10136: 10136: 10136: static const fmtflags oct = _S_oct; 10136: 10136: 10136: 10136: static const fmtflags right = _S_right; 10136: 10136: 10136: static const fmtflags scientific = _S_scientific; 10136: 10136: 10136: 10136: static const fmtflags showbase = _S_showbase; 10136: 10136: 10136: 10136: static const fmtflags showpoint = _S_showpoint; 10136: 10136: 10136: static const fmtflags showpos = _S_showpos; 10136: 10136: 10136: static const fmtflags skipws = _S_skipws; 10136: 10136: 10136: static const fmtflags unitbuf = _S_unitbuf; 10136: 10136: 10136: 10136: static const fmtflags uppercase = _S_uppercase; 10136: 10136: 10136: static const fmtflags adjustfield = _S_adjustfield; 10136: 10136: 10136: static const fmtflags basefield = _S_basefield; 10136: 10136: 10136: static const fmtflags floatfield = _S_floatfield; 10136: # 398 "/usr/include/c++/8/bits/ios_base.h" 3 10136: typedef _Ios_Iostate iostate; 10136: 10136: 10136: 10136: static const iostate badbit = _S_badbit; 10136: 10136: 10136: static const iostate eofbit = _S_eofbit; 10136: 10136: 10136: 10136: 10136: static const iostate failbit = _S_failbit; 10136: 10136: 10136: static const iostate goodbit = _S_goodbit; 10136: # 429 "/usr/include/c++/8/bits/ios_base.h" 3 10136: typedef _Ios_Openmode openmode; 10136: 10136: 10136: static const openmode app = _S_app; 10136: 10136: 10136: static const openmode ate = _S_ate; 10136: 10136: 10136: 10136: 10136: static const openmode binary = _S_bin; 10136: 10136: 10136: static const openmode in = _S_in; 10136: 10136: 10136: static const openmode out = _S_out; 10136: 10136: 10136: static const openmode trunc = _S_trunc; 10136: # 461 "/usr/include/c++/8/bits/ios_base.h" 3 10136: typedef _Ios_Seekdir seekdir; 10136: 10136: 10136: static const seekdir beg = _S_beg; 10136: 10136: 10136: static const seekdir cur = _S_cur; 10136: 10136: 10136: static const seekdir end = _S_end; 10136: 10136: 10136: 10136: typedef int io_state; 10136: typedef int open_mode; 10136: typedef int seek_dir; 10136: 10136: typedef std::streampos streampos; 10136: typedef std::streamoff streamoff; 10136: # 489 "/usr/include/c++/8/bits/ios_base.h" 3 10136: enum event 10136: { 10136: erase_event, 10136: imbue_event, 10136: copyfmt_event 10136: }; 10136: # 506 "/usr/include/c++/8/bits/ios_base.h" 3 10136: typedef void (*event_callback) (event __e, ios_base& __b, int __i); 10136: # 518 "/usr/include/c++/8/bits/ios_base.h" 3 10136: void 10136: register_callback(event_callback __fn, int __index); 10136: 10136: protected: 10136: streamsize _M_precision; 10136: streamsize _M_width; 10136: fmtflags _M_flags; 10136: iostate _M_exception; 10136: iostate _M_streambuf_state; 10136: 10136: 10136: 10136: struct _Callback_list 10136: { 10136: 10136: _Callback_list* _M_next; 10136: ios_base::event_callback _M_fn; 10136: int _M_index; 10136: _Atomic_word _M_refcount; 10136: 10136: _Callback_list(ios_base::event_callback __fn, int __index, 10136: _Callback_list* __cb) 10136: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } 10136: 10136: void 10136: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 10136: 10136: 10136: int 10136: _M_remove_reference() 10136: { 10136: 10136: ; 10136: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); 10136: if (__res == 0) 10136: { 10136: ; 10136: } 10136: return __res; 10136: } 10136: }; 10136: 10136: _Callback_list* _M_callbacks; 10136: 10136: void 10136: _M_call_callbacks(event __ev) throw(); 10136: 10136: void 10136: _M_dispose_callbacks(void) throw(); 10136: 10136: 10136: struct _Words 10136: { 10136: void* _M_pword; 10136: long _M_iword; 10136: _Words() : _M_pword(0), _M_iword(0) { } 10136: }; 10136: 10136: 10136: _Words _M_word_zero; 10136: 10136: 10136: 10136: enum { _S_local_word_size = 8 }; 10136: _Words _M_local_word[_S_local_word_size]; 10136: 10136: 10136: int _M_word_size; 10136: _Words* _M_word; 10136: 10136: _Words& 10136: _M_grow_words(int __index, bool __iword); 10136: 10136: 10136: locale _M_ios_locale; 10136: 10136: void 10136: _M_init() throw(); 10136: 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: class Init 10136: { 10136: friend class ios_base; 10136: public: 10136: Init(); 10136: ~Init(); 10136: 10136: private: 10136: static _Atomic_word _S_refcount; 10136: static bool _S_synced_with_stdio; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: fmtflags 10136: flags() const 10136: { return _M_flags; } 10136: # 631 "/usr/include/c++/8/bits/ios_base.h" 3 10136: fmtflags 10136: flags(fmtflags __fmtfl) 10136: { 10136: fmtflags __old = _M_flags; 10136: _M_flags = __fmtfl; 10136: return __old; 10136: } 10136: # 647 "/usr/include/c++/8/bits/ios_base.h" 3 10136: fmtflags 10136: setf(fmtflags __fmtfl) 10136: { 10136: fmtflags __old = _M_flags; 10136: _M_flags |= __fmtfl; 10136: return __old; 10136: } 10136: # 664 "/usr/include/c++/8/bits/ios_base.h" 3 10136: fmtflags 10136: setf(fmtflags __fmtfl, fmtflags __mask) 10136: { 10136: fmtflags __old = _M_flags; 10136: _M_flags &= ~__mask; 10136: _M_flags |= (__fmtfl & __mask); 10136: return __old; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void 10136: unsetf(fmtflags __mask) 10136: { _M_flags &= ~__mask; } 10136: # 690 "/usr/include/c++/8/bits/ios_base.h" 3 10136: streamsize 10136: precision() const 10136: { return _M_precision; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: streamsize 10136: precision(streamsize __prec) 10136: { 10136: streamsize __old = _M_precision; 10136: _M_precision = __prec; 10136: return __old; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: streamsize 10136: width() const 10136: { return _M_width; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: streamsize 10136: width(streamsize __wide) 10136: { 10136: streamsize __old = _M_width; 10136: _M_width = __wide; 10136: return __old; 10136: } 10136: # 741 "/usr/include/c++/8/bits/ios_base.h" 3 10136: static bool 10136: sync_with_stdio(bool __sync = true); 10136: # 753 "/usr/include/c++/8/bits/ios_base.h" 3 10136: locale 10136: imbue(const locale& __loc) throw(); 10136: # 764 "/usr/include/c++/8/bits/ios_base.h" 3 10136: locale 10136: getloc() const 10136: { return _M_ios_locale; } 10136: # 775 "/usr/include/c++/8/bits/ios_base.h" 3 10136: const locale& 10136: _M_getloc() const 10136: { return _M_ios_locale; } 10136: # 794 "/usr/include/c++/8/bits/ios_base.h" 3 10136: static int 10136: xalloc() throw(); 10136: # 810 "/usr/include/c++/8/bits/ios_base.h" 3 10136: long& 10136: iword(int __ix) 10136: { 10136: _Words& __word = (__ix < _M_word_size) 10136: ? _M_word[__ix] : _M_grow_words(__ix, true); 10136: return __word._M_iword; 10136: } 10136: # 831 "/usr/include/c++/8/bits/ios_base.h" 3 10136: void*& 10136: pword(int __ix) 10136: { 10136: _Words& __word = (__ix < _M_word_size) 10136: ? _M_word[__ix] : _M_grow_words(__ix, false); 10136: return __word._M_pword; 10136: } 10136: # 848 "/usr/include/c++/8/bits/ios_base.h" 3 10136: virtual ~ios_base(); 10136: 10136: protected: 10136: ios_base() throw (); 10136: # 862 "/usr/include/c++/8/bits/ios_base.h" 3 10136: public: 10136: ios_base(const ios_base&) = delete; 10136: 10136: ios_base& 10136: operator=(const ios_base&) = delete; 10136: 10136: protected: 10136: void 10136: _M_move(ios_base&) noexcept; 10136: 10136: void 10136: _M_swap(ios_base& __rhs) noexcept; 10136: 10136: }; 10136: 10136: 10136: 10136: inline ios_base& 10136: boolalpha(ios_base& __base) 10136: { 10136: __base.setf(ios_base::boolalpha); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: noboolalpha(ios_base& __base) 10136: { 10136: __base.unsetf(ios_base::boolalpha); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: showbase(ios_base& __base) 10136: { 10136: __base.setf(ios_base::showbase); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: noshowbase(ios_base& __base) 10136: { 10136: __base.unsetf(ios_base::showbase); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: showpoint(ios_base& __base) 10136: { 10136: __base.setf(ios_base::showpoint); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: noshowpoint(ios_base& __base) 10136: { 10136: __base.unsetf(ios_base::showpoint); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: showpos(ios_base& __base) 10136: { 10136: __base.setf(ios_base::showpos); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: noshowpos(ios_base& __base) 10136: { 10136: __base.unsetf(ios_base::showpos); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: skipws(ios_base& __base) 10136: { 10136: __base.setf(ios_base::skipws); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: noskipws(ios_base& __base) 10136: { 10136: __base.unsetf(ios_base::skipws); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: uppercase(ios_base& __base) 10136: { 10136: __base.setf(ios_base::uppercase); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: nouppercase(ios_base& __base) 10136: { 10136: __base.unsetf(ios_base::uppercase); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: unitbuf(ios_base& __base) 10136: { 10136: __base.setf(ios_base::unitbuf); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: nounitbuf(ios_base& __base) 10136: { 10136: __base.unsetf(ios_base::unitbuf); 10136: return __base; 10136: } 10136: 10136: 10136: 10136: inline ios_base& 10136: internal(ios_base& __base) 10136: { 10136: __base.setf(ios_base::internal, ios_base::adjustfield); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: left(ios_base& __base) 10136: { 10136: __base.setf(ios_base::left, ios_base::adjustfield); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: right(ios_base& __base) 10136: { 10136: __base.setf(ios_base::right, ios_base::adjustfield); 10136: return __base; 10136: } 10136: 10136: 10136: 10136: inline ios_base& 10136: dec(ios_base& __base) 10136: { 10136: __base.setf(ios_base::dec, ios_base::basefield); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: hex(ios_base& __base) 10136: { 10136: __base.setf(ios_base::hex, ios_base::basefield); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: oct(ios_base& __base) 10136: { 10136: __base.setf(ios_base::oct, ios_base::basefield); 10136: return __base; 10136: } 10136: 10136: 10136: 10136: inline ios_base& 10136: fixed(ios_base& __base) 10136: { 10136: __base.setf(ios_base::fixed, ios_base::floatfield); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: scientific(ios_base& __base) 10136: { 10136: __base.setf(ios_base::scientific, ios_base::floatfield); 10136: return __base; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: inline ios_base& 10136: hexfloat(ios_base& __base) 10136: { 10136: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); 10136: return __base; 10136: } 10136: 10136: 10136: inline ios_base& 10136: defaultfloat(ios_base& __base) 10136: { 10136: __base.unsetf(ios_base::floatfield); 10136: return __base; 10136: } 10136: 10136: 10136: 10136: } 10136: # 43 "/usr/include/c++/8/ios" 2 3 10136: # 1 "/usr/include/c++/8/streambuf" 1 3 10136: # 36 "/usr/include/c++/8/streambuf" 3 10136: 10136: # 37 "/usr/include/c++/8/streambuf" 3 10136: # 45 "/usr/include/c++/8/streambuf" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: template 10136: streamsize 10136: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, 10136: basic_streambuf<_CharT, _Traits>*, bool&); 10136: # 121 "/usr/include/c++/8/streambuf" 3 10136: template 10136: class basic_streambuf 10136: { 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef _Traits traits_type; 10136: typedef typename traits_type::int_type int_type; 10136: typedef typename traits_type::pos_type pos_type; 10136: typedef typename traits_type::off_type off_type; 10136: 10136: 10136: 10136: 10136: typedef basic_streambuf __streambuf_type; 10136: 10136: 10136: friend class basic_ios; 10136: friend class basic_istream; 10136: friend class basic_ostream; 10136: friend class istreambuf_iterator; 10136: friend class ostreambuf_iterator; 10136: 10136: friend streamsize 10136: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); 10136: 10136: template 10136: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 10136: _CharT2*>::__type 10136: __copy_move_a2(istreambuf_iterator<_CharT2>, 10136: istreambuf_iterator<_CharT2>, _CharT2*); 10136: 10136: template 10136: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 10136: istreambuf_iterator<_CharT2> >::__type 10136: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 10136: const _CharT2&); 10136: 10136: template 10136: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 10136: void>::__type 10136: advance(istreambuf_iterator<_CharT2>&, _Distance); 10136: 10136: template 10136: friend basic_istream<_CharT2, _Traits2>& 10136: operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); 10136: 10136: template 10136: friend basic_istream<_CharT2, _Traits2>& 10136: operator>>(basic_istream<_CharT2, _Traits2>&, 10136: basic_string<_CharT2, _Traits2, _Alloc>&); 10136: 10136: template 10136: friend basic_istream<_CharT2, _Traits2>& 10136: getline(basic_istream<_CharT2, _Traits2>&, 10136: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); 10136: 10136: protected: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: char_type* _M_in_beg; 10136: char_type* _M_in_cur; 10136: char_type* _M_in_end; 10136: char_type* _M_out_beg; 10136: char_type* _M_out_cur; 10136: char_type* _M_out_end; 10136: 10136: 10136: locale _M_buf_locale; 10136: 10136: public: 10136: 10136: virtual 10136: ~basic_streambuf() 10136: { } 10136: # 215 "/usr/include/c++/8/streambuf" 3 10136: locale 10136: pubimbue(const locale& __loc) 10136: { 10136: locale __tmp(this->getloc()); 10136: this->imbue(__loc); 10136: _M_buf_locale = __loc; 10136: return __tmp; 10136: } 10136: # 232 "/usr/include/c++/8/streambuf" 3 10136: locale 10136: getloc() const 10136: { return _M_buf_locale; } 10136: # 245 "/usr/include/c++/8/streambuf" 3 10136: basic_streambuf* 10136: pubsetbuf(char_type* __s, streamsize __n) 10136: { return this->setbuf(__s, __n); } 10136: # 257 "/usr/include/c++/8/streambuf" 3 10136: pos_type 10136: pubseekoff(off_type __off, ios_base::seekdir __way, 10136: ios_base::openmode __mode = ios_base::in | ios_base::out) 10136: { return this->seekoff(__off, __way, __mode); } 10136: # 269 "/usr/include/c++/8/streambuf" 3 10136: pos_type 10136: pubseekpos(pos_type __sp, 10136: ios_base::openmode __mode = ios_base::in | ios_base::out) 10136: { return this->seekpos(__sp, __mode); } 10136: 10136: 10136: 10136: 10136: int 10136: pubsync() { return this->sync(); } 10136: # 290 "/usr/include/c++/8/streambuf" 3 10136: streamsize 10136: in_avail() 10136: { 10136: const streamsize __ret = this->egptr() - this->gptr(); 10136: return __ret ? __ret : this->showmanyc(); 10136: } 10136: # 304 "/usr/include/c++/8/streambuf" 3 10136: int_type 10136: snextc() 10136: { 10136: int_type __ret = traits_type::eof(); 10136: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), 10136: __ret), true)) 10136: __ret = this->sgetc(); 10136: return __ret; 10136: } 10136: # 322 "/usr/include/c++/8/streambuf" 3 10136: int_type 10136: sbumpc() 10136: { 10136: int_type __ret; 10136: if (__builtin_expect(this->gptr() < this->egptr(), true)) 10136: { 10136: __ret = traits_type::to_int_type(*this->gptr()); 10136: this->gbump(1); 10136: } 10136: else 10136: __ret = this->uflow(); 10136: return __ret; 10136: } 10136: # 344 "/usr/include/c++/8/streambuf" 3 10136: int_type 10136: sgetc() 10136: { 10136: int_type __ret; 10136: if (__builtin_expect(this->gptr() < this->egptr(), true)) 10136: __ret = traits_type::to_int_type(*this->gptr()); 10136: else 10136: __ret = this->underflow(); 10136: return __ret; 10136: } 10136: # 363 "/usr/include/c++/8/streambuf" 3 10136: streamsize 10136: sgetn(char_type* __s, streamsize __n) 10136: { return this->xsgetn(__s, __n); } 10136: # 378 "/usr/include/c++/8/streambuf" 3 10136: int_type 10136: sputbackc(char_type __c) 10136: { 10136: int_type __ret; 10136: const bool __testpos = this->eback() < this->gptr(); 10136: if (__builtin_expect(!__testpos || 10136: !traits_type::eq(__c, this->gptr()[-1]), false)) 10136: __ret = this->pbackfail(traits_type::to_int_type(__c)); 10136: else 10136: { 10136: this->gbump(-1); 10136: __ret = traits_type::to_int_type(*this->gptr()); 10136: } 10136: return __ret; 10136: } 10136: # 403 "/usr/include/c++/8/streambuf" 3 10136: int_type 10136: sungetc() 10136: { 10136: int_type __ret; 10136: if (__builtin_expect(this->eback() < this->gptr(), true)) 10136: { 10136: this->gbump(-1); 10136: __ret = traits_type::to_int_type(*this->gptr()); 10136: } 10136: else 10136: __ret = this->pbackfail(); 10136: return __ret; 10136: } 10136: # 430 "/usr/include/c++/8/streambuf" 3 10136: int_type 10136: sputc(char_type __c) 10136: { 10136: int_type __ret; 10136: if (__builtin_expect(this->pptr() < this->epptr(), true)) 10136: { 10136: *this->pptr() = __c; 10136: this->pbump(1); 10136: __ret = traits_type::to_int_type(__c); 10136: } 10136: else 10136: __ret = this->overflow(traits_type::to_int_type(__c)); 10136: return __ret; 10136: } 10136: # 456 "/usr/include/c++/8/streambuf" 3 10136: streamsize 10136: sputn(const char_type* __s, streamsize __n) 10136: { return this->xsputn(__s, __n); } 10136: 10136: protected: 10136: # 470 "/usr/include/c++/8/streambuf" 3 10136: basic_streambuf() 10136: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), 10136: _M_out_beg(0), _M_out_cur(0), _M_out_end(0), 10136: _M_buf_locale(locale()) 10136: { } 10136: # 488 "/usr/include/c++/8/streambuf" 3 10136: char_type* 10136: eback() const { return _M_in_beg; } 10136: 10136: char_type* 10136: gptr() const { return _M_in_cur; } 10136: 10136: char_type* 10136: egptr() const { return _M_in_end; } 10136: # 504 "/usr/include/c++/8/streambuf" 3 10136: void 10136: gbump(int __n) { _M_in_cur += __n; } 10136: # 515 "/usr/include/c++/8/streambuf" 3 10136: void 10136: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) 10136: { 10136: _M_in_beg = __gbeg; 10136: _M_in_cur = __gnext; 10136: _M_in_end = __gend; 10136: } 10136: # 535 "/usr/include/c++/8/streambuf" 3 10136: char_type* 10136: pbase() const { return _M_out_beg; } 10136: 10136: char_type* 10136: pptr() const { return _M_out_cur; } 10136: 10136: char_type* 10136: epptr() const { return _M_out_end; } 10136: # 551 "/usr/include/c++/8/streambuf" 3 10136: void 10136: pbump(int __n) { _M_out_cur += __n; } 10136: # 561 "/usr/include/c++/8/streambuf" 3 10136: void 10136: setp(char_type* __pbeg, char_type* __pend) 10136: { 10136: _M_out_beg = _M_out_cur = __pbeg; 10136: _M_out_end = __pend; 10136: } 10136: # 582 "/usr/include/c++/8/streambuf" 3 10136: virtual void 10136: imbue(const locale& __loc __attribute__ ((__unused__))) 10136: { } 10136: # 597 "/usr/include/c++/8/streambuf" 3 10136: virtual basic_streambuf* 10136: setbuf(char_type*, streamsize) 10136: { return this; } 10136: # 608 "/usr/include/c++/8/streambuf" 3 10136: virtual pos_type 10136: seekoff(off_type, ios_base::seekdir, 10136: ios_base::openmode = ios_base::in | ios_base::out) 10136: { return pos_type(off_type(-1)); } 10136: # 620 "/usr/include/c++/8/streambuf" 3 10136: virtual pos_type 10136: seekpos(pos_type, 10136: ios_base::openmode = ios_base::in | ios_base::out) 10136: { return pos_type(off_type(-1)); } 10136: # 633 "/usr/include/c++/8/streambuf" 3 10136: virtual int 10136: sync() { return 0; } 10136: # 655 "/usr/include/c++/8/streambuf" 3 10136: virtual streamsize 10136: showmanyc() { return 0; } 10136: # 671 "/usr/include/c++/8/streambuf" 3 10136: virtual streamsize 10136: xsgetn(char_type* __s, streamsize __n); 10136: # 693 "/usr/include/c++/8/streambuf" 3 10136: virtual int_type 10136: underflow() 10136: { return traits_type::eof(); } 10136: # 706 "/usr/include/c++/8/streambuf" 3 10136: virtual int_type 10136: uflow() 10136: { 10136: int_type __ret = traits_type::eof(); 10136: const bool __testeof = traits_type::eq_int_type(this->underflow(), 10136: __ret); 10136: if (!__testeof) 10136: { 10136: __ret = traits_type::to_int_type(*this->gptr()); 10136: this->gbump(1); 10136: } 10136: return __ret; 10136: } 10136: # 730 "/usr/include/c++/8/streambuf" 3 10136: virtual int_type 10136: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 10136: { return traits_type::eof(); } 10136: # 748 "/usr/include/c++/8/streambuf" 3 10136: virtual streamsize 10136: xsputn(const char_type* __s, streamsize __n); 10136: # 774 "/usr/include/c++/8/streambuf" 3 10136: virtual int_type 10136: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 10136: { return traits_type::eof(); } 10136: 10136: 10136: 10136: public: 10136: # 790 "/usr/include/c++/8/streambuf" 3 10136: [[__deprecated__("stossc is deprecated, use sbumpc instead")]] 10136: 10136: void 10136: stossc() 10136: { 10136: if (this->gptr() < this->egptr()) 10136: this->gbump(1); 10136: else 10136: this->uflow(); 10136: } 10136: 10136: 10136: 10136: void 10136: __safe_gbump(streamsize __n) { _M_in_cur += __n; } 10136: 10136: void 10136: __safe_pbump(streamsize __n) { _M_out_cur += __n; } 10136: 10136: 10136: 10136: 10136: protected: 10136: 10136: basic_streambuf(const basic_streambuf&); 10136: 10136: basic_streambuf& 10136: operator=(const basic_streambuf&); 10136: 10136: 10136: void 10136: swap(basic_streambuf& __sb) 10136: { 10136: std::swap(_M_in_beg, __sb._M_in_beg); 10136: std::swap(_M_in_cur, __sb._M_in_cur); 10136: std::swap(_M_in_end, __sb._M_in_end); 10136: std::swap(_M_out_beg, __sb._M_out_beg); 10136: std::swap(_M_out_cur, __sb._M_out_cur); 10136: std::swap(_M_out_end, __sb._M_out_end); 10136: std::swap(_M_buf_locale, __sb._M_buf_locale); 10136: } 10136: 10136: }; 10136: 10136: 10136: template 10136: std::basic_streambuf<_CharT, _Traits>:: 10136: basic_streambuf(const basic_streambuf&) = default; 10136: 10136: template 10136: std::basic_streambuf<_CharT, _Traits>& 10136: std::basic_streambuf<_CharT, _Traits>:: 10136: operator=(const basic_streambuf&) = default; 10136: 10136: 10136: 10136: template<> 10136: streamsize 10136: __copy_streambufs_eof(basic_streambuf* __sbin, 10136: basic_streambuf* __sbout, bool& __ineof); 10136: 10136: template<> 10136: streamsize 10136: __copy_streambufs_eof(basic_streambuf* __sbin, 10136: basic_streambuf* __sbout, bool& __ineof); 10136: 10136: 10136: 10136: 10136: 10136: } 10136: 10136: # 1 "/usr/include/c++/8/bits/streambuf.tcc" 1 3 10136: # 37 "/usr/include/c++/8/bits/streambuf.tcc" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/streambuf.tcc" 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: streamsize 10136: basic_streambuf<_CharT, _Traits>:: 10136: xsgetn(char_type* __s, streamsize __n) 10136: { 10136: streamsize __ret = 0; 10136: while (__ret < __n) 10136: { 10136: const streamsize __buf_len = this->egptr() - this->gptr(); 10136: if (__buf_len) 10136: { 10136: const streamsize __remaining = __n - __ret; 10136: const streamsize __len = std::min(__buf_len, __remaining); 10136: traits_type::copy(__s, this->gptr(), __len); 10136: __ret += __len; 10136: __s += __len; 10136: this->__safe_gbump(__len); 10136: } 10136: 10136: if (__ret < __n) 10136: { 10136: const int_type __c = this->uflow(); 10136: if (!traits_type::eq_int_type(__c, traits_type::eof())) 10136: { 10136: traits_type::assign(*__s++, traits_type::to_char_type(__c)); 10136: ++__ret; 10136: } 10136: else 10136: break; 10136: } 10136: } 10136: return __ret; 10136: } 10136: 10136: template 10136: streamsize 10136: basic_streambuf<_CharT, _Traits>:: 10136: xsputn(const char_type* __s, streamsize __n) 10136: { 10136: streamsize __ret = 0; 10136: while (__ret < __n) 10136: { 10136: const streamsize __buf_len = this->epptr() - this->pptr(); 10136: if (__buf_len) 10136: { 10136: const streamsize __remaining = __n - __ret; 10136: const streamsize __len = std::min(__buf_len, __remaining); 10136: traits_type::copy(this->pptr(), __s, __len); 10136: __ret += __len; 10136: __s += __len; 10136: this->__safe_pbump(__len); 10136: } 10136: 10136: if (__ret < __n) 10136: { 10136: int_type __c = this->overflow(traits_type::to_int_type(*__s)); 10136: if (!traits_type::eq_int_type(__c, traits_type::eof())) 10136: { 10136: ++__ret; 10136: ++__s; 10136: } 10136: else 10136: break; 10136: } 10136: } 10136: return __ret; 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: streamsize 10136: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, 10136: basic_streambuf<_CharT, _Traits>* __sbout, 10136: bool& __ineof) 10136: { 10136: streamsize __ret = 0; 10136: __ineof = true; 10136: typename _Traits::int_type __c = __sbin->sgetc(); 10136: while (!_Traits::eq_int_type(__c, _Traits::eof())) 10136: { 10136: __c = __sbout->sputc(_Traits::to_char_type(__c)); 10136: if (_Traits::eq_int_type(__c, _Traits::eof())) 10136: { 10136: __ineof = false; 10136: break; 10136: } 10136: ++__ret; 10136: __c = __sbin->snextc(); 10136: } 10136: return __ret; 10136: } 10136: 10136: template 10136: inline streamsize 10136: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, 10136: basic_streambuf<_CharT, _Traits>* __sbout) 10136: { 10136: bool __ineof; 10136: return __copy_streambufs_eof(__sbin, __sbout, __ineof); 10136: } 10136: 10136: 10136: 10136: 10136: extern template class basic_streambuf; 10136: extern template 10136: streamsize 10136: __copy_streambufs(basic_streambuf*, 10136: basic_streambuf*); 10136: extern template 10136: streamsize 10136: __copy_streambufs_eof(basic_streambuf*, 10136: basic_streambuf*, bool&); 10136: 10136: 10136: extern template class basic_streambuf; 10136: extern template 10136: streamsize 10136: __copy_streambufs(basic_streambuf*, 10136: basic_streambuf*); 10136: extern template 10136: streamsize 10136: __copy_streambufs_eof(basic_streambuf*, 10136: basic_streambuf*, bool&); 10136: 10136: 10136: 10136: 10136: } 10136: # 863 "/usr/include/c++/8/streambuf" 2 3 10136: # 44 "/usr/include/c++/8/ios" 2 3 10136: # 1 "/usr/include/c++/8/bits/basic_ios.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/locale_facets.h" 1 3 10136: # 37 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: 10136: # 1 "/usr/include/c++/8/cwctype" 1 3 10136: # 39 "/usr/include/c++/8/cwctype" 3 10136: 10136: # 40 "/usr/include/c++/8/cwctype" 3 10136: # 50 "/usr/include/c++/8/cwctype" 3 10136: # 1 "/usr/include/wctype.h" 1 3 4 10136: # 38 "/usr/include/wctype.h" 3 4 10136: # 1 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 1 3 4 10136: # 38 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 10136: typedef unsigned long int wctype_t; 10136: # 56 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 10136: enum 10136: { 10136: __ISwupper = 0, 10136: __ISwlower = 1, 10136: __ISwalpha = 2, 10136: __ISwdigit = 3, 10136: __ISwxdigit = 4, 10136: __ISwspace = 5, 10136: __ISwprint = 6, 10136: __ISwgraph = 7, 10136: __ISwblank = 8, 10136: __ISwcntrl = 9, 10136: __ISwpunct = 10, 10136: __ISwalnum = 11, 10136: 10136: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), 10136: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), 10136: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), 10136: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), 10136: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), 10136: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), 10136: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), 10136: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), 10136: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), 10136: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), 10136: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), 10136: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) 10136: }; 10136: 10136: 10136: 10136: extern "C" { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int iswalnum (wint_t __wc) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int iswalpha (wint_t __wc) throw (); 10136: 10136: 10136: extern int iswcntrl (wint_t __wc) throw (); 10136: 10136: 10136: 10136: extern int iswdigit (wint_t __wc) throw (); 10136: 10136: 10136: 10136: extern int iswgraph (wint_t __wc) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswlower (wint_t __wc) throw (); 10136: 10136: 10136: extern int iswprint (wint_t __wc) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswpunct (wint_t __wc) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswspace (wint_t __wc) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswupper (wint_t __wc) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswxdigit (wint_t __wc) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int iswblank (wint_t __wc) throw (); 10136: # 155 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 10136: extern wctype_t wctype (const char *__property) throw (); 10136: 10136: 10136: 10136: extern int iswctype (wint_t __wc, wctype_t __desc) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t towlower (wint_t __wc) throw (); 10136: 10136: 10136: extern wint_t towupper (wint_t __wc) throw (); 10136: 10136: } 10136: # 39 "/usr/include/wctype.h" 2 3 4 10136: 10136: 10136: 10136: 10136: 10136: extern "C" { 10136: 10136: 10136: 10136: typedef const __int32_t *wctrans_t; 10136: 10136: 10136: 10136: extern wctrans_t wctrans (const char *__property) throw (); 10136: 10136: 10136: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern int iswalnum_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: 10136: 10136: extern int iswalpha_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: extern int iswcntrl_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: extern int iswdigit_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: extern int iswgraph_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswlower_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: extern int iswprint_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswpunct_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswspace_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswupper_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswxdigit_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: 10136: extern int iswblank_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: extern wctype_t wctype_l (const char *__property, locale_t __locale) 10136: throw (); 10136: 10136: 10136: 10136: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale) 10136: throw (); 10136: 10136: 10136: 10136: 10136: 10136: 10136: extern wint_t towlower_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: extern wint_t towupper_l (wint_t __wc, locale_t __locale) throw (); 10136: 10136: 10136: 10136: extern wctrans_t wctrans_l (const char *__property, locale_t __locale) 10136: throw (); 10136: 10136: 10136: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, 10136: locale_t __locale) throw (); 10136: 10136: 10136: 10136: } 10136: # 51 "/usr/include/c++/8/cwctype" 2 3 10136: # 80 "/usr/include/c++/8/cwctype" 3 10136: namespace std 10136: { 10136: using ::wctrans_t; 10136: using ::wctype_t; 10136: using ::wint_t; 10136: 10136: using ::iswalnum; 10136: using ::iswalpha; 10136: 10136: using ::iswblank; 10136: 10136: using ::iswcntrl; 10136: using ::iswctype; 10136: using ::iswdigit; 10136: using ::iswgraph; 10136: using ::iswlower; 10136: using ::iswprint; 10136: using ::iswpunct; 10136: using ::iswspace; 10136: using ::iswupper; 10136: using ::iswxdigit; 10136: using ::towctrans; 10136: using ::towlower; 10136: using ::towupper; 10136: using ::wctrans; 10136: using ::wctype; 10136: } 10136: # 40 "/usr/include/c++/8/bits/locale_facets.h" 2 3 10136: # 1 "/usr/include/c++/8/cctype" 1 3 10136: # 39 "/usr/include/c++/8/cctype" 3 10136: 10136: # 40 "/usr/include/c++/8/cctype" 3 10136: # 41 "/usr/include/c++/8/bits/locale_facets.h" 2 3 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/ctype_base.h" 1 3 10136: # 36 "/usr/include/arm-linux-gnueabihf/c++/8/bits/ctype_base.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: struct ctype_base 10136: { 10136: 10136: typedef const int* __to_type; 10136: 10136: 10136: 10136: typedef unsigned short mask; 10136: static const mask upper = _ISupper; 10136: static const mask lower = _ISlower; 10136: static const mask alpha = _ISalpha; 10136: static const mask digit = _ISdigit; 10136: static const mask xdigit = _ISxdigit; 10136: static const mask space = _ISspace; 10136: static const mask print = _ISprint; 10136: static const mask graph = _ISalpha | _ISdigit | _ISpunct; 10136: static const mask cntrl = _IScntrl; 10136: static const mask punct = _ISpunct; 10136: static const mask alnum = _ISalpha | _ISdigit; 10136: 10136: static const mask blank = _ISblank; 10136: 10136: }; 10136: 10136: 10136: } 10136: # 42 "/usr/include/c++/8/bits/locale_facets.h" 2 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/streambuf_iterator.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 49 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 10136: template 10136: class istreambuf_iterator 10136: : public iterator 10136: 10136: 10136: 10136: { 10136: public: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef _Traits traits_type; 10136: typedef typename _Traits::int_type int_type; 10136: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 10136: typedef basic_istream<_CharT, _Traits> istream_type; 10136: 10136: 10136: template 10136: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 10136: ostreambuf_iterator<_CharT2> >::__type 10136: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 10136: ostreambuf_iterator<_CharT2>); 10136: 10136: template 10136: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 10136: _CharT2*>::__type 10136: __copy_move_a2(istreambuf_iterator<_CharT2>, 10136: istreambuf_iterator<_CharT2>, _CharT2*); 10136: 10136: template 10136: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 10136: istreambuf_iterator<_CharT2> >::__type 10136: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 10136: const _CharT2&); 10136: 10136: template 10136: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 10136: void>::__type 10136: advance(istreambuf_iterator<_CharT2>&, _Distance); 10136: 10136: private: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: mutable streambuf_type* _M_sbuf; 10136: int_type _M_c; 10136: 10136: public: 10136: 10136: constexpr istreambuf_iterator() noexcept 10136: : _M_sbuf(0), _M_c(traits_type::eof()) { } 10136: 10136: 10136: istreambuf_iterator(const istreambuf_iterator&) noexcept = default; 10136: 10136: ~istreambuf_iterator() = default; 10136: 10136: 10136: 10136: istreambuf_iterator(istream_type& __s) noexcept 10136: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } 10136: 10136: 10136: istreambuf_iterator(streambuf_type* __s) noexcept 10136: : _M_sbuf(__s), _M_c(traits_type::eof()) { } 10136: 10136: 10136: 10136: 10136: char_type 10136: operator*() const 10136: { 10136: int_type __c = _M_get(); 10136: # 139 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 10136: return traits_type::to_char_type(__c); 10136: } 10136: 10136: 10136: istreambuf_iterator& 10136: operator++() 10136: { 10136: 10136: 10136: 10136: ; 10136: 10136: _M_sbuf->sbumpc(); 10136: _M_c = traits_type::eof(); 10136: return *this; 10136: } 10136: 10136: 10136: istreambuf_iterator 10136: operator++(int) 10136: { 10136: 10136: 10136: 10136: ; 10136: 10136: istreambuf_iterator __old = *this; 10136: __old._M_c = _M_sbuf->sbumpc(); 10136: _M_c = traits_type::eof(); 10136: return __old; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: bool 10136: equal(const istreambuf_iterator& __b) const 10136: { return _M_at_eof() == __b._M_at_eof(); } 10136: 10136: private: 10136: int_type 10136: _M_get() const 10136: { 10136: int_type __ret = _M_c; 10136: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) 10136: _M_sbuf = 0; 10136: return __ret; 10136: } 10136: 10136: bool 10136: _M_at_eof() const 10136: { return _S_is_eof(_M_get()); } 10136: 10136: static bool 10136: _S_is_eof(int_type __c) 10136: { 10136: const int_type __eof = traits_type::eof(); 10136: return traits_type::eq_int_type(__c, __eof); 10136: } 10136: }; 10136: 10136: template 10136: inline bool 10136: operator==(const istreambuf_iterator<_CharT, _Traits>& __a, 10136: const istreambuf_iterator<_CharT, _Traits>& __b) 10136: { return __a.equal(__b); } 10136: 10136: template 10136: inline bool 10136: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, 10136: const istreambuf_iterator<_CharT, _Traits>& __b) 10136: { return !__a.equal(__b); } 10136: 10136: 10136: template 10136: class ostreambuf_iterator 10136: : public iterator 10136: { 10136: public: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef _Traits traits_type; 10136: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 10136: typedef basic_ostream<_CharT, _Traits> ostream_type; 10136: 10136: 10136: template 10136: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 10136: ostreambuf_iterator<_CharT2> >::__type 10136: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 10136: ostreambuf_iterator<_CharT2>); 10136: 10136: private: 10136: streambuf_type* _M_sbuf; 10136: bool _M_failed; 10136: 10136: public: 10136: 10136: ostreambuf_iterator(ostream_type& __s) noexcept 10136: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } 10136: 10136: 10136: ostreambuf_iterator(streambuf_type* __s) noexcept 10136: : _M_sbuf(__s), _M_failed(!_M_sbuf) { } 10136: 10136: 10136: ostreambuf_iterator& 10136: operator=(_CharT __c) 10136: { 10136: if (!_M_failed && 10136: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) 10136: _M_failed = true; 10136: return *this; 10136: } 10136: 10136: 10136: ostreambuf_iterator& 10136: operator*() 10136: { return *this; } 10136: 10136: 10136: ostreambuf_iterator& 10136: operator++(int) 10136: { return *this; } 10136: 10136: 10136: ostreambuf_iterator& 10136: operator++() 10136: { return *this; } 10136: 10136: 10136: bool 10136: failed() const noexcept 10136: { return _M_failed; } 10136: 10136: ostreambuf_iterator& 10136: _M_put(const _CharT* __ws, streamsize __len) 10136: { 10136: if (__builtin_expect(!_M_failed, true) 10136: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, 10136: false)) 10136: _M_failed = true; 10136: return *this; 10136: } 10136: }; 10136: 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: ostreambuf_iterator<_CharT> >::__type 10136: copy(istreambuf_iterator<_CharT> __first, 10136: istreambuf_iterator<_CharT> __last, 10136: ostreambuf_iterator<_CharT> __result) 10136: { 10136: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) 10136: { 10136: bool __ineof; 10136: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); 10136: if (!__ineof) 10136: __result._M_failed = true; 10136: } 10136: return __result; 10136: } 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: ostreambuf_iterator<_CharT> >::__type 10136: __copy_move_a2(_CharT* __first, _CharT* __last, 10136: ostreambuf_iterator<_CharT> __result) 10136: { 10136: const streamsize __num = __last - __first; 10136: if (__num > 0) 10136: __result._M_put(__first, __num); 10136: return __result; 10136: } 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: ostreambuf_iterator<_CharT> >::__type 10136: __copy_move_a2(const _CharT* __first, const _CharT* __last, 10136: ostreambuf_iterator<_CharT> __result) 10136: { 10136: const streamsize __num = __last - __first; 10136: if (__num > 0) 10136: __result._M_put(__first, __num); 10136: return __result; 10136: } 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: _CharT*>::__type 10136: __copy_move_a2(istreambuf_iterator<_CharT> __first, 10136: istreambuf_iterator<_CharT> __last, _CharT* __result) 10136: { 10136: typedef istreambuf_iterator<_CharT> __is_iterator_type; 10136: typedef typename __is_iterator_type::traits_type traits_type; 10136: typedef typename __is_iterator_type::streambuf_type streambuf_type; 10136: typedef typename traits_type::int_type int_type; 10136: 10136: if (__first._M_sbuf && !__last._M_sbuf) 10136: { 10136: streambuf_type* __sb = __first._M_sbuf; 10136: int_type __c = __sb->sgetc(); 10136: while (!traits_type::eq_int_type(__c, traits_type::eof())) 10136: { 10136: const streamsize __n = __sb->egptr() - __sb->gptr(); 10136: if (__n > 1) 10136: { 10136: traits_type::copy(__result, __sb->gptr(), __n); 10136: __sb->__safe_gbump(__n); 10136: __result += __n; 10136: __c = __sb->underflow(); 10136: } 10136: else 10136: { 10136: *__result++ = traits_type::to_char_type(__c); 10136: __c = __sb->snextc(); 10136: } 10136: } 10136: } 10136: return __result; 10136: } 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: istreambuf_iterator<_CharT> >::__type 10136: find(istreambuf_iterator<_CharT> __first, 10136: istreambuf_iterator<_CharT> __last, const _CharT& __val) 10136: { 10136: typedef istreambuf_iterator<_CharT> __is_iterator_type; 10136: typedef typename __is_iterator_type::traits_type traits_type; 10136: typedef typename __is_iterator_type::streambuf_type streambuf_type; 10136: typedef typename traits_type::int_type int_type; 10136: const int_type __eof = traits_type::eof(); 10136: 10136: if (__first._M_sbuf && !__last._M_sbuf) 10136: { 10136: const int_type __ival = traits_type::to_int_type(__val); 10136: streambuf_type* __sb = __first._M_sbuf; 10136: int_type __c = __sb->sgetc(); 10136: while (!traits_type::eq_int_type(__c, __eof) 10136: && !traits_type::eq_int_type(__c, __ival)) 10136: { 10136: streamsize __n = __sb->egptr() - __sb->gptr(); 10136: if (__n > 1) 10136: { 10136: const _CharT* __p = traits_type::find(__sb->gptr(), 10136: __n, __val); 10136: if (__p) 10136: __n = __p - __sb->gptr(); 10136: __sb->__safe_gbump(__n); 10136: __c = __sb->sgetc(); 10136: } 10136: else 10136: __c = __sb->snextc(); 10136: } 10136: 10136: __first._M_c = __eof; 10136: } 10136: 10136: return __first; 10136: } 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 10136: void>::__type 10136: advance(istreambuf_iterator<_CharT>& __i, _Distance __n) 10136: { 10136: if (__n == 0) 10136: return; 10136: 10136: ; 10136: 10136: 10136: ; 10136: 10136: typedef istreambuf_iterator<_CharT> __is_iterator_type; 10136: typedef typename __is_iterator_type::traits_type traits_type; 10136: typedef typename __is_iterator_type::streambuf_type streambuf_type; 10136: typedef typename traits_type::int_type int_type; 10136: const int_type __eof = traits_type::eof(); 10136: 10136: streambuf_type* __sb = __i._M_sbuf; 10136: while (__n > 0) 10136: { 10136: streamsize __size = __sb->egptr() - __sb->gptr(); 10136: if (__size > __n) 10136: { 10136: __sb->__safe_gbump(__n); 10136: break; 10136: } 10136: 10136: __sb->__safe_gbump(__size); 10136: __n -= __size; 10136: if (traits_type::eq_int_type(__sb->underflow(), __eof)) 10136: { 10136: 10136: 10136: ; 10136: break; 10136: } 10136: } 10136: 10136: __i._M_c = __eof; 10136: } 10136: 10136: 10136: 10136: 10136: } 10136: # 49 "/usr/include/c++/8/bits/locale_facets.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 71 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: template 10136: void 10136: __convert_to_v(const char*, _Tp&, ios_base::iostate&, 10136: const __c_locale&) throw(); 10136: 10136: 10136: template<> 10136: void 10136: __convert_to_v(const char*, float&, ios_base::iostate&, 10136: const __c_locale&) throw(); 10136: 10136: template<> 10136: void 10136: __convert_to_v(const char*, double&, ios_base::iostate&, 10136: const __c_locale&) throw(); 10136: 10136: template<> 10136: void 10136: __convert_to_v(const char*, long double&, ios_base::iostate&, 10136: const __c_locale&) throw(); 10136: 10136: 10136: 10136: template 10136: struct __pad 10136: { 10136: static void 10136: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, 10136: const _CharT* __olds, streamsize __newlen, streamsize __oldlen); 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _CharT* 10136: __add_grouping(_CharT* __s, _CharT __sep, 10136: const char* __gbeg, size_t __gsize, 10136: const _CharT* __first, const _CharT* __last); 10136: 10136: 10136: 10136: 10136: template 10136: inline 10136: ostreambuf_iterator<_CharT> 10136: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) 10136: { 10136: __s._M_put(__ws, __len); 10136: return __s; 10136: } 10136: 10136: 10136: template 10136: inline 10136: _OutIter 10136: __write(_OutIter __s, const _CharT* __ws, int __len) 10136: { 10136: for (int __j = 0; __j < __len; __j++, ++__s) 10136: *__s = __ws[__j]; 10136: return __s; 10136: } 10136: # 149 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: template 10136: class __ctype_abstract_base : public locale::facet, public ctype_base 10136: { 10136: public: 10136: 10136: 10136: typedef _CharT char_type; 10136: # 168 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: bool 10136: is(mask __m, char_type __c) const 10136: { return this->do_is(__m, __c); } 10136: # 185 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: is(const char_type *__lo, const char_type *__hi, mask *__vec) const 10136: { return this->do_is(__lo, __hi, __vec); } 10136: # 201 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const 10136: { return this->do_scan_is(__m, __lo, __hi); } 10136: # 217 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const 10136: { return this->do_scan_not(__m, __lo, __hi); } 10136: # 231 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char_type 10136: toupper(char_type __c) const 10136: { return this->do_toupper(__c); } 10136: # 246 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: toupper(char_type *__lo, const char_type* __hi) const 10136: { return this->do_toupper(__lo, __hi); } 10136: # 260 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char_type 10136: tolower(char_type __c) const 10136: { return this->do_tolower(__c); } 10136: # 275 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: tolower(char_type* __lo, const char_type* __hi) const 10136: { return this->do_tolower(__lo, __hi); } 10136: # 292 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char_type 10136: widen(char __c) const 10136: { return this->do_widen(__c); } 10136: # 311 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char* 10136: widen(const char* __lo, const char* __hi, char_type* __to) const 10136: { return this->do_widen(__lo, __hi, __to); } 10136: # 330 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char 10136: narrow(char_type __c, char __dfault) const 10136: { return this->do_narrow(__c, __dfault); } 10136: # 352 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: narrow(const char_type* __lo, const char_type* __hi, 10136: char __dfault, char* __to) const 10136: { return this->do_narrow(__lo, __hi, __dfault, __to); } 10136: 10136: protected: 10136: explicit 10136: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } 10136: 10136: virtual 10136: ~__ctype_abstract_base() { } 10136: # 377 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual bool 10136: do_is(mask __m, char_type __c) const = 0; 10136: # 396 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_is(const char_type* __lo, const char_type* __hi, 10136: mask* __vec) const = 0; 10136: # 415 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_scan_is(mask __m, const char_type* __lo, 10136: const char_type* __hi) const = 0; 10136: # 434 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_scan_not(mask __m, const char_type* __lo, 10136: const char_type* __hi) const = 0; 10136: # 452 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_toupper(char_type __c) const = 0; 10136: # 469 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_toupper(char_type* __lo, const char_type* __hi) const = 0; 10136: # 485 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_tolower(char_type __c) const = 0; 10136: # 502 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_tolower(char_type* __lo, const char_type* __hi) const = 0; 10136: # 521 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_widen(char __c) const = 0; 10136: # 542 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char* 10136: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; 10136: # 563 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char 10136: do_narrow(char_type __c, char __dfault) const = 0; 10136: # 588 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_narrow(const char_type* __lo, const char_type* __hi, 10136: char __dfault, char* __to) const = 0; 10136: }; 10136: # 611 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: template 10136: class ctype : public __ctype_abstract_base<_CharT> 10136: { 10136: public: 10136: 10136: typedef _CharT char_type; 10136: typedef typename __ctype_abstract_base<_CharT>::mask mask; 10136: 10136: 10136: static locale::id id; 10136: 10136: explicit 10136: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } 10136: 10136: protected: 10136: virtual 10136: ~ctype(); 10136: 10136: virtual bool 10136: do_is(mask __m, char_type __c) const; 10136: 10136: virtual const char_type* 10136: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 10136: 10136: virtual const char_type* 10136: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 10136: 10136: virtual const char_type* 10136: do_scan_not(mask __m, const char_type* __lo, 10136: const char_type* __hi) const; 10136: 10136: virtual char_type 10136: do_toupper(char_type __c) const; 10136: 10136: virtual const char_type* 10136: do_toupper(char_type* __lo, const char_type* __hi) const; 10136: 10136: virtual char_type 10136: do_tolower(char_type __c) const; 10136: 10136: virtual const char_type* 10136: do_tolower(char_type* __lo, const char_type* __hi) const; 10136: 10136: virtual char_type 10136: do_widen(char __c) const; 10136: 10136: virtual const char* 10136: do_widen(const char* __lo, const char* __hi, char_type* __dest) const; 10136: 10136: virtual char 10136: do_narrow(char_type, char __dfault) const; 10136: 10136: virtual const char_type* 10136: do_narrow(const char_type* __lo, const char_type* __hi, 10136: char __dfault, char* __to) const; 10136: }; 10136: 10136: template 10136: locale::id ctype<_CharT>::id; 10136: # 680 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: template<> 10136: class ctype : public locale::facet, public ctype_base 10136: { 10136: public: 10136: 10136: 10136: typedef char char_type; 10136: 10136: protected: 10136: 10136: __c_locale _M_c_locale_ctype; 10136: bool _M_del; 10136: __to_type _M_toupper; 10136: __to_type _M_tolower; 10136: const mask* _M_table; 10136: mutable char _M_widen_ok; 10136: mutable char _M_widen[1 + static_cast(-1)]; 10136: mutable char _M_narrow[1 + static_cast(-1)]; 10136: mutable char _M_narrow_ok; 10136: 10136: 10136: public: 10136: 10136: static locale::id id; 10136: 10136: static const size_t table_size = 1 + static_cast(-1); 10136: # 717 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: explicit 10136: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); 10136: # 730 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: explicit 10136: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, 10136: size_t __refs = 0); 10136: # 743 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: inline bool 10136: is(mask __m, char __c) const; 10136: # 758 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: inline const char* 10136: is(const char* __lo, const char* __hi, mask* __vec) const; 10136: # 772 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: inline const char* 10136: scan_is(mask __m, const char* __lo, const char* __hi) const; 10136: # 786 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: inline const char* 10136: scan_not(mask __m, const char* __lo, const char* __hi) const; 10136: # 801 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char_type 10136: toupper(char_type __c) const 10136: { return this->do_toupper(__c); } 10136: # 818 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: toupper(char_type *__lo, const char_type* __hi) const 10136: { return this->do_toupper(__lo, __hi); } 10136: # 834 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char_type 10136: tolower(char_type __c) const 10136: { return this->do_tolower(__c); } 10136: # 851 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: tolower(char_type* __lo, const char_type* __hi) const 10136: { return this->do_tolower(__lo, __hi); } 10136: # 871 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char_type 10136: widen(char __c) const 10136: { 10136: if (_M_widen_ok) 10136: return _M_widen[static_cast(__c)]; 10136: this->_M_widen_init(); 10136: return this->do_widen(__c); 10136: } 10136: # 898 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char* 10136: widen(const char* __lo, const char* __hi, char_type* __to) const 10136: { 10136: if (_M_widen_ok == 1) 10136: { 10136: __builtin_memcpy(__to, __lo, __hi - __lo); 10136: return __hi; 10136: } 10136: if (!_M_widen_ok) 10136: _M_widen_init(); 10136: return this->do_widen(__lo, __hi, __to); 10136: } 10136: # 929 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char 10136: narrow(char_type __c, char __dfault) const 10136: { 10136: if (_M_narrow[static_cast(__c)]) 10136: return _M_narrow[static_cast(__c)]; 10136: const char __t = do_narrow(__c, __dfault); 10136: if (__t != __dfault) 10136: _M_narrow[static_cast(__c)] = __t; 10136: return __t; 10136: } 10136: # 962 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: const char_type* 10136: narrow(const char_type* __lo, const char_type* __hi, 10136: char __dfault, char* __to) const 10136: { 10136: if (__builtin_expect(_M_narrow_ok == 1, true)) 10136: { 10136: __builtin_memcpy(__to, __lo, __hi - __lo); 10136: return __hi; 10136: } 10136: if (!_M_narrow_ok) 10136: _M_narrow_init(); 10136: return this->do_narrow(__lo, __hi, __dfault, __to); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: const mask* 10136: table() const throw() 10136: { return _M_table; } 10136: 10136: 10136: static const mask* 10136: classic_table() throw(); 10136: protected: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual 10136: ~ctype(); 10136: # 1011 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_toupper(char_type __c) const; 10136: # 1028 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_toupper(char_type* __lo, const char_type* __hi) const; 10136: # 1044 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_tolower(char_type __c) const; 10136: # 1061 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_tolower(char_type* __lo, const char_type* __hi) const; 10136: # 1081 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_widen(char __c) const 10136: { return __c; } 10136: # 1104 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char* 10136: do_widen(const char* __lo, const char* __hi, char_type* __to) const 10136: { 10136: __builtin_memcpy(__to, __lo, __hi - __lo); 10136: return __hi; 10136: } 10136: # 1130 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char 10136: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const 10136: { return __c; } 10136: # 1156 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_narrow(const char_type* __lo, const char_type* __hi, 10136: char __dfault __attribute__((__unused__)), char* __to) const 10136: { 10136: __builtin_memcpy(__to, __lo, __hi - __lo); 10136: return __hi; 10136: } 10136: 10136: private: 10136: void _M_narrow_init() const; 10136: void _M_widen_init() const; 10136: }; 10136: # 1181 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: template<> 10136: class ctype : public __ctype_abstract_base 10136: { 10136: public: 10136: 10136: 10136: typedef wchar_t char_type; 10136: typedef wctype_t __wmask_type; 10136: 10136: protected: 10136: __c_locale _M_c_locale_ctype; 10136: 10136: 10136: bool _M_narrow_ok; 10136: char _M_narrow[128]; 10136: wint_t _M_widen[1 + static_cast(-1)]; 10136: 10136: 10136: mask _M_bit[16]; 10136: __wmask_type _M_wmask[16]; 10136: 10136: public: 10136: 10136: 10136: static locale::id id; 10136: # 1214 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: explicit 10136: ctype(size_t __refs = 0); 10136: # 1225 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: explicit 10136: ctype(__c_locale __cloc, size_t __refs = 0); 10136: 10136: protected: 10136: __wmask_type 10136: _M_convert_to_wmask(const mask __m) const throw(); 10136: 10136: 10136: virtual 10136: ~ctype(); 10136: # 1249 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual bool 10136: do_is(mask __m, char_type __c) const; 10136: # 1268 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 10136: # 1286 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 10136: # 1304 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_scan_not(mask __m, const char_type* __lo, 10136: const char_type* __hi) const; 10136: # 1321 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_toupper(char_type __c) const; 10136: # 1338 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_toupper(char_type* __lo, const char_type* __hi) const; 10136: # 1354 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_tolower(char_type __c) const; 10136: # 1371 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_tolower(char_type* __lo, const char_type* __hi) const; 10136: # 1391 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_widen(char __c) const; 10136: # 1413 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char* 10136: do_widen(const char* __lo, const char* __hi, char_type* __to) const; 10136: # 1436 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char 10136: do_narrow(char_type __c, char __dfault) const; 10136: # 1462 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual const char_type* 10136: do_narrow(const char_type* __lo, const char_type* __hi, 10136: char __dfault, char* __to) const; 10136: 10136: 10136: void 10136: _M_initialize_ctype() throw(); 10136: }; 10136: 10136: 10136: 10136: template 10136: class ctype_byname : public ctype<_CharT> 10136: { 10136: public: 10136: typedef typename ctype<_CharT>::mask mask; 10136: 10136: explicit 10136: ctype_byname(const char* __s, size_t __refs = 0); 10136: 10136: 10136: explicit 10136: ctype_byname(const string& __s, size_t __refs = 0) 10136: : ctype_byname(__s.c_str(), __refs) { } 10136: 10136: 10136: protected: 10136: virtual 10136: ~ctype_byname() { } 10136: }; 10136: 10136: 10136: template<> 10136: class ctype_byname : public ctype 10136: { 10136: public: 10136: explicit 10136: ctype_byname(const char* __s, size_t __refs = 0); 10136: 10136: 10136: explicit 10136: ctype_byname(const string& __s, size_t __refs = 0); 10136: 10136: 10136: protected: 10136: virtual 10136: ~ctype_byname(); 10136: }; 10136: 10136: 10136: template<> 10136: class ctype_byname : public ctype 10136: { 10136: public: 10136: explicit 10136: ctype_byname(const char* __s, size_t __refs = 0); 10136: 10136: 10136: explicit 10136: ctype_byname(const string& __s, size_t __refs = 0); 10136: 10136: 10136: protected: 10136: virtual 10136: ~ctype_byname(); 10136: }; 10136: 10136: 10136: 10136: } 10136: 10136: 10136: # 1 "/usr/include/arm-linux-gnueabihf/c++/8/bits/ctype_inline.h" 1 3 10136: # 37 "/usr/include/arm-linux-gnueabihf/c++/8/bits/ctype_inline.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: bool 10136: ctype:: 10136: is(mask __m, char __c) const 10136: { return _M_table[static_cast(__c)] & __m; } 10136: 10136: const char* 10136: ctype:: 10136: is(const char* __low, const char* __high, mask* __vec) const 10136: { 10136: while (__low < __high) 10136: *__vec++ = _M_table[static_cast(*__low++)]; 10136: return __high; 10136: } 10136: 10136: const char* 10136: ctype:: 10136: scan_is(mask __m, const char* __low, const char* __high) const 10136: { 10136: while (__low < __high 10136: && !(_M_table[static_cast(*__low)] & __m)) 10136: ++__low; 10136: return __low; 10136: } 10136: 10136: const char* 10136: ctype:: 10136: scan_not(mask __m, const char* __low, const char* __high) const 10136: { 10136: while (__low < __high 10136: && (_M_table[static_cast(*__low)] & __m) != 0) 10136: ++__low; 10136: return __low; 10136: } 10136: 10136: 10136: } 10136: # 1535 "/usr/include/c++/8/bits/locale_facets.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: class __num_base 10136: { 10136: public: 10136: 10136: 10136: enum 10136: { 10136: _S_ominus, 10136: _S_oplus, 10136: _S_ox, 10136: _S_oX, 10136: _S_odigits, 10136: _S_odigits_end = _S_odigits + 16, 10136: _S_oudigits = _S_odigits_end, 10136: _S_oudigits_end = _S_oudigits + 16, 10136: _S_oe = _S_odigits + 14, 10136: _S_oE = _S_oudigits + 14, 10136: _S_oend = _S_oudigits_end 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: static const char* _S_atoms_out; 10136: 10136: 10136: 10136: static const char* _S_atoms_in; 10136: 10136: enum 10136: { 10136: _S_iminus, 10136: _S_iplus, 10136: _S_ix, 10136: _S_iX, 10136: _S_izero, 10136: _S_ie = _S_izero + 14, 10136: _S_iE = _S_izero + 20, 10136: _S_iend = 26 10136: }; 10136: 10136: 10136: 10136: static void 10136: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); 10136: }; 10136: 10136: template 10136: struct __numpunct_cache : public locale::facet 10136: { 10136: const char* _M_grouping; 10136: size_t _M_grouping_size; 10136: bool _M_use_grouping; 10136: const _CharT* _M_truename; 10136: size_t _M_truename_size; 10136: const _CharT* _M_falsename; 10136: size_t _M_falsename_size; 10136: _CharT _M_decimal_point; 10136: _CharT _M_thousands_sep; 10136: 10136: 10136: 10136: 10136: 10136: _CharT _M_atoms_out[__num_base::_S_oend]; 10136: 10136: 10136: 10136: 10136: 10136: _CharT _M_atoms_in[__num_base::_S_iend]; 10136: 10136: bool _M_allocated; 10136: 10136: __numpunct_cache(size_t __refs = 0) 10136: : facet(__refs), _M_grouping(0), _M_grouping_size(0), 10136: _M_use_grouping(false), 10136: _M_truename(0), _M_truename_size(0), _M_falsename(0), 10136: _M_falsename_size(0), _M_decimal_point(_CharT()), 10136: _M_thousands_sep(_CharT()), _M_allocated(false) 10136: { } 10136: 10136: ~__numpunct_cache(); 10136: 10136: void 10136: _M_cache(const locale& __loc); 10136: 10136: private: 10136: __numpunct_cache& 10136: operator=(const __numpunct_cache&); 10136: 10136: explicit 10136: __numpunct_cache(const __numpunct_cache&); 10136: }; 10136: 10136: template 10136: __numpunct_cache<_CharT>::~__numpunct_cache() 10136: { 10136: if (_M_allocated) 10136: { 10136: delete [] _M_grouping; 10136: delete [] _M_truename; 10136: delete [] _M_falsename; 10136: } 10136: } 10136: 10136: namespace __cxx11 { 10136: # 1665 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: template 10136: class numpunct : public locale::facet 10136: { 10136: public: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef basic_string<_CharT> string_type; 10136: 10136: typedef __numpunct_cache<_CharT> __cache_type; 10136: 10136: protected: 10136: __cache_type* _M_data; 10136: 10136: public: 10136: 10136: static locale::id id; 10136: 10136: 10136: 10136: 10136: 10136: 10136: explicit 10136: numpunct(size_t __refs = 0) 10136: : facet(__refs), _M_data(0) 10136: { _M_initialize_numpunct(); } 10136: # 1703 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: explicit 10136: numpunct(__cache_type* __cache, size_t __refs = 0) 10136: : facet(__refs), _M_data(__cache) 10136: { _M_initialize_numpunct(); } 10136: # 1717 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: explicit 10136: numpunct(__c_locale __cloc, size_t __refs = 0) 10136: : facet(__refs), _M_data(0) 10136: { _M_initialize_numpunct(__cloc); } 10136: # 1731 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char_type 10136: decimal_point() const 10136: { return this->do_decimal_point(); } 10136: # 1744 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: char_type 10136: thousands_sep() const 10136: { return this->do_thousands_sep(); } 10136: # 1775 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: string 10136: grouping() const 10136: { return this->do_grouping(); } 10136: # 1788 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: string_type 10136: truename() const 10136: { return this->do_truename(); } 10136: # 1801 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: string_type 10136: falsename() const 10136: { return this->do_falsename(); } 10136: 10136: protected: 10136: 10136: virtual 10136: ~numpunct(); 10136: # 1818 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_decimal_point() const 10136: { return _M_data->_M_decimal_point; } 10136: # 1830 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual char_type 10136: do_thousands_sep() const 10136: { return _M_data->_M_thousands_sep; } 10136: # 1843 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual string 10136: do_grouping() const 10136: { return _M_data->_M_grouping; } 10136: # 1856 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual string_type 10136: do_truename() const 10136: { return _M_data->_M_truename; } 10136: # 1869 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual string_type 10136: do_falsename() const 10136: { return _M_data->_M_falsename; } 10136: 10136: 10136: void 10136: _M_initialize_numpunct(__c_locale __cloc = 0); 10136: }; 10136: 10136: template 10136: locale::id numpunct<_CharT>::id; 10136: 10136: template<> 10136: numpunct::~numpunct(); 10136: 10136: template<> 10136: void 10136: numpunct::_M_initialize_numpunct(__c_locale __cloc); 10136: 10136: 10136: template<> 10136: numpunct::~numpunct(); 10136: 10136: template<> 10136: void 10136: numpunct::_M_initialize_numpunct(__c_locale __cloc); 10136: 10136: 10136: 10136: template 10136: class numpunct_byname : public numpunct<_CharT> 10136: { 10136: public: 10136: typedef _CharT char_type; 10136: typedef basic_string<_CharT> string_type; 10136: 10136: explicit 10136: numpunct_byname(const char* __s, size_t __refs = 0) 10136: : numpunct<_CharT>(__refs) 10136: { 10136: if (__builtin_strcmp(__s, "C") != 0 10136: && __builtin_strcmp(__s, "POSIX") != 0) 10136: { 10136: __c_locale __tmp; 10136: this->_S_create_c_locale(__tmp, __s); 10136: this->_M_initialize_numpunct(__tmp); 10136: this->_S_destroy_c_locale(__tmp); 10136: } 10136: } 10136: 10136: 10136: explicit 10136: numpunct_byname(const string& __s, size_t __refs = 0) 10136: : numpunct_byname(__s.c_str(), __refs) { } 10136: 10136: 10136: protected: 10136: virtual 10136: ~numpunct_byname() { } 10136: }; 10136: 10136: } 10136: 10136: 10136: # 1947 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: template 10136: class num_get : public locale::facet 10136: { 10136: public: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef _InIter iter_type; 10136: 10136: 10136: 10136: static locale::id id; 10136: # 1968 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: explicit 10136: num_get(size_t __refs = 0) : facet(__refs) { } 10136: # 1994 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, bool& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: # 2031 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, long& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, unsigned short& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, unsigned int& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, unsigned long& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: 10136: 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, long long& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, unsigned long long& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: # 2091 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, float& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, double& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, long double& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: # 2134 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: iter_type 10136: get(iter_type __in, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, void*& __v) const 10136: { return this->do_get(__in, __end, __io, __err, __v); } 10136: 10136: protected: 10136: 10136: virtual ~num_get() { } 10136: 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: iter_type 10136: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, 10136: string&) const; 10136: 10136: template 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: iter_type 10136: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, 10136: _ValueT&) const; 10136: 10136: template 10136: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type 10136: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const 10136: { 10136: int __ret = -1; 10136: if (__len <= 10) 10136: { 10136: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) 10136: __ret = __c - _CharT2('0'); 10136: } 10136: else 10136: { 10136: if (__c >= _CharT2('0') && __c <= _CharT2('9')) 10136: __ret = __c - _CharT2('0'); 10136: else if (__c >= _CharT2('a') && __c <= _CharT2('f')) 10136: __ret = 10 + (__c - _CharT2('a')); 10136: else if (__c >= _CharT2('A') && __c <= _CharT2('F')) 10136: __ret = 10 + (__c - _CharT2('A')); 10136: } 10136: return __ret; 10136: } 10136: 10136: template 10136: typename __gnu_cxx::__enable_if::__value, 10136: int>::__type 10136: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const 10136: { 10136: int __ret = -1; 10136: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); 10136: if (__q) 10136: { 10136: __ret = __q - __zero; 10136: if (__ret > 15) 10136: __ret -= 6; 10136: } 10136: return __ret; 10136: } 10136: # 2207 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual iter_type 10136: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; 10136: 10136: virtual iter_type 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, long& __v) const 10136: { return _M_extract_int(__beg, __end, __io, __err, __v); } 10136: 10136: virtual iter_type 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, unsigned short& __v) const 10136: { return _M_extract_int(__beg, __end, __io, __err, __v); } 10136: 10136: virtual iter_type 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, unsigned int& __v) const 10136: { return _M_extract_int(__beg, __end, __io, __err, __v); } 10136: 10136: virtual iter_type 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, unsigned long& __v) const 10136: { return _M_extract_int(__beg, __end, __io, __err, __v); } 10136: 10136: 10136: virtual iter_type 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, long long& __v) const 10136: { return _M_extract_int(__beg, __end, __io, __err, __v); } 10136: 10136: virtual iter_type 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, unsigned long long& __v) const 10136: { return _M_extract_int(__beg, __end, __io, __err, __v); } 10136: 10136: 10136: virtual iter_type 10136: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; 10136: 10136: virtual iter_type 10136: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 10136: double&) const; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual iter_type 10136: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 10136: long double&) const; 10136: 10136: 10136: virtual iter_type 10136: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; 10136: # 2270 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: }; 10136: 10136: template 10136: locale::id num_get<_CharT, _InIter>::id; 10136: # 2288 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: template 10136: class num_put : public locale::facet 10136: { 10136: public: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef _OutIter iter_type; 10136: 10136: 10136: 10136: static locale::id id; 10136: # 2309 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: explicit 10136: num_put(size_t __refs = 0) : facet(__refs) { } 10136: # 2327 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: iter_type 10136: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 10136: { return this->do_put(__s, __io, __fill, __v); } 10136: # 2369 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: iter_type 10136: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 10136: { return this->do_put(__s, __io, __fill, __v); } 10136: 10136: iter_type 10136: put(iter_type __s, ios_base& __io, char_type __fill, 10136: unsigned long __v) const 10136: { return this->do_put(__s, __io, __fill, __v); } 10136: 10136: 10136: iter_type 10136: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const 10136: { return this->do_put(__s, __io, __fill, __v); } 10136: 10136: iter_type 10136: put(iter_type __s, ios_base& __io, char_type __fill, 10136: unsigned long long __v) const 10136: { return this->do_put(__s, __io, __fill, __v); } 10136: # 2432 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: iter_type 10136: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 10136: { return this->do_put(__s, __io, __fill, __v); } 10136: 10136: iter_type 10136: put(iter_type __s, ios_base& __io, char_type __fill, 10136: long double __v) const 10136: { return this->do_put(__s, __io, __fill, __v); } 10136: # 2457 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: iter_type 10136: put(iter_type __s, ios_base& __io, char_type __fill, 10136: const void* __v) const 10136: { return this->do_put(__s, __io, __fill, __v); } 10136: 10136: protected: 10136: template 10136: iter_type 10136: _M_insert_float(iter_type, ios_base& __io, char_type __fill, 10136: char __mod, _ValueT __v) const; 10136: 10136: void 10136: _M_group_float(const char* __grouping, size_t __grouping_size, 10136: char_type __sep, const char_type* __p, char_type* __new, 10136: char_type* __cs, int& __len) const; 10136: 10136: template 10136: iter_type 10136: _M_insert_int(iter_type, ios_base& __io, char_type __fill, 10136: _ValueT __v) const; 10136: 10136: void 10136: _M_group_int(const char* __grouping, size_t __grouping_size, 10136: char_type __sep, ios_base& __io, char_type* __new, 10136: char_type* __cs, int& __len) const; 10136: 10136: void 10136: _M_pad(char_type __fill, streamsize __w, ios_base& __io, 10136: char_type* __new, const char_type* __cs, int& __len) const; 10136: 10136: 10136: virtual 10136: ~num_put() { } 10136: # 2505 "/usr/include/c++/8/bits/locale_facets.h" 3 10136: virtual iter_type 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; 10136: 10136: virtual iter_type 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 10136: { return _M_insert_int(__s, __io, __fill, __v); } 10136: 10136: virtual iter_type 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, 10136: unsigned long __v) const 10136: { return _M_insert_int(__s, __io, __fill, __v); } 10136: 10136: 10136: virtual iter_type 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, 10136: long long __v) const 10136: { return _M_insert_int(__s, __io, __fill, __v); } 10136: 10136: virtual iter_type 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, 10136: unsigned long long __v) const 10136: { return _M_insert_int(__s, __io, __fill, __v); } 10136: 10136: 10136: virtual iter_type 10136: do_put(iter_type, ios_base&, char_type, double) const; 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual iter_type 10136: do_put(iter_type, ios_base&, char_type, long double) const; 10136: 10136: 10136: virtual iter_type 10136: do_put(iter_type, ios_base&, char_type, const void*) const; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: }; 10136: 10136: template 10136: locale::id num_put<_CharT, _OutIter>::id; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool 10136: isspace(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::space, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: isprint(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::print, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: iscntrl(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::cntrl, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: isupper(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::upper, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: islower(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::lower, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: isalpha(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::alpha, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: isdigit(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::digit, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: ispunct(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::punct, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: isxdigit(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::xdigit, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: isalnum(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::alnum, __c); } 10136: 10136: 10136: template 10136: inline bool 10136: isgraph(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::graph, __c); } 10136: 10136: 10136: 10136: template 10136: inline bool 10136: isblank(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).is(ctype_base::blank, __c); } 10136: 10136: 10136: 10136: template 10136: inline _CharT 10136: toupper(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).toupper(__c); } 10136: 10136: 10136: template 10136: inline _CharT 10136: tolower(_CharT __c, const locale& __loc) 10136: { return use_facet >(__loc).tolower(__c); } 10136: 10136: 10136: } 10136: 10136: # 1 "/usr/include/c++/8/bits/locale_facets.tcc" 1 3 10136: # 33 "/usr/include/c++/8/bits/locale_facets.tcc" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/locale_facets.tcc" 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: template 10136: struct __use_cache 10136: { 10136: const _Facet* 10136: operator() (const locale& __loc) const; 10136: }; 10136: 10136: 10136: template 10136: struct __use_cache<__numpunct_cache<_CharT> > 10136: { 10136: const __numpunct_cache<_CharT>* 10136: operator() (const locale& __loc) const 10136: { 10136: const size_t __i = numpunct<_CharT>::id._M_id(); 10136: const locale::facet** __caches = __loc._M_impl->_M_caches; 10136: if (!__caches[__i]) 10136: { 10136: __numpunct_cache<_CharT>* __tmp = 0; 10136: try 10136: { 10136: __tmp = new __numpunct_cache<_CharT>; 10136: __tmp->_M_cache(__loc); 10136: } 10136: catch(...) 10136: { 10136: delete __tmp; 10136: throw; 10136: } 10136: __loc._M_impl->_M_install_cache(__tmp, __i); 10136: } 10136: return static_cast*>(__caches[__i]); 10136: } 10136: }; 10136: 10136: template 10136: void 10136: __numpunct_cache<_CharT>::_M_cache(const locale& __loc) 10136: { 10136: const numpunct<_CharT>& __np = use_facet >(__loc); 10136: 10136: char* __grouping = 0; 10136: _CharT* __truename = 0; 10136: _CharT* __falsename = 0; 10136: try 10136: { 10136: const string& __g = __np.grouping(); 10136: _M_grouping_size = __g.size(); 10136: __grouping = new char[_M_grouping_size]; 10136: __g.copy(__grouping, _M_grouping_size); 10136: _M_use_grouping = (_M_grouping_size 10136: && static_cast(__grouping[0]) > 0 10136: && (__grouping[0] 10136: != __gnu_cxx::__numeric_traits::__max)); 10136: 10136: const basic_string<_CharT>& __tn = __np.truename(); 10136: _M_truename_size = __tn.size(); 10136: __truename = new _CharT[_M_truename_size]; 10136: __tn.copy(__truename, _M_truename_size); 10136: 10136: const basic_string<_CharT>& __fn = __np.falsename(); 10136: _M_falsename_size = __fn.size(); 10136: __falsename = new _CharT[_M_falsename_size]; 10136: __fn.copy(__falsename, _M_falsename_size); 10136: 10136: _M_decimal_point = __np.decimal_point(); 10136: _M_thousands_sep = __np.thousands_sep(); 10136: 10136: const ctype<_CharT>& __ct = use_facet >(__loc); 10136: __ct.widen(__num_base::_S_atoms_out, 10136: __num_base::_S_atoms_out 10136: + __num_base::_S_oend, _M_atoms_out); 10136: __ct.widen(__num_base::_S_atoms_in, 10136: __num_base::_S_atoms_in 10136: + __num_base::_S_iend, _M_atoms_in); 10136: 10136: _M_grouping = __grouping; 10136: _M_truename = __truename; 10136: _M_falsename = __falsename; 10136: _M_allocated = true; 10136: } 10136: catch(...) 10136: { 10136: delete [] __grouping; 10136: delete [] __truename; 10136: delete [] __falsename; 10136: throw; 10136: } 10136: } 10136: # 139 "/usr/include/c++/8/bits/locale_facets.tcc" 3 10136: __attribute__ ((__pure__)) bool 10136: __verify_grouping(const char* __grouping, size_t __grouping_size, 10136: const string& __grouping_tmp) throw (); 10136: 10136: 10136: 10136: template 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: _InIter 10136: num_get<_CharT, _InIter>:: 10136: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, 10136: ios_base::iostate& __err, string& __xtrc) const 10136: { 10136: typedef char_traits<_CharT> __traits_type; 10136: typedef __numpunct_cache<_CharT> __cache_type; 10136: __use_cache<__cache_type> __uc; 10136: const locale& __loc = __io._M_getloc(); 10136: const __cache_type* __lc = __uc(__loc); 10136: const _CharT* __lit = __lc->_M_atoms_in; 10136: char_type __c = char_type(); 10136: 10136: 10136: bool __testeof = __beg == __end; 10136: 10136: 10136: if (!__testeof) 10136: { 10136: __c = *__beg; 10136: const bool __plus = __c == __lit[__num_base::_S_iplus]; 10136: if ((__plus || __c == __lit[__num_base::_S_iminus]) 10136: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 10136: && !(__c == __lc->_M_decimal_point)) 10136: { 10136: __xtrc += __plus ? '+' : '-'; 10136: if (++__beg != __end) 10136: __c = *__beg; 10136: else 10136: __testeof = true; 10136: } 10136: } 10136: 10136: 10136: bool __found_mantissa = false; 10136: int __sep_pos = 0; 10136: while (!__testeof) 10136: { 10136: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 10136: || __c == __lc->_M_decimal_point) 10136: break; 10136: else if (__c == __lit[__num_base::_S_izero]) 10136: { 10136: if (!__found_mantissa) 10136: { 10136: __xtrc += '0'; 10136: __found_mantissa = true; 10136: } 10136: ++__sep_pos; 10136: 10136: if (++__beg != __end) 10136: __c = *__beg; 10136: else 10136: __testeof = true; 10136: } 10136: else 10136: break; 10136: } 10136: 10136: 10136: bool __found_dec = false; 10136: bool __found_sci = false; 10136: string __found_grouping; 10136: if (__lc->_M_use_grouping) 10136: __found_grouping.reserve(32); 10136: const char_type* __lit_zero = __lit + __num_base::_S_izero; 10136: 10136: if (!__lc->_M_allocated) 10136: 10136: while (!__testeof) 10136: { 10136: const int __digit = _M_find(__lit_zero, 10, __c); 10136: if (__digit != -1) 10136: { 10136: __xtrc += '0' + __digit; 10136: __found_mantissa = true; 10136: } 10136: else if (__c == __lc->_M_decimal_point 10136: && !__found_dec && !__found_sci) 10136: { 10136: __xtrc += '.'; 10136: __found_dec = true; 10136: } 10136: else if ((__c == __lit[__num_base::_S_ie] 10136: || __c == __lit[__num_base::_S_iE]) 10136: && !__found_sci && __found_mantissa) 10136: { 10136: 10136: __xtrc += 'e'; 10136: __found_sci = true; 10136: 10136: 10136: if (++__beg != __end) 10136: { 10136: __c = *__beg; 10136: const bool __plus = __c == __lit[__num_base::_S_iplus]; 10136: if (__plus || __c == __lit[__num_base::_S_iminus]) 10136: __xtrc += __plus ? '+' : '-'; 10136: else 10136: continue; 10136: } 10136: else 10136: { 10136: __testeof = true; 10136: break; 10136: } 10136: } 10136: else 10136: break; 10136: 10136: if (++__beg != __end) 10136: __c = *__beg; 10136: else 10136: __testeof = true; 10136: } 10136: else 10136: while (!__testeof) 10136: { 10136: 10136: 10136: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 10136: { 10136: if (!__found_dec && !__found_sci) 10136: { 10136: 10136: 10136: if (__sep_pos) 10136: { 10136: __found_grouping += static_cast(__sep_pos); 10136: __sep_pos = 0; 10136: } 10136: else 10136: { 10136: 10136: 10136: __xtrc.clear(); 10136: break; 10136: } 10136: } 10136: else 10136: break; 10136: } 10136: else if (__c == __lc->_M_decimal_point) 10136: { 10136: if (!__found_dec && !__found_sci) 10136: { 10136: 10136: 10136: 10136: if (__found_grouping.size()) 10136: __found_grouping += static_cast(__sep_pos); 10136: __xtrc += '.'; 10136: __found_dec = true; 10136: } 10136: else 10136: break; 10136: } 10136: else 10136: { 10136: const char_type* __q = 10136: __traits_type::find(__lit_zero, 10, __c); 10136: if (__q) 10136: { 10136: __xtrc += '0' + (__q - __lit_zero); 10136: __found_mantissa = true; 10136: ++__sep_pos; 10136: } 10136: else if ((__c == __lit[__num_base::_S_ie] 10136: || __c == __lit[__num_base::_S_iE]) 10136: && !__found_sci && __found_mantissa) 10136: { 10136: 10136: if (__found_grouping.size() && !__found_dec) 10136: __found_grouping += static_cast(__sep_pos); 10136: __xtrc += 'e'; 10136: __found_sci = true; 10136: 10136: 10136: if (++__beg != __end) 10136: { 10136: __c = *__beg; 10136: const bool __plus = __c == __lit[__num_base::_S_iplus]; 10136: if ((__plus || __c == __lit[__num_base::_S_iminus]) 10136: && !(__lc->_M_use_grouping 10136: && __c == __lc->_M_thousands_sep) 10136: && !(__c == __lc->_M_decimal_point)) 10136: __xtrc += __plus ? '+' : '-'; 10136: else 10136: continue; 10136: } 10136: else 10136: { 10136: __testeof = true; 10136: break; 10136: } 10136: } 10136: else 10136: break; 10136: } 10136: 10136: if (++__beg != __end) 10136: __c = *__beg; 10136: else 10136: __testeof = true; 10136: } 10136: 10136: 10136: 10136: if (__found_grouping.size()) 10136: { 10136: 10136: if (!__found_dec && !__found_sci) 10136: __found_grouping += static_cast(__sep_pos); 10136: 10136: if (!std::__verify_grouping(__lc->_M_grouping, 10136: __lc->_M_grouping_size, 10136: __found_grouping)) 10136: __err = ios_base::failbit; 10136: } 10136: 10136: return __beg; 10136: } 10136: 10136: template 10136: template 10136: __attribute ((__abi_tag__ ("cxx11"))) 10136: _InIter 10136: num_get<_CharT, _InIter>:: 10136: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, 10136: ios_base::iostate& __err, _ValueT& __v) const 10136: { 10136: typedef char_traits<_CharT> __traits_type; 10136: using __gnu_cxx::__add_unsigned; 10136: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 10136: typedef __numpunct_cache<_CharT> __cache_type; 10136: __use_cache<__cache_type> __uc; 10136: const locale& __loc = __io._M_getloc(); 10136: const __cache_type* __lc = __uc(__loc); 10136: const _CharT* __lit = __lc->_M_atoms_in; 10136: char_type __c = char_type(); 10136: 10136: 10136: const ios_base::fmtflags __basefield = __io.flags() 10136: & ios_base::basefield; 10136: const bool __oct = __basefield == ios_base::oct; 10136: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); 10136: 10136: 10136: bool __testeof = __beg == __end; 10136: 10136: 10136: bool __negative = false; 10136: if (!__testeof) 10136: { 10136: __c = *__beg; 10136: __negative = __c == __lit[__num_base::_S_iminus]; 10136: if ((__negative || __c == __lit[__num_base::_S_iplus]) 10136: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 10136: && !(__c == __lc->_M_decimal_point)) 10136: { 10136: if (++__beg != __end) 10136: __c = *__beg; 10136: else 10136: __testeof = true; 10136: } 10136: } 10136: 10136: 10136: 10136: bool __found_zero = false; 10136: int __sep_pos = 0; 10136: while (!__testeof) 10136: { 10136: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 10136: || __c == __lc->_M_decimal_point) 10136: break; 10136: else if (__c == __lit[__num_base::_S_izero] 10136: && (!__found_zero || __base == 10)) 10136: { 10136: __found_zero = true; 10136: ++__sep_pos; 10136: if (__basefield == 0) 10136: __base = 8; 10136: if (__base == 8) 10136: __sep_pos = 0; 10136: } 10136: else if (__found_zero 10136: && (__c == __lit[__num_base::_S_ix] 10136: || __c == __lit[__num_base::_S_iX])) 10136: { 10136: if (__basefield == 0) 10136: __base = 16; 10136: if (__base == 16) 10136: { 10136: __found_zero = false; 10136: __sep_pos = 0; 10136: } 10136: else 10136: break; 10136: } 10136: else 10136: break; 10136: 10136: if (++__beg != __end) 10136: { 10136: __c = *__beg; 10136: if (!__found_zero) 10136: break; 10136: } 10136: else 10136: __testeof = true; 10136: } 10136: 10136: 10136: 10136: const size_t __len = (__base == 16 ? __num_base::_S_iend 10136: - __num_base::_S_izero : __base); 10136: 10136: 10136: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; 10136: string __found_grouping; 10136: if (__lc->_M_use_grouping) 10136: __found_grouping.reserve(32); 10136: bool __testfail = false; 10136: bool __testoverflow = false; 10136: const __unsigned_type __max = 10136: (__negative && __num_traits::__is_signed) 10136: ? -static_cast<__unsigned_type>(__num_traits::__min) 10136: : __num_traits::__max; 10136: const __unsigned_type __smax = __max / __base; 10136: __unsigned_type __result = 0; 10136: int __digit = 0; 10136: const char_type* __lit_zero = __lit + __num_base::_S_izero; 10136: 10136: if (!__lc->_M_allocated) 10136: 10136: while (!__testeof) 10136: { 10136: __digit = _M_find(__lit_zero, __len, __c); 10136: if (__digit == -1) 10136: break; 10136: 10136: if (__result > __smax) 10136: __testoverflow = true; 10136: else 10136: { 10136: __result *= __base; 10136: __testoverflow |= __result > __max - __digit; 10136: __result += __digit; 10136: ++__sep_pos; 10136: } 10136: 10136: if (++__beg != __end) 10136: __c = *__beg; 10136: else 10136: __testeof = true; 10136: } 10136: else 10136: while (!__testeof) 10136: { 10136: 10136: 10136: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 10136: { 10136: 10136: 10136: if (__sep_pos) 10136: { 10136: __found_grouping += static_cast(__sep_pos); 10136: __sep_pos = 0; 10136: } 10136: else 10136: { 10136: __testfail = true; 10136: break; 10136: } 10136: } 10136: else if (__c == __lc->_M_decimal_point) 10136: break; 10136: else 10136: { 10136: const char_type* __q = 10136: __traits_type::find(__lit_zero, __len, __c); 10136: if (!__q) 10136: break; 10136: 10136: __digit = __q - __lit_zero; 10136: if (__digit > 15) 10136: __digit -= 6; 10136: if (__result > __smax) 10136: __testoverflow = true; 10136: else 10136: { 10136: __result *= __base; 10136: __testoverflow |= __result > __max - __digit; 10136: __result += __digit; 10136: ++__sep_pos; 10136: } 10136: } 10136: 10136: if (++__beg != __end) 10136: __c = *__beg; 10136: else 10136: __testeof = true; 10136: } 10136: 10136: 10136: 10136: if (__found_grouping.size()) 10136: { 10136: 10136: __found_grouping += static_cast(__sep_pos); 10136: 10136: if (!std::__verify_grouping(__lc->_M_grouping, 10136: __lc->_M_grouping_size, 10136: __found_grouping)) 10136: __err = ios_base::failbit; 10136: } 10136: 10136: 10136: 10136: if ((!__sep_pos && !__found_zero && !__found_grouping.size()) 10136: || __testfail) 10136: { 10136: __v = 0; 10136: __err = ios_base::failbit; 10136: } 10136: else if (__testoverflow) 10136: { 10136: if (__negative && __num_traits::__is_signed) 10136: __v = __num_traits::__min; 10136: else 10136: __v = __num_traits::__max; 10136: __err = ios_base::failbit; 10136: } 10136: else 10136: __v = __negative ? -__result : __result; 10136: 10136: if (__testeof) 10136: __err |= ios_base::eofbit; 10136: return __beg; 10136: } 10136: 10136: 10136: 10136: template 10136: _InIter 10136: num_get<_CharT, _InIter>:: 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, bool& __v) const 10136: { 10136: if (!(__io.flags() & ios_base::boolalpha)) 10136: { 10136: 10136: 10136: 10136: long __l = -1; 10136: __beg = _M_extract_int(__beg, __end, __io, __err, __l); 10136: if (__l == 0 || __l == 1) 10136: __v = bool(__l); 10136: else 10136: { 10136: 10136: 10136: __v = true; 10136: __err = ios_base::failbit; 10136: if (__beg == __end) 10136: __err |= ios_base::eofbit; 10136: } 10136: } 10136: else 10136: { 10136: 10136: typedef __numpunct_cache<_CharT> __cache_type; 10136: __use_cache<__cache_type> __uc; 10136: const locale& __loc = __io._M_getloc(); 10136: const __cache_type* __lc = __uc(__loc); 10136: 10136: bool __testf = true; 10136: bool __testt = true; 10136: bool __donef = __lc->_M_falsename_size == 0; 10136: bool __donet = __lc->_M_truename_size == 0; 10136: bool __testeof = false; 10136: size_t __n = 0; 10136: while (!__donef || !__donet) 10136: { 10136: if (__beg == __end) 10136: { 10136: __testeof = true; 10136: break; 10136: } 10136: 10136: const char_type __c = *__beg; 10136: 10136: if (!__donef) 10136: __testf = __c == __lc->_M_falsename[__n]; 10136: 10136: if (!__testf && __donet) 10136: break; 10136: 10136: if (!__donet) 10136: __testt = __c == __lc->_M_truename[__n]; 10136: 10136: if (!__testt && __donef) 10136: break; 10136: 10136: if (!__testt && !__testf) 10136: break; 10136: 10136: ++__n; 10136: ++__beg; 10136: 10136: __donef = !__testf || __n >= __lc->_M_falsename_size; 10136: __donet = !__testt || __n >= __lc->_M_truename_size; 10136: } 10136: if (__testf && __n == __lc->_M_falsename_size && __n) 10136: { 10136: __v = false; 10136: if (__testt && __n == __lc->_M_truename_size) 10136: __err = ios_base::failbit; 10136: else 10136: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 10136: } 10136: else if (__testt && __n == __lc->_M_truename_size && __n) 10136: { 10136: __v = true; 10136: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 10136: } 10136: else 10136: { 10136: 10136: 10136: __v = false; 10136: __err = ios_base::failbit; 10136: if (__testeof) 10136: __err |= ios_base::eofbit; 10136: } 10136: } 10136: return __beg; 10136: } 10136: 10136: template 10136: _InIter 10136: num_get<_CharT, _InIter>:: 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, float& __v) const 10136: { 10136: string __xtrc; 10136: __xtrc.reserve(32); 10136: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 10136: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 10136: if (__beg == __end) 10136: __err |= ios_base::eofbit; 10136: return __beg; 10136: } 10136: 10136: template 10136: _InIter 10136: num_get<_CharT, _InIter>:: 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, double& __v) const 10136: { 10136: string __xtrc; 10136: __xtrc.reserve(32); 10136: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 10136: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 10136: if (__beg == __end) 10136: __err |= ios_base::eofbit; 10136: return __beg; 10136: } 10136: # 735 "/usr/include/c++/8/bits/locale_facets.tcc" 3 10136: template 10136: _InIter 10136: num_get<_CharT, _InIter>:: 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, long double& __v) const 10136: { 10136: string __xtrc; 10136: __xtrc.reserve(32); 10136: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 10136: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 10136: if (__beg == __end) 10136: __err |= ios_base::eofbit; 10136: return __beg; 10136: } 10136: 10136: template 10136: _InIter 10136: num_get<_CharT, _InIter>:: 10136: do_get(iter_type __beg, iter_type __end, ios_base& __io, 10136: ios_base::iostate& __err, void*& __v) const 10136: { 10136: 10136: typedef ios_base::fmtflags fmtflags; 10136: const fmtflags __fmt = __io.flags(); 10136: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); 10136: 10136: typedef __gnu_cxx::__conditional_type<(sizeof(void*) 10136: <= sizeof(unsigned long)), 10136: unsigned long, unsigned long long>::__type _UIntPtrType; 10136: 10136: _UIntPtrType __ul; 10136: __beg = _M_extract_int(__beg, __end, __io, __err, __ul); 10136: 10136: 10136: __io.flags(__fmt); 10136: 10136: __v = reinterpret_cast(__ul); 10136: return __beg; 10136: } 10136: 10136: 10136: 10136: template 10136: void 10136: num_put<_CharT, _OutIter>:: 10136: _M_pad(_CharT __fill, streamsize __w, ios_base& __io, 10136: _CharT* __new, const _CharT* __cs, int& __len) const 10136: { 10136: 10136: 10136: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, 10136: __cs, __w, __len); 10136: __len = static_cast(__w); 10136: } 10136: 10136: 10136: 10136: template 10136: int 10136: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, 10136: ios_base::fmtflags __flags, bool __dec) 10136: { 10136: _CharT* __buf = __bufend; 10136: if (__builtin_expect(__dec, true)) 10136: { 10136: 10136: do 10136: { 10136: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; 10136: __v /= 10; 10136: } 10136: while (__v != 0); 10136: } 10136: else if ((__flags & ios_base::basefield) == ios_base::oct) 10136: { 10136: 10136: do 10136: { 10136: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; 10136: __v >>= 3; 10136: } 10136: while (__v != 0); 10136: } 10136: else 10136: { 10136: 10136: const bool __uppercase = __flags & ios_base::uppercase; 10136: const int __case_offset = __uppercase ? __num_base::_S_oudigits 10136: : __num_base::_S_odigits; 10136: do 10136: { 10136: *--__buf = __lit[(__v & 0xf) + __case_offset]; 10136: __v >>= 4; 10136: } 10136: while (__v != 0); 10136: } 10136: return __bufend - __buf; 10136: } 10136: 10136: 10136: 10136: template 10136: void 10136: num_put<_CharT, _OutIter>:: 10136: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, 10136: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const 10136: { 10136: _CharT* __p = std::__add_grouping(__new, __sep, __grouping, 10136: __grouping_size, __cs, __cs + __len); 10136: __len = __p - __new; 10136: } 10136: 10136: template 10136: template 10136: _OutIter 10136: num_put<_CharT, _OutIter>:: 10136: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, 10136: _ValueT __v) const 10136: { 10136: using __gnu_cxx::__add_unsigned; 10136: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 10136: typedef __numpunct_cache<_CharT> __cache_type; 10136: __use_cache<__cache_type> __uc; 10136: const locale& __loc = __io._M_getloc(); 10136: const __cache_type* __lc = __uc(__loc); 10136: const _CharT* __lit = __lc->_M_atoms_out; 10136: const ios_base::fmtflags __flags = __io.flags(); 10136: 10136: 10136: const int __ilen = 5 * sizeof(_ValueT); 10136: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 10136: * __ilen)); 10136: 10136: 10136: 10136: const ios_base::fmtflags __basefield = __flags & ios_base::basefield; 10136: const bool __dec = (__basefield != ios_base::oct 10136: && __basefield != ios_base::hex); 10136: const __unsigned_type __u = ((__v > 0 || !__dec) 10136: ? __unsigned_type(__v) 10136: : -__unsigned_type(__v)); 10136: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); 10136: __cs += __ilen - __len; 10136: 10136: 10136: if (__lc->_M_use_grouping) 10136: { 10136: 10136: 10136: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 10136: * (__len + 1) 10136: * 2)); 10136: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, 10136: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); 10136: __cs = __cs2 + 2; 10136: } 10136: 10136: 10136: if (__builtin_expect(__dec, true)) 10136: { 10136: 10136: if (__v >= 0) 10136: { 10136: if (bool(__flags & ios_base::showpos) 10136: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) 10136: *--__cs = __lit[__num_base::_S_oplus], ++__len; 10136: } 10136: else 10136: *--__cs = __lit[__num_base::_S_ominus], ++__len; 10136: } 10136: else if (bool(__flags & ios_base::showbase) && __v) 10136: { 10136: if (__basefield == ios_base::oct) 10136: *--__cs = __lit[__num_base::_S_odigits], ++__len; 10136: else 10136: { 10136: 10136: const bool __uppercase = __flags & ios_base::uppercase; 10136: *--__cs = __lit[__num_base::_S_ox + __uppercase]; 10136: 10136: *--__cs = __lit[__num_base::_S_odigits]; 10136: __len += 2; 10136: } 10136: } 10136: 10136: 10136: const streamsize __w = __io.width(); 10136: if (__w > static_cast(__len)) 10136: { 10136: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 10136: * __w)); 10136: _M_pad(__fill, __w, __io, __cs3, __cs, __len); 10136: __cs = __cs3; 10136: } 10136: __io.width(0); 10136: 10136: 10136: 10136: return std::__write(__s, __cs, __len); 10136: } 10136: 10136: template 10136: void 10136: num_put<_CharT, _OutIter>:: 10136: _M_group_float(const char* __grouping, size_t __grouping_size, 10136: _CharT __sep, const _CharT* __p, _CharT* __new, 10136: _CharT* __cs, int& __len) const 10136: { 10136: 10136: 10136: 10136: const int __declen = __p ? __p - __cs : __len; 10136: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, 10136: __grouping_size, 10136: __cs, __cs + __declen); 10136: 10136: 10136: int __newlen = __p2 - __new; 10136: if (__p) 10136: { 10136: char_traits<_CharT>::copy(__p2, __p, __len - __declen); 10136: __newlen += __len - __declen; 10136: } 10136: __len = __newlen; 10136: } 10136: # 971 "/usr/include/c++/8/bits/locale_facets.tcc" 3 10136: template 10136: template 10136: _OutIter 10136: num_put<_CharT, _OutIter>:: 10136: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, 10136: _ValueT __v) const 10136: { 10136: typedef __numpunct_cache<_CharT> __cache_type; 10136: __use_cache<__cache_type> __uc; 10136: const locale& __loc = __io._M_getloc(); 10136: const __cache_type* __lc = __uc(__loc); 10136: 10136: 10136: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); 10136: 10136: const int __max_digits = 10136: __gnu_cxx::__numeric_traits<_ValueT>::__digits10; 10136: 10136: 10136: int __len; 10136: 10136: char __fbuf[16]; 10136: __num_base::_S_format_float(__io, __fbuf, __mod); 10136: 10136: 10136: 10136: const bool __use_prec = 10136: (__io.flags() & ios_base::floatfield) != ios_base::floatfield; 10136: 10136: 10136: 10136: int __cs_size = __max_digits * 3; 10136: char* __cs = static_cast(__builtin_alloca(__cs_size)); 10136: if (__use_prec) 10136: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 10136: __fbuf, __prec, __v); 10136: else 10136: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 10136: __fbuf, __v); 10136: 10136: 10136: if (__len >= __cs_size) 10136: { 10136: __cs_size = __len + 1; 10136: __cs = static_cast(__builtin_alloca(__cs_size)); 10136: if (__use_prec) 10136: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 10136: __fbuf, __prec, __v); 10136: else 10136: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 10136: __fbuf, __v); 10136: } 10136: # 1044 "/usr/include/c++/8/bits/locale_facets.tcc" 3 10136: const ctype<_CharT>& __ctype = use_facet >(__loc); 10136: 10136: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 10136: * __len)); 10136: __ctype.widen(__cs, __cs + __len, __ws); 10136: 10136: 10136: _CharT* __wp = 0; 10136: const char* __p = char_traits::find(__cs, __len, '.'); 10136: if (__p) 10136: { 10136: __wp = __ws + (__p - __cs); 10136: *__wp = __lc->_M_decimal_point; 10136: } 10136: 10136: 10136: 10136: 10136: if (__lc->_M_use_grouping 10136: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' 10136: && __cs[1] >= '0' && __cs[2] >= '0'))) 10136: { 10136: 10136: 10136: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 10136: * __len * 2)); 10136: 10136: streamsize __off = 0; 10136: if (__cs[0] == '-' || __cs[0] == '+') 10136: { 10136: __off = 1; 10136: __ws2[0] = __ws[0]; 10136: __len -= 1; 10136: } 10136: 10136: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, 10136: __lc->_M_thousands_sep, __wp, __ws2 + __off, 10136: __ws + __off, __len); 10136: __len += __off; 10136: 10136: __ws = __ws2; 10136: } 10136: 10136: 10136: const streamsize __w = __io.width(); 10136: if (__w > static_cast(__len)) 10136: { 10136: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 10136: * __w)); 10136: _M_pad(__fill, __w, __io, __ws3, __ws, __len); 10136: __ws = __ws3; 10136: } 10136: __io.width(0); 10136: 10136: 10136: 10136: return std::__write(__s, __ws, __len); 10136: } 10136: 10136: template 10136: _OutIter 10136: num_put<_CharT, _OutIter>:: 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 10136: { 10136: const ios_base::fmtflags __flags = __io.flags(); 10136: if ((__flags & ios_base::boolalpha) == 0) 10136: { 10136: const long __l = __v; 10136: __s = _M_insert_int(__s, __io, __fill, __l); 10136: } 10136: else 10136: { 10136: typedef __numpunct_cache<_CharT> __cache_type; 10136: __use_cache<__cache_type> __uc; 10136: const locale& __loc = __io._M_getloc(); 10136: const __cache_type* __lc = __uc(__loc); 10136: 10136: const _CharT* __name = __v ? __lc->_M_truename 10136: : __lc->_M_falsename; 10136: int __len = __v ? __lc->_M_truename_size 10136: : __lc->_M_falsename_size; 10136: 10136: const streamsize __w = __io.width(); 10136: if (__w > static_cast(__len)) 10136: { 10136: const streamsize __plen = __w - __len; 10136: _CharT* __ps 10136: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 10136: * __plen)); 10136: 10136: char_traits<_CharT>::assign(__ps, __plen, __fill); 10136: __io.width(0); 10136: 10136: if ((__flags & ios_base::adjustfield) == ios_base::left) 10136: { 10136: __s = std::__write(__s, __name, __len); 10136: __s = std::__write(__s, __ps, __plen); 10136: } 10136: else 10136: { 10136: __s = std::__write(__s, __ps, __plen); 10136: __s = std::__write(__s, __name, __len); 10136: } 10136: return __s; 10136: } 10136: __io.width(0); 10136: __s = std::__write(__s, __name, __len); 10136: } 10136: return __s; 10136: } 10136: 10136: template 10136: _OutIter 10136: num_put<_CharT, _OutIter>:: 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 10136: { return _M_insert_float(__s, __io, __fill, char(), __v); } 10136: # 1169 "/usr/include/c++/8/bits/locale_facets.tcc" 3 10136: template 10136: _OutIter 10136: num_put<_CharT, _OutIter>:: 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, 10136: long double __v) const 10136: { return _M_insert_float(__s, __io, __fill, 'L', __v); } 10136: 10136: template 10136: _OutIter 10136: num_put<_CharT, _OutIter>:: 10136: do_put(iter_type __s, ios_base& __io, char_type __fill, 10136: const void* __v) const 10136: { 10136: const ios_base::fmtflags __flags = __io.flags(); 10136: const ios_base::fmtflags __fmt = ~(ios_base::basefield 10136: | ios_base::uppercase); 10136: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); 10136: 10136: typedef __gnu_cxx::__conditional_type<(sizeof(const void*) 10136: <= sizeof(unsigned long)), 10136: unsigned long, unsigned long long>::__type _UIntPtrType; 10136: 10136: __s = _M_insert_int(__s, __io, __fill, 10136: reinterpret_cast<_UIntPtrType>(__v)); 10136: __io.flags(__flags); 10136: return __s; 10136: } 10136: 10136: 10136: # 1206 "/usr/include/c++/8/bits/locale_facets.tcc" 3 10136: template 10136: void 10136: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, 10136: _CharT* __news, const _CharT* __olds, 10136: streamsize __newlen, streamsize __oldlen) 10136: { 10136: const size_t __plen = static_cast(__newlen - __oldlen); 10136: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; 10136: 10136: 10136: if (__adjust == ios_base::left) 10136: { 10136: _Traits::copy(__news, __olds, __oldlen); 10136: _Traits::assign(__news + __oldlen, __plen, __fill); 10136: return; 10136: } 10136: 10136: size_t __mod = 0; 10136: if (__adjust == ios_base::internal) 10136: { 10136: 10136: 10136: 10136: const locale& __loc = __io._M_getloc(); 10136: const ctype<_CharT>& __ctype = use_facet >(__loc); 10136: 10136: if (__ctype.widen('-') == __olds[0] 10136: || __ctype.widen('+') == __olds[0]) 10136: { 10136: __news[0] = __olds[0]; 10136: __mod = 1; 10136: ++__news; 10136: } 10136: else if (__ctype.widen('0') == __olds[0] 10136: && __oldlen > 1 10136: && (__ctype.widen('x') == __olds[1] 10136: || __ctype.widen('X') == __olds[1])) 10136: { 10136: __news[0] = __olds[0]; 10136: __news[1] = __olds[1]; 10136: __mod = 2; 10136: __news += 2; 10136: } 10136: 10136: } 10136: _Traits::assign(__news, __plen, __fill); 10136: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); 10136: } 10136: 10136: template 10136: _CharT* 10136: __add_grouping(_CharT* __s, _CharT __sep, 10136: const char* __gbeg, size_t __gsize, 10136: const _CharT* __first, const _CharT* __last) 10136: { 10136: size_t __idx = 0; 10136: size_t __ctr = 0; 10136: 10136: while (__last - __first > __gbeg[__idx] 10136: && static_cast(__gbeg[__idx]) > 0 10136: && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max) 10136: { 10136: __last -= __gbeg[__idx]; 10136: __idx < __gsize - 1 ? ++__idx : ++__ctr; 10136: } 10136: 10136: while (__first != __last) 10136: *__s++ = *__first++; 10136: 10136: while (__ctr--) 10136: { 10136: *__s++ = __sep; 10136: for (char __i = __gbeg[__idx]; __i > 0; --__i) 10136: *__s++ = *__first++; 10136: } 10136: 10136: while (__idx--) 10136: { 10136: *__s++ = __sep; 10136: for (char __i = __gbeg[__idx]; __i > 0; --__i) 10136: *__s++ = *__first++; 10136: } 10136: 10136: return __s; 10136: } 10136: 10136: 10136: 10136: 10136: extern template class __cxx11:: numpunct; 10136: extern template class __cxx11:: numpunct_byname; 10136: extern template class num_get; 10136: extern template class num_put; 10136: extern template class ctype_byname; 10136: 10136: extern template 10136: const ctype& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: const numpunct& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: const num_put& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: const num_get& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: 10136: extern template class __cxx11:: numpunct; 10136: extern template class __cxx11:: numpunct_byname; 10136: extern template class num_get; 10136: extern template class num_put; 10136: extern template class ctype_byname; 10136: 10136: extern template 10136: const ctype& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: const numpunct& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: const num_put& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: const num_get& 10136: use_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: extern template 10136: bool 10136: has_facet >(const locale&); 10136: 10136: 10136: 10136: 10136: } 10136: # 2652 "/usr/include/c++/8/bits/locale_facets.h" 2 3 10136: # 38 "/usr/include/c++/8/bits/basic_ios.h" 2 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: inline const _Facet& 10136: __check_facet(const _Facet* __f) 10136: { 10136: if (!__f) 10136: __throw_bad_cast(); 10136: return *__f; 10136: } 10136: # 66 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: template 10136: class basic_ios : public ios_base 10136: { 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef typename _Traits::int_type int_type; 10136: typedef typename _Traits::pos_type pos_type; 10136: typedef typename _Traits::off_type off_type; 10136: typedef _Traits traits_type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef ctype<_CharT> __ctype_type; 10136: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 10136: __num_put_type; 10136: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 10136: __num_get_type; 10136: 10136: 10136: 10136: protected: 10136: basic_ostream<_CharT, _Traits>* _M_tie; 10136: mutable char_type _M_fill; 10136: mutable bool _M_fill_init; 10136: basic_streambuf<_CharT, _Traits>* _M_streambuf; 10136: 10136: 10136: const __ctype_type* _M_ctype; 10136: 10136: const __num_put_type* _M_num_put; 10136: 10136: const __num_get_type* _M_num_get; 10136: 10136: public: 10136: # 117 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: explicit operator bool() const 10136: { return !this->fail(); } 10136: 10136: 10136: 10136: 10136: 10136: bool 10136: operator!() const 10136: { return this->fail(); } 10136: # 136 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: iostate 10136: rdstate() const 10136: { return _M_streambuf_state; } 10136: # 147 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: void 10136: clear(iostate __state = goodbit); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void 10136: setstate(iostate __state) 10136: { this->clear(this->rdstate() | __state); } 10136: 10136: 10136: 10136: 10136: void 10136: _M_setstate(iostate __state) 10136: { 10136: 10136: 10136: _M_streambuf_state |= __state; 10136: if (this->exceptions() & __state) 10136: throw; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: bool 10136: good() const 10136: { return this->rdstate() == 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: bool 10136: eof() const 10136: { return (this->rdstate() & eofbit) != 0; } 10136: # 200 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: bool 10136: fail() const 10136: { return (this->rdstate() & (badbit | failbit)) != 0; } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: bool 10136: bad() const 10136: { return (this->rdstate() & badbit) != 0; } 10136: # 221 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: iostate 10136: exceptions() const 10136: { return _M_exception; } 10136: # 256 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: void 10136: exceptions(iostate __except) 10136: { 10136: _M_exception = __except; 10136: this->clear(_M_streambuf_state); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: explicit 10136: basic_ios(basic_streambuf<_CharT, _Traits>* __sb) 10136: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), 10136: _M_ctype(0), _M_num_put(0), _M_num_get(0) 10136: { this->init(__sb); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual 10136: ~basic_ios() { } 10136: # 294 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: basic_ostream<_CharT, _Traits>* 10136: tie() const 10136: { return _M_tie; } 10136: # 306 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: basic_ostream<_CharT, _Traits>* 10136: tie(basic_ostream<_CharT, _Traits>* __tiestr) 10136: { 10136: basic_ostream<_CharT, _Traits>* __old = _M_tie; 10136: _M_tie = __tiestr; 10136: return __old; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_streambuf<_CharT, _Traits>* 10136: rdbuf() const 10136: { return _M_streambuf; } 10136: # 346 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: basic_streambuf<_CharT, _Traits>* 10136: rdbuf(basic_streambuf<_CharT, _Traits>* __sb); 10136: # 360 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: basic_ios& 10136: copyfmt(const basic_ios& __rhs); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: char_type 10136: fill() const 10136: { 10136: if (!_M_fill_init) 10136: { 10136: _M_fill = this->widen(' '); 10136: _M_fill_init = true; 10136: } 10136: return _M_fill; 10136: } 10136: # 389 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: char_type 10136: fill(char_type __ch) 10136: { 10136: char_type __old = this->fill(); 10136: _M_fill = __ch; 10136: return __old; 10136: } 10136: # 409 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: locale 10136: imbue(const locale& __loc); 10136: # 429 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: char 10136: narrow(char_type __c, char __dfault) const 10136: { return __check_facet(_M_ctype).narrow(__c, __dfault); } 10136: # 448 "/usr/include/c++/8/bits/basic_ios.h" 3 10136: char_type 10136: widen(char __c) const 10136: { return __check_facet(_M_ctype).widen(__c); } 10136: 10136: protected: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: basic_ios() 10136: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), 10136: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) 10136: { } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void 10136: init(basic_streambuf<_CharT, _Traits>* __sb); 10136: 10136: 10136: basic_ios(const basic_ios&) = delete; 10136: basic_ios& operator=(const basic_ios&) = delete; 10136: 10136: void 10136: move(basic_ios& __rhs) 10136: { 10136: ios_base::_M_move(__rhs); 10136: _M_cache_locale(_M_ios_locale); 10136: this->tie(__rhs.tie(nullptr)); 10136: _M_fill = __rhs._M_fill; 10136: _M_fill_init = __rhs._M_fill_init; 10136: _M_streambuf = nullptr; 10136: } 10136: 10136: void 10136: move(basic_ios&& __rhs) 10136: { this->move(__rhs); } 10136: 10136: void 10136: swap(basic_ios& __rhs) noexcept 10136: { 10136: ios_base::_M_swap(__rhs); 10136: _M_cache_locale(_M_ios_locale); 10136: __rhs._M_cache_locale(__rhs._M_ios_locale); 10136: std::swap(_M_tie, __rhs._M_tie); 10136: std::swap(_M_fill, __rhs._M_fill); 10136: std::swap(_M_fill_init, __rhs._M_fill_init); 10136: } 10136: 10136: void 10136: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 10136: { _M_streambuf = __sb; } 10136: 10136: 10136: void 10136: _M_cache_locale(const locale& __loc); 10136: }; 10136: 10136: 10136: } 10136: 10136: # 1 "/usr/include/c++/8/bits/basic_ios.tcc" 1 3 10136: # 33 "/usr/include/c++/8/bits/basic_ios.tcc" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/basic_ios.tcc" 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: void 10136: basic_ios<_CharT, _Traits>::clear(iostate __state) 10136: { 10136: if (this->rdbuf()) 10136: _M_streambuf_state = __state; 10136: else 10136: _M_streambuf_state = __state | badbit; 10136: if (this->exceptions() & this->rdstate()) 10136: __throw_ios_failure(("basic_ios::clear")); 10136: } 10136: 10136: template 10136: basic_streambuf<_CharT, _Traits>* 10136: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 10136: { 10136: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; 10136: _M_streambuf = __sb; 10136: this->clear(); 10136: return __old; 10136: } 10136: 10136: template 10136: basic_ios<_CharT, _Traits>& 10136: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) 10136: { 10136: 10136: 10136: if (this != &__rhs) 10136: { 10136: 10136: 10136: 10136: 10136: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? 10136: _M_local_word : new _Words[__rhs._M_word_size]; 10136: 10136: 10136: _Callback_list* __cb = __rhs._M_callbacks; 10136: if (__cb) 10136: __cb->_M_add_reference(); 10136: _M_call_callbacks(erase_event); 10136: if (_M_word != _M_local_word) 10136: { 10136: delete [] _M_word; 10136: _M_word = 0; 10136: } 10136: _M_dispose_callbacks(); 10136: 10136: 10136: _M_callbacks = __cb; 10136: for (int __i = 0; __i < __rhs._M_word_size; ++__i) 10136: __words[__i] = __rhs._M_word[__i]; 10136: _M_word = __words; 10136: _M_word_size = __rhs._M_word_size; 10136: 10136: this->flags(__rhs.flags()); 10136: this->width(__rhs.width()); 10136: this->precision(__rhs.precision()); 10136: this->tie(__rhs.tie()); 10136: this->fill(__rhs.fill()); 10136: _M_ios_locale = __rhs.getloc(); 10136: _M_cache_locale(_M_ios_locale); 10136: 10136: _M_call_callbacks(copyfmt_event); 10136: 10136: 10136: this->exceptions(__rhs.exceptions()); 10136: } 10136: return *this; 10136: } 10136: 10136: 10136: template 10136: locale 10136: basic_ios<_CharT, _Traits>::imbue(const locale& __loc) 10136: { 10136: locale __old(this->getloc()); 10136: ios_base::imbue(__loc); 10136: _M_cache_locale(__loc); 10136: if (this->rdbuf() != 0) 10136: this->rdbuf()->pubimbue(__loc); 10136: return __old; 10136: } 10136: 10136: template 10136: void 10136: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) 10136: { 10136: 10136: ios_base::_M_init(); 10136: 10136: 10136: _M_cache_locale(_M_ios_locale); 10136: # 146 "/usr/include/c++/8/bits/basic_ios.tcc" 3 10136: _M_fill = _CharT(); 10136: _M_fill_init = false; 10136: 10136: _M_tie = 0; 10136: _M_exception = goodbit; 10136: _M_streambuf = __sb; 10136: _M_streambuf_state = __sb ? goodbit : badbit; 10136: } 10136: 10136: template 10136: void 10136: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) 10136: { 10136: if (__builtin_expect(has_facet<__ctype_type>(__loc), true)) 10136: _M_ctype = std::__addressof(use_facet<__ctype_type>(__loc)); 10136: else 10136: _M_ctype = 0; 10136: 10136: if (__builtin_expect(has_facet<__num_put_type>(__loc), true)) 10136: _M_num_put = std::__addressof(use_facet<__num_put_type>(__loc)); 10136: else 10136: _M_num_put = 0; 10136: 10136: if (__builtin_expect(has_facet<__num_get_type>(__loc), true)) 10136: _M_num_get = std::__addressof(use_facet<__num_get_type>(__loc)); 10136: else 10136: _M_num_get = 0; 10136: } 10136: 10136: 10136: 10136: 10136: extern template class basic_ios; 10136: 10136: 10136: extern template class basic_ios; 10136: 10136: 10136: 10136: 10136: } 10136: # 517 "/usr/include/c++/8/bits/basic_ios.h" 2 3 10136: # 45 "/usr/include/c++/8/ios" 2 3 10136: # 39 "/usr/include/c++/8/ostream" 2 3 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 57 "/usr/include/c++/8/ostream" 3 10136: template 10136: class basic_ostream : virtual public basic_ios<_CharT, _Traits> 10136: { 10136: public: 10136: 10136: typedef _CharT char_type; 10136: typedef typename _Traits::int_type int_type; 10136: typedef typename _Traits::pos_type pos_type; 10136: typedef typename _Traits::off_type off_type; 10136: typedef _Traits traits_type; 10136: 10136: 10136: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 10136: typedef basic_ios<_CharT, _Traits> __ios_type; 10136: typedef basic_ostream<_CharT, _Traits> __ostream_type; 10136: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 10136: __num_put_type; 10136: typedef ctype<_CharT> __ctype_type; 10136: # 83 "/usr/include/c++/8/ostream" 3 10136: explicit 10136: basic_ostream(__streambuf_type* __sb) 10136: { this->init(__sb); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual 10136: ~basic_ostream() { } 10136: 10136: 10136: class sentry; 10136: friend class sentry; 10136: # 107 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: operator<<(__ostream_type& (*__pf)(__ostream_type&)) 10136: { 10136: 10136: 10136: 10136: return __pf(*this); 10136: } 10136: 10136: __ostream_type& 10136: operator<<(__ios_type& (*__pf)(__ios_type&)) 10136: { 10136: 10136: 10136: 10136: __pf(*this); 10136: return *this; 10136: } 10136: 10136: __ostream_type& 10136: operator<<(ios_base& (*__pf) (ios_base&)) 10136: { 10136: 10136: 10136: 10136: __pf(*this); 10136: return *this; 10136: } 10136: # 165 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: operator<<(long __n) 10136: { return _M_insert(__n); } 10136: 10136: __ostream_type& 10136: operator<<(unsigned long __n) 10136: { return _M_insert(__n); } 10136: 10136: __ostream_type& 10136: operator<<(bool __n) 10136: { return _M_insert(__n); } 10136: 10136: __ostream_type& 10136: operator<<(short __n); 10136: 10136: __ostream_type& 10136: operator<<(unsigned short __n) 10136: { 10136: 10136: 10136: return _M_insert(static_cast(__n)); 10136: } 10136: 10136: __ostream_type& 10136: operator<<(int __n); 10136: 10136: __ostream_type& 10136: operator<<(unsigned int __n) 10136: { 10136: 10136: 10136: return _M_insert(static_cast(__n)); 10136: } 10136: 10136: 10136: __ostream_type& 10136: operator<<(long long __n) 10136: { return _M_insert(__n); } 10136: 10136: __ostream_type& 10136: operator<<(unsigned long long __n) 10136: { return _M_insert(__n); } 10136: # 219 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: operator<<(double __f) 10136: { return _M_insert(__f); } 10136: 10136: __ostream_type& 10136: operator<<(float __f) 10136: { 10136: 10136: 10136: return _M_insert(static_cast(__f)); 10136: } 10136: 10136: __ostream_type& 10136: operator<<(long double __f) 10136: { return _M_insert(__f); } 10136: # 244 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: operator<<(const void* __p) 10136: { return _M_insert(__p); } 10136: # 269 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: operator<<(__streambuf_type* __sb); 10136: # 302 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: put(char_type __c); 10136: 10136: 10136: 10136: 10136: 10136: 10136: void 10136: _M_write(const char_type* __s, streamsize __n) 10136: { 10136: const streamsize __put = this->rdbuf()->sputn(__s, __n); 10136: if (__put != __n) 10136: this->setstate(ios_base::badbit); 10136: } 10136: # 334 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: write(const char_type* __s, streamsize __n); 10136: # 347 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: flush(); 10136: # 357 "/usr/include/c++/8/ostream" 3 10136: pos_type 10136: tellp(); 10136: # 368 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: seekp(pos_type); 10136: # 380 "/usr/include/c++/8/ostream" 3 10136: __ostream_type& 10136: seekp(off_type, ios_base::seekdir); 10136: 10136: protected: 10136: basic_ostream() 10136: { this->init(0); } 10136: 10136: 10136: 10136: basic_ostream(basic_iostream<_CharT, _Traits>&) { } 10136: 10136: basic_ostream(const basic_ostream&) = delete; 10136: 10136: basic_ostream(basic_ostream&& __rhs) 10136: : __ios_type() 10136: { __ios_type::move(__rhs); } 10136: 10136: 10136: 10136: basic_ostream& operator=(const basic_ostream&) = delete; 10136: 10136: basic_ostream& 10136: operator=(basic_ostream&& __rhs) 10136: { 10136: swap(__rhs); 10136: return *this; 10136: } 10136: 10136: void 10136: swap(basic_ostream& __rhs) 10136: { __ios_type::swap(__rhs); } 10136: 10136: 10136: template 10136: __ostream_type& 10136: _M_insert(_ValueT __v); 10136: }; 10136: # 425 "/usr/include/c++/8/ostream" 3 10136: template 10136: class basic_ostream<_CharT, _Traits>::sentry 10136: { 10136: 10136: bool _M_ok; 10136: basic_ostream<_CharT, _Traits>& _M_os; 10136: 10136: public: 10136: # 444 "/usr/include/c++/8/ostream" 3 10136: explicit 10136: sentry(basic_ostream<_CharT, _Traits>& __os); 10136: # 454 "/usr/include/c++/8/ostream" 3 10136: ~sentry() 10136: { 10136: 10136: if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()) 10136: { 10136: 10136: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) 10136: _M_os.setstate(ios_base::badbit); 10136: } 10136: } 10136: # 473 "/usr/include/c++/8/ostream" 3 10136: explicit 10136: 10136: operator bool() const 10136: { return _M_ok; } 10136: }; 10136: # 495 "/usr/include/c++/8/ostream" 3 10136: template 10136: inline basic_ostream<_CharT, _Traits>& 10136: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) 10136: { return __ostream_insert(__out, &__c, 1); } 10136: 10136: template 10136: inline basic_ostream<_CharT, _Traits>& 10136: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) 10136: { return (__out << __out.widen(__c)); } 10136: 10136: 10136: template 10136: inline basic_ostream& 10136: operator<<(basic_ostream& __out, char __c) 10136: { return __ostream_insert(__out, &__c, 1); } 10136: 10136: 10136: template 10136: inline basic_ostream& 10136: operator<<(basic_ostream& __out, signed char __c) 10136: { return (__out << static_cast(__c)); } 10136: 10136: template 10136: inline basic_ostream& 10136: operator<<(basic_ostream& __out, unsigned char __c) 10136: { return (__out << static_cast(__c)); } 10136: # 537 "/usr/include/c++/8/ostream" 3 10136: template 10136: inline basic_ostream<_CharT, _Traits>& 10136: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) 10136: { 10136: if (!__s) 10136: __out.setstate(ios_base::badbit); 10136: else 10136: __ostream_insert(__out, __s, 10136: static_cast(_Traits::length(__s))); 10136: return __out; 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits> & 10136: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); 10136: 10136: 10136: template 10136: inline basic_ostream& 10136: operator<<(basic_ostream& __out, const char* __s) 10136: { 10136: if (!__s) 10136: __out.setstate(ios_base::badbit); 10136: else 10136: __ostream_insert(__out, __s, 10136: static_cast(_Traits::length(__s))); 10136: return __out; 10136: } 10136: 10136: 10136: template 10136: inline basic_ostream& 10136: operator<<(basic_ostream& __out, const signed char* __s) 10136: { return (__out << reinterpret_cast(__s)); } 10136: 10136: template 10136: inline basic_ostream & 10136: operator<<(basic_ostream& __out, const unsigned char* __s) 10136: { return (__out << reinterpret_cast(__s)); } 10136: # 588 "/usr/include/c++/8/ostream" 3 10136: template 10136: inline basic_ostream<_CharT, _Traits>& 10136: endl(basic_ostream<_CharT, _Traits>& __os) 10136: { return flush(__os.put(__os.widen('\n'))); } 10136: # 600 "/usr/include/c++/8/ostream" 3 10136: template 10136: inline basic_ostream<_CharT, _Traits>& 10136: ends(basic_ostream<_CharT, _Traits>& __os) 10136: { return __os.put(_CharT()); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline basic_ostream<_CharT, _Traits>& 10136: flush(basic_ostream<_CharT, _Traits>& __os) 10136: { return __os.flush(); } 10136: 10136: 10136: template 10136: basic_ostream<_Ch, _Up>& 10136: __is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*); 10136: 10136: template 10136: struct __is_convertible_to_basic_ostream_impl 10136: { 10136: using __ostream_type = void; 10136: }; 10136: 10136: template 10136: using __do_is_convertible_to_basic_ostream_impl = 10136: decltype(__is_convertible_to_basic_ostream_test 10136: (declval::type*>())); 10136: 10136: template 10136: struct __is_convertible_to_basic_ostream_impl 10136: <_Tp, 10136: __void_t<__do_is_convertible_to_basic_ostream_impl<_Tp>>> 10136: { 10136: using __ostream_type = 10136: __do_is_convertible_to_basic_ostream_impl<_Tp>; 10136: }; 10136: 10136: template 10136: struct __is_convertible_to_basic_ostream 10136: : __is_convertible_to_basic_ostream_impl<_Tp> 10136: { 10136: public: 10136: using type = __not_::__ostream_type>>; 10136: constexpr static bool value = type::value; 10136: }; 10136: 10136: template 10136: struct __is_insertable : false_type {}; 10136: 10136: template 10136: struct __is_insertable<_Ostream, _Tp, 10136: __void_t() 10136: << declval())>> 10136: : true_type {}; 10136: 10136: template 10136: using __rvalue_ostream_type = 10136: typename __is_convertible_to_basic_ostream< 10136: _Ostream>::__ostream_type; 10136: # 674 "/usr/include/c++/8/ostream" 3 10136: template 10136: inline 10136: typename enable_if<__and_<__not_>, 10136: __is_convertible_to_basic_ostream<_Ostream>, 10136: __is_insertable< 10136: __rvalue_ostream_type<_Ostream>, 10136: const _Tp&>>::value, 10136: __rvalue_ostream_type<_Ostream>>::type 10136: operator<<(_Ostream&& __os, const _Tp& __x) 10136: { 10136: __rvalue_ostream_type<_Ostream> __ret_os = __os; 10136: __ret_os << __x; 10136: return __ret_os; 10136: } 10136: 10136: 10136: 10136: } 10136: 10136: # 1 "/usr/include/c++/8/bits/ostream.tcc" 1 3 10136: # 37 "/usr/include/c++/8/bits/ostream.tcc" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/ostream.tcc" 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>::sentry:: 10136: sentry(basic_ostream<_CharT, _Traits>& __os) 10136: : _M_ok(false), _M_os(__os) 10136: { 10136: 10136: if (__os.tie() && __os.good()) 10136: __os.tie()->flush(); 10136: 10136: if (__os.good()) 10136: _M_ok = true; 10136: else 10136: __os.setstate(ios_base::failbit); 10136: } 10136: 10136: template 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: _M_insert(_ValueT __v) 10136: { 10136: sentry __cerb(*this); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const __num_put_type& __np = __check_facet(this->_M_num_put); 10136: if (__np.put(*this, *this, this->fill(), __v).failed()) 10136: __err |= ios_base::badbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: operator<<(short __n) 10136: { 10136: 10136: 10136: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 10136: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 10136: return _M_insert(static_cast(static_cast(__n))); 10136: else 10136: return _M_insert(static_cast(__n)); 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: operator<<(int __n) 10136: { 10136: 10136: 10136: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 10136: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 10136: return _M_insert(static_cast(static_cast(__n))); 10136: else 10136: return _M_insert(static_cast(__n)); 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: operator<<(__streambuf_type* __sbin) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: sentry __cerb(*this); 10136: if (__cerb && __sbin) 10136: { 10136: try 10136: { 10136: if (!__copy_streambufs(__sbin, this->rdbuf())) 10136: __err |= ios_base::failbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::failbit); } 10136: } 10136: else if (!__sbin) 10136: __err |= ios_base::badbit; 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: put(char_type __c) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: sentry __cerb(*this); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const int_type __put = this->rdbuf()->sputc(__c); 10136: if (traits_type::eq_int_type(__put, traits_type::eof())) 10136: __err |= ios_base::badbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: write(const _CharT* __s, streamsize __n) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: sentry __cerb(*this); 10136: if (__cerb) 10136: { 10136: try 10136: { _M_write(__s, __n); } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: flush() 10136: { 10136: 10136: 10136: 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: if (this->rdbuf() && this->rdbuf()->pubsync() == -1) 10136: __err |= ios_base::badbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: template 10136: typename basic_ostream<_CharT, _Traits>::pos_type 10136: basic_ostream<_CharT, _Traits>:: 10136: tellp() 10136: { 10136: pos_type __ret = pos_type(-1); 10136: try 10136: { 10136: if (!this->fail()) 10136: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: return __ret; 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: seekp(pos_type __pos) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: if (!this->fail()) 10136: { 10136: 10136: 10136: const pos_type __p = this->rdbuf()->pubseekpos(__pos, 10136: ios_base::out); 10136: 10136: 10136: if (__p == pos_type(off_type(-1))) 10136: __err |= ios_base::failbit; 10136: } 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: basic_ostream<_CharT, _Traits>:: 10136: seekp(off_type __off, ios_base::seekdir __dir) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: if (!this->fail()) 10136: { 10136: 10136: 10136: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 10136: ios_base::out); 10136: 10136: 10136: if (__p == pos_type(off_type(-1))) 10136: __err |= ios_base::failbit; 10136: } 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: template 10136: basic_ostream<_CharT, _Traits>& 10136: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) 10136: { 10136: if (!__s) 10136: __out.setstate(ios_base::badbit); 10136: else 10136: { 10136: 10136: 10136: const size_t __clen = char_traits::length(__s); 10136: try 10136: { 10136: struct __ptr_guard 10136: { 10136: _CharT *__p; 10136: __ptr_guard (_CharT *__ip): __p(__ip) { } 10136: ~__ptr_guard() { delete[] __p; } 10136: _CharT* __get() { return __p; } 10136: } __pg (new _CharT[__clen]); 10136: 10136: _CharT *__ws = __pg.__get(); 10136: for (size_t __i = 0; __i < __clen; ++__i) 10136: __ws[__i] = __out.widen(__s[__i]); 10136: __ostream_insert(__out, __ws, __clen); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: __out._M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { __out._M_setstate(ios_base::badbit); } 10136: } 10136: return __out; 10136: } 10136: 10136: 10136: 10136: 10136: extern template class basic_ostream; 10136: extern template ostream& endl(ostream&); 10136: extern template ostream& ends(ostream&); 10136: extern template ostream& flush(ostream&); 10136: extern template ostream& operator<<(ostream&, char); 10136: extern template ostream& operator<<(ostream&, unsigned char); 10136: extern template ostream& operator<<(ostream&, signed char); 10136: extern template ostream& operator<<(ostream&, const char*); 10136: extern template ostream& operator<<(ostream&, const unsigned char*); 10136: extern template ostream& operator<<(ostream&, const signed char*); 10136: 10136: extern template ostream& ostream::_M_insert(long); 10136: extern template ostream& ostream::_M_insert(unsigned long); 10136: extern template ostream& ostream::_M_insert(bool); 10136: 10136: extern template ostream& ostream::_M_insert(long long); 10136: extern template ostream& ostream::_M_insert(unsigned long long); 10136: 10136: extern template ostream& ostream::_M_insert(double); 10136: extern template ostream& ostream::_M_insert(long double); 10136: extern template ostream& ostream::_M_insert(const void*); 10136: 10136: 10136: extern template class basic_ostream; 10136: extern template wostream& endl(wostream&); 10136: extern template wostream& ends(wostream&); 10136: extern template wostream& flush(wostream&); 10136: extern template wostream& operator<<(wostream&, wchar_t); 10136: extern template wostream& operator<<(wostream&, char); 10136: extern template wostream& operator<<(wostream&, const wchar_t*); 10136: extern template wostream& operator<<(wostream&, const char*); 10136: 10136: extern template wostream& wostream::_M_insert(long); 10136: extern template wostream& wostream::_M_insert(unsigned long); 10136: extern template wostream& wostream::_M_insert(bool); 10136: 10136: extern template wostream& wostream::_M_insert(long long); 10136: extern template wostream& wostream::_M_insert(unsigned long long); 10136: 10136: extern template wostream& wostream::_M_insert(double); 10136: extern template wostream& wostream::_M_insert(long double); 10136: extern template wostream& wostream::_M_insert(const void*); 10136: 10136: 10136: 10136: 10136: } 10136: # 694 "/usr/include/c++/8/ostream" 2 3 10136: # 65 "/usr/include/c++/8/iterator" 2 3 10136: # 1 "/usr/include/c++/8/istream" 1 3 10136: # 36 "/usr/include/c++/8/istream" 3 10136: 10136: # 37 "/usr/include/c++/8/istream" 3 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 57 "/usr/include/c++/8/istream" 3 10136: template 10136: class basic_istream : virtual public basic_ios<_CharT, _Traits> 10136: { 10136: public: 10136: 10136: typedef _CharT char_type; 10136: typedef typename _Traits::int_type int_type; 10136: typedef typename _Traits::pos_type pos_type; 10136: typedef typename _Traits::off_type off_type; 10136: typedef _Traits traits_type; 10136: 10136: 10136: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 10136: typedef basic_ios<_CharT, _Traits> __ios_type; 10136: typedef basic_istream<_CharT, _Traits> __istream_type; 10136: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 10136: __num_get_type; 10136: typedef ctype<_CharT> __ctype_type; 10136: 10136: protected: 10136: 10136: 10136: 10136: 10136: 10136: streamsize _M_gcount; 10136: 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: explicit 10136: basic_istream(__streambuf_type* __sb) 10136: : _M_gcount(streamsize(0)) 10136: { this->init(__sb); } 10136: 10136: 10136: 10136: 10136: 10136: 10136: virtual 10136: ~basic_istream() 10136: { _M_gcount = streamsize(0); } 10136: 10136: 10136: class sentry; 10136: friend class sentry; 10136: # 119 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: operator>>(__istream_type& (*__pf)(__istream_type&)) 10136: { return __pf(*this); } 10136: 10136: __istream_type& 10136: operator>>(__ios_type& (*__pf)(__ios_type&)) 10136: { 10136: __pf(*this); 10136: return *this; 10136: } 10136: 10136: __istream_type& 10136: operator>>(ios_base& (*__pf)(ios_base&)) 10136: { 10136: __pf(*this); 10136: return *this; 10136: } 10136: # 167 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: operator>>(bool& __n) 10136: { return _M_extract(__n); } 10136: 10136: __istream_type& 10136: operator>>(short& __n); 10136: 10136: __istream_type& 10136: operator>>(unsigned short& __n) 10136: { return _M_extract(__n); } 10136: 10136: __istream_type& 10136: operator>>(int& __n); 10136: 10136: __istream_type& 10136: operator>>(unsigned int& __n) 10136: { return _M_extract(__n); } 10136: 10136: __istream_type& 10136: operator>>(long& __n) 10136: { return _M_extract(__n); } 10136: 10136: __istream_type& 10136: operator>>(unsigned long& __n) 10136: { return _M_extract(__n); } 10136: 10136: 10136: __istream_type& 10136: operator>>(long long& __n) 10136: { return _M_extract(__n); } 10136: 10136: __istream_type& 10136: operator>>(unsigned long long& __n) 10136: { return _M_extract(__n); } 10136: # 213 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: operator>>(float& __f) 10136: { return _M_extract(__f); } 10136: 10136: __istream_type& 10136: operator>>(double& __f) 10136: { return _M_extract(__f); } 10136: 10136: __istream_type& 10136: operator>>(long double& __f) 10136: { return _M_extract(__f); } 10136: # 234 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: operator>>(void*& __p) 10136: { return _M_extract(__p); } 10136: # 258 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: operator>>(__streambuf_type* __sb); 10136: # 268 "/usr/include/c++/8/istream" 3 10136: streamsize 10136: gcount() const 10136: { return _M_gcount; } 10136: # 301 "/usr/include/c++/8/istream" 3 10136: int_type 10136: get(); 10136: # 315 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: get(char_type& __c); 10136: # 342 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: get(char_type* __s, streamsize __n, char_type __delim); 10136: # 353 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: get(char_type* __s, streamsize __n) 10136: { return this->get(__s, __n, this->widen('\n')); } 10136: # 376 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: get(__streambuf_type& __sb, char_type __delim); 10136: # 386 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: get(__streambuf_type& __sb) 10136: { return this->get(__sb, this->widen('\n')); } 10136: # 415 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: getline(char_type* __s, streamsize __n, char_type __delim); 10136: # 426 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: getline(char_type* __s, streamsize __n) 10136: { return this->getline(__s, __n, this->widen('\n')); } 10136: # 450 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: ignore(streamsize __n, int_type __delim); 10136: 10136: __istream_type& 10136: ignore(streamsize __n); 10136: 10136: __istream_type& 10136: ignore(); 10136: # 467 "/usr/include/c++/8/istream" 3 10136: int_type 10136: peek(); 10136: # 485 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: read(char_type* __s, streamsize __n); 10136: # 504 "/usr/include/c++/8/istream" 3 10136: streamsize 10136: readsome(char_type* __s, streamsize __n); 10136: # 521 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: putback(char_type __c); 10136: # 537 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: unget(); 10136: # 555 "/usr/include/c++/8/istream" 3 10136: int 10136: sync(); 10136: # 570 "/usr/include/c++/8/istream" 3 10136: pos_type 10136: tellg(); 10136: # 585 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: seekg(pos_type); 10136: # 601 "/usr/include/c++/8/istream" 3 10136: __istream_type& 10136: seekg(off_type, ios_base::seekdir); 10136: 10136: 10136: protected: 10136: basic_istream() 10136: : _M_gcount(streamsize(0)) 10136: { this->init(0); } 10136: 10136: 10136: basic_istream(const basic_istream&) = delete; 10136: 10136: basic_istream(basic_istream&& __rhs) 10136: : __ios_type(), _M_gcount(__rhs._M_gcount) 10136: { 10136: __ios_type::move(__rhs); 10136: __rhs._M_gcount = 0; 10136: } 10136: 10136: 10136: 10136: basic_istream& operator=(const basic_istream&) = delete; 10136: 10136: basic_istream& 10136: operator=(basic_istream&& __rhs) 10136: { 10136: swap(__rhs); 10136: return *this; 10136: } 10136: 10136: void 10136: swap(basic_istream& __rhs) 10136: { 10136: __ios_type::swap(__rhs); 10136: std::swap(_M_gcount, __rhs._M_gcount); 10136: } 10136: 10136: 10136: template 10136: __istream_type& 10136: _M_extract(_ValueT& __v); 10136: }; 10136: 10136: 10136: template<> 10136: basic_istream& 10136: basic_istream:: 10136: getline(char_type* __s, streamsize __n, char_type __delim); 10136: 10136: template<> 10136: basic_istream& 10136: basic_istream:: 10136: ignore(streamsize __n); 10136: 10136: template<> 10136: basic_istream& 10136: basic_istream:: 10136: ignore(streamsize __n, int_type __delim); 10136: 10136: 10136: template<> 10136: basic_istream& 10136: basic_istream:: 10136: getline(char_type* __s, streamsize __n, char_type __delim); 10136: 10136: template<> 10136: basic_istream& 10136: basic_istream:: 10136: ignore(streamsize __n); 10136: 10136: template<> 10136: basic_istream& 10136: basic_istream:: 10136: ignore(streamsize __n, int_type __delim); 10136: # 685 "/usr/include/c++/8/istream" 3 10136: template 10136: class basic_istream<_CharT, _Traits>::sentry 10136: { 10136: 10136: bool _M_ok; 10136: 10136: public: 10136: 10136: typedef _Traits traits_type; 10136: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 10136: typedef basic_istream<_CharT, _Traits> __istream_type; 10136: typedef typename __istream_type::__ctype_type __ctype_type; 10136: typedef typename _Traits::int_type __int_type; 10136: # 721 "/usr/include/c++/8/istream" 3 10136: explicit 10136: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); 10136: # 732 "/usr/include/c++/8/istream" 3 10136: explicit 10136: 10136: operator bool() const 10136: { return _M_ok; } 10136: }; 10136: # 750 "/usr/include/c++/8/istream" 3 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); 10136: 10136: template 10136: inline basic_istream& 10136: operator>>(basic_istream& __in, unsigned char& __c) 10136: { return (__in >> reinterpret_cast(__c)); } 10136: 10136: template 10136: inline basic_istream& 10136: operator>>(basic_istream& __in, signed char& __c) 10136: { return (__in >> reinterpret_cast(__c)); } 10136: # 792 "/usr/include/c++/8/istream" 3 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); 10136: 10136: 10136: template<> 10136: basic_istream& 10136: operator>>(basic_istream& __in, char* __s); 10136: 10136: template 10136: inline basic_istream& 10136: operator>>(basic_istream& __in, unsigned char* __s) 10136: { return (__in >> reinterpret_cast(__s)); } 10136: 10136: template 10136: inline basic_istream& 10136: operator>>(basic_istream& __in, signed char* __s) 10136: { return (__in >> reinterpret_cast(__s)); } 10136: # 823 "/usr/include/c++/8/istream" 3 10136: template 10136: class basic_iostream 10136: : public basic_istream<_CharT, _Traits>, 10136: public basic_ostream<_CharT, _Traits> 10136: { 10136: public: 10136: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef typename _Traits::int_type int_type; 10136: typedef typename _Traits::pos_type pos_type; 10136: typedef typename _Traits::off_type off_type; 10136: typedef _Traits traits_type; 10136: 10136: 10136: typedef basic_istream<_CharT, _Traits> __istream_type; 10136: typedef basic_ostream<_CharT, _Traits> __ostream_type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: explicit 10136: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) 10136: : __istream_type(__sb), __ostream_type(__sb) { } 10136: 10136: 10136: 10136: 10136: virtual 10136: ~basic_iostream() { } 10136: 10136: protected: 10136: basic_iostream() 10136: : __istream_type(), __ostream_type() { } 10136: 10136: 10136: basic_iostream(const basic_iostream&) = delete; 10136: 10136: basic_iostream(basic_iostream&& __rhs) 10136: : __istream_type(std::move(__rhs)), __ostream_type(*this) 10136: { } 10136: 10136: 10136: 10136: basic_iostream& operator=(const basic_iostream&) = delete; 10136: 10136: basic_iostream& 10136: operator=(basic_iostream&& __rhs) 10136: { 10136: swap(__rhs); 10136: return *this; 10136: } 10136: 10136: void 10136: swap(basic_iostream& __rhs) 10136: { __istream_type::swap(__rhs); } 10136: 10136: }; 10136: # 906 "/usr/include/c++/8/istream" 3 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: ws(basic_istream<_CharT, _Traits>& __is); 10136: 10136: 10136: template 10136: basic_istream<_Ch, _Up>& 10136: __is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*); 10136: 10136: template 10136: struct __is_convertible_to_basic_istream_impl 10136: { 10136: using __istream_type = void; 10136: }; 10136: 10136: template 10136: using __do_is_convertible_to_basic_istream_impl = 10136: decltype(__is_convertible_to_basic_istream_test 10136: (declval::type*>())); 10136: 10136: template 10136: struct __is_convertible_to_basic_istream_impl 10136: <_Tp, 10136: __void_t<__do_is_convertible_to_basic_istream_impl<_Tp>>> 10136: { 10136: using __istream_type = 10136: __do_is_convertible_to_basic_istream_impl<_Tp>; 10136: }; 10136: 10136: template 10136: struct __is_convertible_to_basic_istream 10136: : __is_convertible_to_basic_istream_impl<_Tp> 10136: { 10136: public: 10136: using type = __not_::__istream_type>>; 10136: constexpr static bool value = type::value; 10136: }; 10136: 10136: template 10136: struct __is_extractable : false_type {}; 10136: 10136: template 10136: struct __is_extractable<_Istream, _Tp, 10136: __void_t() 10136: >> declval<_Tp>())>> 10136: : true_type {}; 10136: 10136: template 10136: using __rvalue_istream_type = 10136: typename __is_convertible_to_basic_istream< 10136: _Istream>::__istream_type; 10136: # 972 "/usr/include/c++/8/istream" 3 10136: template 10136: inline 10136: typename enable_if<__and_<__not_>, 10136: __is_convertible_to_basic_istream<_Istream>, 10136: __is_extractable< 10136: __rvalue_istream_type<_Istream>, 10136: _Tp&&>>::value, 10136: __rvalue_istream_type<_Istream>>::type 10136: operator>>(_Istream&& __is, _Tp&& __x) 10136: { 10136: __rvalue_istream_type<_Istream> __ret_is = __is; 10136: __ret_is >> std::forward<_Tp>(__x); 10136: return __ret_is; 10136: } 10136: 10136: 10136: 10136: } 10136: 10136: # 1 "/usr/include/c++/8/bits/istream.tcc" 1 3 10136: # 37 "/usr/include/c++/8/bits/istream.tcc" 3 10136: 10136: # 38 "/usr/include/c++/8/bits/istream.tcc" 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: template 10136: basic_istream<_CharT, _Traits>::sentry:: 10136: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: if (__in.good()) 10136: try 10136: { 10136: if (__in.tie()) 10136: __in.tie()->flush(); 10136: if (!__noskip && bool(__in.flags() & ios_base::skipws)) 10136: { 10136: const __int_type __eof = traits_type::eof(); 10136: __streambuf_type* __sb = __in.rdbuf(); 10136: __int_type __c = __sb->sgetc(); 10136: 10136: const __ctype_type& __ct = __check_facet(__in._M_ctype); 10136: while (!traits_type::eq_int_type(__c, __eof) 10136: && __ct.is(ctype_base::space, 10136: traits_type::to_char_type(__c))) 10136: __c = __sb->snextc(); 10136: 10136: 10136: 10136: 10136: if (traits_type::eq_int_type(__c, __eof)) 10136: __err |= ios_base::eofbit; 10136: } 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: __in._M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { __in._M_setstate(ios_base::badbit); } 10136: 10136: if (__in.good() && __err == ios_base::goodbit) 10136: _M_ok = true; 10136: else 10136: { 10136: __err |= ios_base::failbit; 10136: __in.setstate(__err); 10136: } 10136: } 10136: 10136: template 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: _M_extract(_ValueT& __v) 10136: { 10136: sentry __cerb(*this, false); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const __num_get_type& __ng = __check_facet(this->_M_num_get); 10136: __ng.get(*this, 0, *this, __err, __v); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: operator>>(short& __n) 10136: { 10136: 10136: 10136: sentry __cerb(*this, false); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: long __l; 10136: const __num_get_type& __ng = __check_facet(this->_M_num_get); 10136: __ng.get(*this, 0, *this, __err, __l); 10136: 10136: 10136: 10136: if (__l < __gnu_cxx::__numeric_traits::__min) 10136: { 10136: __err |= ios_base::failbit; 10136: __n = __gnu_cxx::__numeric_traits::__min; 10136: } 10136: else if (__l > __gnu_cxx::__numeric_traits::__max) 10136: { 10136: __err |= ios_base::failbit; 10136: __n = __gnu_cxx::__numeric_traits::__max; 10136: } 10136: else 10136: __n = short(__l); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: operator>>(int& __n) 10136: { 10136: 10136: 10136: sentry __cerb(*this, false); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: long __l; 10136: const __num_get_type& __ng = __check_facet(this->_M_num_get); 10136: __ng.get(*this, 0, *this, __err, __l); 10136: 10136: 10136: 10136: if (__l < __gnu_cxx::__numeric_traits::__min) 10136: { 10136: __err |= ios_base::failbit; 10136: __n = __gnu_cxx::__numeric_traits::__min; 10136: } 10136: else if (__l > __gnu_cxx::__numeric_traits::__max) 10136: { 10136: __err |= ios_base::failbit; 10136: __n = __gnu_cxx::__numeric_traits::__max; 10136: } 10136: else 10136: __n = int(__l); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: operator>>(__streambuf_type* __sbout) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: sentry __cerb(*this, false); 10136: if (__cerb && __sbout) 10136: { 10136: try 10136: { 10136: bool __ineof; 10136: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) 10136: __err |= ios_base::failbit; 10136: if (__ineof) 10136: __err |= ios_base::eofbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::failbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::failbit); } 10136: } 10136: else if (!__sbout) 10136: __err |= ios_base::failbit; 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: template 10136: typename basic_istream<_CharT, _Traits>::int_type 10136: basic_istream<_CharT, _Traits>:: 10136: get(void) 10136: { 10136: const int_type __eof = traits_type::eof(); 10136: int_type __c = __eof; 10136: _M_gcount = 0; 10136: ios_base::iostate __err = ios_base::goodbit; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: __c = this->rdbuf()->sbumpc(); 10136: 10136: if (!traits_type::eq_int_type(__c, __eof)) 10136: _M_gcount = 1; 10136: else 10136: __err |= ios_base::eofbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: } 10136: if (!_M_gcount) 10136: __err |= ios_base::failbit; 10136: if (__err) 10136: this->setstate(__err); 10136: return __c; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: get(char_type& __c) 10136: { 10136: _M_gcount = 0; 10136: ios_base::iostate __err = ios_base::goodbit; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: const int_type __cb = this->rdbuf()->sbumpc(); 10136: 10136: if (!traits_type::eq_int_type(__cb, traits_type::eof())) 10136: { 10136: _M_gcount = 1; 10136: __c = traits_type::to_char_type(__cb); 10136: } 10136: else 10136: __err |= ios_base::eofbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: } 10136: if (!_M_gcount) 10136: __err |= ios_base::failbit; 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: get(char_type* __s, streamsize __n, char_type __delim) 10136: { 10136: _M_gcount = 0; 10136: ios_base::iostate __err = ios_base::goodbit; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: const int_type __idelim = traits_type::to_int_type(__delim); 10136: const int_type __eof = traits_type::eof(); 10136: __streambuf_type* __sb = this->rdbuf(); 10136: int_type __c = __sb->sgetc(); 10136: 10136: while (_M_gcount + 1 < __n 10136: && !traits_type::eq_int_type(__c, __eof) 10136: && !traits_type::eq_int_type(__c, __idelim)) 10136: { 10136: *__s++ = traits_type::to_char_type(__c); 10136: ++_M_gcount; 10136: __c = __sb->snextc(); 10136: } 10136: if (traits_type::eq_int_type(__c, __eof)) 10136: __err |= ios_base::eofbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: } 10136: 10136: 10136: if (__n > 0) 10136: *__s = char_type(); 10136: if (!_M_gcount) 10136: __err |= ios_base::failbit; 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: get(__streambuf_type& __sb, char_type __delim) 10136: { 10136: _M_gcount = 0; 10136: ios_base::iostate __err = ios_base::goodbit; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: const int_type __idelim = traits_type::to_int_type(__delim); 10136: const int_type __eof = traits_type::eof(); 10136: __streambuf_type* __this_sb = this->rdbuf(); 10136: int_type __c = __this_sb->sgetc(); 10136: char_type __c2 = traits_type::to_char_type(__c); 10136: 10136: while (!traits_type::eq_int_type(__c, __eof) 10136: && !traits_type::eq_int_type(__c, __idelim) 10136: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) 10136: { 10136: ++_M_gcount; 10136: __c = __this_sb->snextc(); 10136: __c2 = traits_type::to_char_type(__c); 10136: } 10136: if (traits_type::eq_int_type(__c, __eof)) 10136: __err |= ios_base::eofbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: } 10136: if (!_M_gcount) 10136: __err |= ios_base::failbit; 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: getline(char_type* __s, streamsize __n, char_type __delim) 10136: { 10136: _M_gcount = 0; 10136: ios_base::iostate __err = ios_base::goodbit; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: const int_type __idelim = traits_type::to_int_type(__delim); 10136: const int_type __eof = traits_type::eof(); 10136: __streambuf_type* __sb = this->rdbuf(); 10136: int_type __c = __sb->sgetc(); 10136: 10136: while (_M_gcount + 1 < __n 10136: && !traits_type::eq_int_type(__c, __eof) 10136: && !traits_type::eq_int_type(__c, __idelim)) 10136: { 10136: *__s++ = traits_type::to_char_type(__c); 10136: __c = __sb->snextc(); 10136: ++_M_gcount; 10136: } 10136: if (traits_type::eq_int_type(__c, __eof)) 10136: __err |= ios_base::eofbit; 10136: else 10136: { 10136: if (traits_type::eq_int_type(__c, __idelim)) 10136: { 10136: __sb->sbumpc(); 10136: ++_M_gcount; 10136: } 10136: else 10136: __err |= ios_base::failbit; 10136: } 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: } 10136: 10136: 10136: if (__n > 0) 10136: *__s = char_type(); 10136: if (!_M_gcount) 10136: __err |= ios_base::failbit; 10136: if (__err) 10136: this->setstate(__err); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: ignore(void) 10136: { 10136: _M_gcount = 0; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const int_type __eof = traits_type::eof(); 10136: __streambuf_type* __sb = this->rdbuf(); 10136: 10136: if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) 10136: __err |= ios_base::eofbit; 10136: else 10136: _M_gcount = 1; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: ignore(streamsize __n) 10136: { 10136: _M_gcount = 0; 10136: sentry __cerb(*this, true); 10136: if (__cerb && __n > 0) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const int_type __eof = traits_type::eof(); 10136: __streambuf_type* __sb = this->rdbuf(); 10136: int_type __c = __sb->sgetc(); 10136: # 521 "/usr/include/c++/8/bits/istream.tcc" 3 10136: bool __large_ignore = false; 10136: while (true) 10136: { 10136: while (_M_gcount < __n 10136: && !traits_type::eq_int_type(__c, __eof)) 10136: { 10136: ++_M_gcount; 10136: __c = __sb->snextc(); 10136: } 10136: if (__n == __gnu_cxx::__numeric_traits::__max 10136: && !traits_type::eq_int_type(__c, __eof)) 10136: { 10136: _M_gcount = 10136: __gnu_cxx::__numeric_traits::__min; 10136: __large_ignore = true; 10136: } 10136: else 10136: break; 10136: } 10136: 10136: if (__large_ignore) 10136: _M_gcount = __gnu_cxx::__numeric_traits::__max; 10136: 10136: if (traits_type::eq_int_type(__c, __eof)) 10136: __err |= ios_base::eofbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: ignore(streamsize __n, int_type __delim) 10136: { 10136: _M_gcount = 0; 10136: sentry __cerb(*this, true); 10136: if (__cerb && __n > 0) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const int_type __eof = traits_type::eof(); 10136: __streambuf_type* __sb = this->rdbuf(); 10136: int_type __c = __sb->sgetc(); 10136: 10136: 10136: bool __large_ignore = false; 10136: while (true) 10136: { 10136: while (_M_gcount < __n 10136: && !traits_type::eq_int_type(__c, __eof) 10136: && !traits_type::eq_int_type(__c, __delim)) 10136: { 10136: ++_M_gcount; 10136: __c = __sb->snextc(); 10136: } 10136: if (__n == __gnu_cxx::__numeric_traits::__max 10136: && !traits_type::eq_int_type(__c, __eof) 10136: && !traits_type::eq_int_type(__c, __delim)) 10136: { 10136: _M_gcount = 10136: __gnu_cxx::__numeric_traits::__min; 10136: __large_ignore = true; 10136: } 10136: else 10136: break; 10136: } 10136: 10136: if (__large_ignore) 10136: _M_gcount = __gnu_cxx::__numeric_traits::__max; 10136: 10136: if (traits_type::eq_int_type(__c, __eof)) 10136: __err |= ios_base::eofbit; 10136: else if (traits_type::eq_int_type(__c, __delim)) 10136: { 10136: if (_M_gcount 10136: < __gnu_cxx::__numeric_traits::__max) 10136: ++_M_gcount; 10136: __sb->sbumpc(); 10136: } 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: typename basic_istream<_CharT, _Traits>::int_type 10136: basic_istream<_CharT, _Traits>:: 10136: peek(void) 10136: { 10136: int_type __c = traits_type::eof(); 10136: _M_gcount = 0; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: __c = this->rdbuf()->sgetc(); 10136: if (traits_type::eq_int_type(__c, traits_type::eof())) 10136: __err |= ios_base::eofbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return __c; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: read(char_type* __s, streamsize __n) 10136: { 10136: _M_gcount = 0; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: _M_gcount = this->rdbuf()->sgetn(__s, __n); 10136: if (_M_gcount != __n) 10136: __err |= (ios_base::eofbit | ios_base::failbit); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: streamsize 10136: basic_istream<_CharT, _Traits>:: 10136: readsome(char_type* __s, streamsize __n) 10136: { 10136: _M_gcount = 0; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: 10136: const streamsize __num = this->rdbuf()->in_avail(); 10136: if (__num > 0) 10136: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); 10136: else if (__num == -1) 10136: __err |= ios_base::eofbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return _M_gcount; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: putback(char_type __c) 10136: { 10136: 10136: 10136: _M_gcount = 0; 10136: 10136: this->clear(this->rdstate() & ~ios_base::eofbit); 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const int_type __eof = traits_type::eof(); 10136: __streambuf_type* __sb = this->rdbuf(); 10136: if (!__sb 10136: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) 10136: __err |= ios_base::badbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: unget(void) 10136: { 10136: 10136: 10136: _M_gcount = 0; 10136: 10136: this->clear(this->rdstate() & ~ios_base::eofbit); 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const int_type __eof = traits_type::eof(); 10136: __streambuf_type* __sb = this->rdbuf(); 10136: if (!__sb 10136: || traits_type::eq_int_type(__sb->sungetc(), __eof)) 10136: __err |= ios_base::badbit; 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: int 10136: basic_istream<_CharT, _Traits>:: 10136: sync(void) 10136: { 10136: 10136: 10136: int __ret = -1; 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: __streambuf_type* __sb = this->rdbuf(); 10136: if (__sb) 10136: { 10136: if (__sb->pubsync() == -1) 10136: __err |= ios_base::badbit; 10136: else 10136: __ret = 0; 10136: } 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return __ret; 10136: } 10136: 10136: template 10136: typename basic_istream<_CharT, _Traits>::pos_type 10136: basic_istream<_CharT, _Traits>:: 10136: tellg(void) 10136: { 10136: 10136: 10136: pos_type __ret = pos_type(-1); 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: if (!this->fail()) 10136: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, 10136: ios_base::in); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: } 10136: return __ret; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: seekg(pos_type __pos) 10136: { 10136: 10136: 10136: 10136: this->clear(this->rdstate() & ~ios_base::eofbit); 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: if (!this->fail()) 10136: { 10136: 10136: const pos_type __p = this->rdbuf()->pubseekpos(__pos, 10136: ios_base::in); 10136: 10136: 10136: if (__p == pos_type(off_type(-1))) 10136: __err |= ios_base::failbit; 10136: } 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: basic_istream<_CharT, _Traits>:: 10136: seekg(off_type __off, ios_base::seekdir __dir) 10136: { 10136: 10136: 10136: 10136: this->clear(this->rdstate() & ~ios_base::eofbit); 10136: sentry __cerb(*this, true); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: if (!this->fail()) 10136: { 10136: 10136: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 10136: ios_base::in); 10136: 10136: 10136: if (__p == pos_type(off_type(-1))) 10136: __err |= ios_base::failbit; 10136: } 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: this->_M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { this->_M_setstate(ios_base::badbit); } 10136: if (__err) 10136: this->setstate(__err); 10136: } 10136: return *this; 10136: } 10136: 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) 10136: { 10136: typedef basic_istream<_CharT, _Traits> __istream_type; 10136: typedef typename __istream_type::int_type __int_type; 10136: 10136: typename __istream_type::sentry __cerb(__in, false); 10136: if (__cerb) 10136: { 10136: ios_base::iostate __err = ios_base::goodbit; 10136: try 10136: { 10136: const __int_type __cb = __in.rdbuf()->sbumpc(); 10136: if (!_Traits::eq_int_type(__cb, _Traits::eof())) 10136: __c = _Traits::to_char_type(__cb); 10136: else 10136: __err |= (ios_base::eofbit | ios_base::failbit); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: __in._M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { __in._M_setstate(ios_base::badbit); } 10136: if (__err) 10136: __in.setstate(__err); 10136: } 10136: return __in; 10136: } 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) 10136: { 10136: typedef basic_istream<_CharT, _Traits> __istream_type; 10136: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 10136: typedef typename _Traits::int_type int_type; 10136: typedef _CharT char_type; 10136: typedef ctype<_CharT> __ctype_type; 10136: 10136: streamsize __extracted = 0; 10136: ios_base::iostate __err = ios_base::goodbit; 10136: typename __istream_type::sentry __cerb(__in, false); 10136: if (__cerb) 10136: { 10136: try 10136: { 10136: 10136: streamsize __num = __in.width(); 10136: if (__num <= 0) 10136: __num = __gnu_cxx::__numeric_traits::__max; 10136: 10136: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 10136: 10136: const int_type __eof = _Traits::eof(); 10136: __streambuf_type* __sb = __in.rdbuf(); 10136: int_type __c = __sb->sgetc(); 10136: 10136: while (__extracted < __num - 1 10136: && !_Traits::eq_int_type(__c, __eof) 10136: && !__ct.is(ctype_base::space, 10136: _Traits::to_char_type(__c))) 10136: { 10136: *__s++ = _Traits::to_char_type(__c); 10136: ++__extracted; 10136: __c = __sb->snextc(); 10136: } 10136: if (_Traits::eq_int_type(__c, __eof)) 10136: __err |= ios_base::eofbit; 10136: 10136: 10136: 10136: *__s = char_type(); 10136: __in.width(0); 10136: } 10136: catch(__cxxabiv1::__forced_unwind&) 10136: { 10136: __in._M_setstate(ios_base::badbit); 10136: throw; 10136: } 10136: catch(...) 10136: { __in._M_setstate(ios_base::badbit); } 10136: } 10136: if (!__extracted) 10136: __err |= ios_base::failbit; 10136: if (__err) 10136: __in.setstate(__err); 10136: return __in; 10136: } 10136: 10136: 10136: template 10136: basic_istream<_CharT, _Traits>& 10136: ws(basic_istream<_CharT, _Traits>& __in) 10136: { 10136: typedef basic_istream<_CharT, _Traits> __istream_type; 10136: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 10136: typedef typename __istream_type::int_type __int_type; 10136: typedef ctype<_CharT> __ctype_type; 10136: 10136: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 10136: const __int_type __eof = _Traits::eof(); 10136: __streambuf_type* __sb = __in.rdbuf(); 10136: __int_type __c = __sb->sgetc(); 10136: 10136: while (!_Traits::eq_int_type(__c, __eof) 10136: && __ct.is(ctype_base::space, _Traits::to_char_type(__c))) 10136: __c = __sb->snextc(); 10136: 10136: if (_Traits::eq_int_type(__c, __eof)) 10136: __in.setstate(ios_base::eofbit); 10136: return __in; 10136: } 10136: 10136: 10136: 10136: 10136: extern template class basic_istream; 10136: extern template istream& ws(istream&); 10136: extern template istream& operator>>(istream&, char&); 10136: extern template istream& operator>>(istream&, char*); 10136: extern template istream& operator>>(istream&, unsigned char&); 10136: extern template istream& operator>>(istream&, signed char&); 10136: extern template istream& operator>>(istream&, unsigned char*); 10136: extern template istream& operator>>(istream&, signed char*); 10136: 10136: extern template istream& istream::_M_extract(unsigned short&); 10136: extern template istream& istream::_M_extract(unsigned int&); 10136: extern template istream& istream::_M_extract(long&); 10136: extern template istream& istream::_M_extract(unsigned long&); 10136: extern template istream& istream::_M_extract(bool&); 10136: 10136: extern template istream& istream::_M_extract(long long&); 10136: extern template istream& istream::_M_extract(unsigned long long&); 10136: 10136: extern template istream& istream::_M_extract(float&); 10136: extern template istream& istream::_M_extract(double&); 10136: extern template istream& istream::_M_extract(long double&); 10136: extern template istream& istream::_M_extract(void*&); 10136: 10136: extern template class basic_iostream; 10136: 10136: 10136: extern template class basic_istream; 10136: extern template wistream& ws(wistream&); 10136: extern template wistream& operator>>(wistream&, wchar_t&); 10136: extern template wistream& operator>>(wistream&, wchar_t*); 10136: 10136: extern template wistream& wistream::_M_extract(unsigned short&); 10136: extern template wistream& wistream::_M_extract(unsigned int&); 10136: extern template wistream& wistream::_M_extract(long&); 10136: extern template wistream& wistream::_M_extract(unsigned long&); 10136: extern template wistream& wistream::_M_extract(bool&); 10136: 10136: extern template wistream& wistream::_M_extract(long long&); 10136: extern template wistream& wistream::_M_extract(unsigned long long&); 10136: 10136: extern template wistream& wistream::_M_extract(float&); 10136: extern template wistream& wistream::_M_extract(double&); 10136: extern template wistream& wistream::_M_extract(long double&); 10136: extern template wistream& wistream::_M_extract(void*&); 10136: 10136: extern template class basic_iostream; 10136: 10136: 10136: 10136: 10136: } 10136: # 992 "/usr/include/c++/8/istream" 2 3 10136: # 66 "/usr/include/c++/8/iterator" 2 3 10136: # 1 "/usr/include/c++/8/bits/stream_iterator.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/stream_iterator.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/stream_iterator.h" 3 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template, typename _Dist = ptrdiff_t> 10136: class istream_iterator 10136: : public iterator 10136: { 10136: public: 10136: typedef _CharT char_type; 10136: typedef _Traits traits_type; 10136: typedef basic_istream<_CharT, _Traits> istream_type; 10136: 10136: private: 10136: istream_type* _M_stream; 10136: _Tp _M_value; 10136: bool _M_ok; 10136: 10136: public: 10136: 10136: constexpr istream_iterator() 10136: : _M_stream(0), _M_value(), _M_ok(false) {} 10136: 10136: 10136: istream_iterator(istream_type& __s) 10136: : _M_stream(std::__addressof(__s)) 10136: { _M_read(); } 10136: 10136: istream_iterator(const istream_iterator& __obj) 10136: : _M_stream(__obj._M_stream), _M_value(__obj._M_value), 10136: _M_ok(__obj._M_ok) 10136: { } 10136: 10136: const _Tp& 10136: operator*() const 10136: { 10136: 10136: 10136: ; 10136: return _M_value; 10136: } 10136: 10136: const _Tp* 10136: operator->() const { return std::__addressof((operator*())); } 10136: 10136: istream_iterator& 10136: operator++() 10136: { 10136: 10136: 10136: ; 10136: _M_read(); 10136: return *this; 10136: } 10136: 10136: istream_iterator 10136: operator++(int) 10136: { 10136: 10136: 10136: ; 10136: istream_iterator __tmp = *this; 10136: _M_read(); 10136: return __tmp; 10136: } 10136: 10136: bool 10136: _M_equal(const istream_iterator& __x) const 10136: { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); } 10136: 10136: private: 10136: void 10136: _M_read() 10136: { 10136: _M_ok = (_M_stream && *_M_stream) ? true : false; 10136: if (_M_ok) 10136: { 10136: *_M_stream >> _M_value; 10136: _M_ok = *_M_stream ? true : false; 10136: } 10136: } 10136: }; 10136: 10136: 10136: template 10136: inline bool 10136: operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, 10136: const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) 10136: { return __x._M_equal(__y); } 10136: 10136: 10136: template 10136: inline bool 10136: operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, 10136: const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) 10136: { return !__x._M_equal(__y); } 10136: # 152 "/usr/include/c++/8/bits/stream_iterator.h" 3 10136: template > 10136: class ostream_iterator 10136: : public iterator 10136: { 10136: public: 10136: 10136: 10136: typedef _CharT char_type; 10136: typedef _Traits traits_type; 10136: typedef basic_ostream<_CharT, _Traits> ostream_type; 10136: 10136: 10136: private: 10136: ostream_type* _M_stream; 10136: const _CharT* _M_string; 10136: 10136: public: 10136: 10136: ostream_iterator(ostream_type& __s) 10136: : _M_stream(std::__addressof(__s)), _M_string(0) {} 10136: # 184 "/usr/include/c++/8/bits/stream_iterator.h" 3 10136: ostream_iterator(ostream_type& __s, const _CharT* __c) 10136: : _M_stream(&__s), _M_string(__c) { } 10136: 10136: 10136: ostream_iterator(const ostream_iterator& __obj) 10136: : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { } 10136: 10136: 10136: 10136: ostream_iterator& 10136: operator=(const _Tp& __value) 10136: { 10136: 10136: 10136: ; 10136: *_M_stream << __value; 10136: if (_M_string) *_M_stream << _M_string; 10136: return *this; 10136: } 10136: 10136: ostream_iterator& 10136: operator*() 10136: { return *this; } 10136: 10136: ostream_iterator& 10136: operator++() 10136: { return *this; } 10136: 10136: ostream_iterator& 10136: operator++(int) 10136: { return *this; } 10136: }; 10136: 10136: 10136: 10136: 10136: } 10136: # 67 "/usr/include/c++/8/iterator" 2 3 10136: # 28 "../../include/tbb/internal/_range_iterator.h" 2 10136: 10136: 10136: 10136: # 30 "../../include/tbb/internal/_range_iterator.h" 10136: namespace tbb { 10136: 10136: namespace internal { 10136: 10136: 10136: using std::begin; 10136: using std::end; 10136: template 10136: auto first(Container& c)-> decltype(begin(c)) {return begin(c);} 10136: 10136: template 10136: auto first(const Container& c)-> decltype(begin(c)) {return begin(c);} 10136: 10136: template 10136: auto last(Container& c)-> decltype(begin(c)) {return end(c);} 10136: 10136: template 10136: auto last(const Container& c)-> decltype(begin(c)) {return end(c);} 10136: # 62 "../../include/tbb/internal/_range_iterator.h" 10136: template 10136: T* first(T (&arr) [size]) {return arr;} 10136: 10136: template 10136: T* last(T (&arr) [size]) {return arr + size;} 10136: } 10136: } 10136: # 25 "../../include/tbb/parallel_do.h" 2 10136: 10136: 10136: 10136: 10136: 10136: namespace tbb { 10136: namespace interface9 { 10136: 10136: namespace internal { 10136: template class parallel_do_feeder_impl; 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: class parallel_do_feeder: ::tbb::internal::no_copy 10136: { 10136: parallel_do_feeder() {} 10136: virtual ~parallel_do_feeder () {} 10136: virtual void internal_add_copy( const Item& item ) = 0; 10136: 10136: virtual void internal_add_move( Item&& item ) = 0; 10136: 10136: template friend class internal::parallel_do_feeder_impl; 10136: public: 10136: 10136: void add( const Item& item ) {internal_add_copy(item);} 10136: 10136: void add( Item&& item ) {internal_add_move(std::move(item));} 10136: 10136: }; 10136: 10136: 10136: namespace internal { 10136: template class do_group_task; 10136: 10136: 10136: 10136: 10136: template 10136: class parallel_do_operator_selector 10136: { 10136: typedef parallel_do_feeder Feeder; 10136: template 10136: static void internal_call( const Body& obj, A1&& arg1, A2&, void (Body::*)(CvItem) const ) { 10136: obj(tbb::internal::forward(arg1)); 10136: } 10136: template 10136: static void internal_call( const Body& obj, A1&& arg1, A2& arg2, void (Body::*)(CvItem, parallel_do_feeder&) const ) { 10136: obj(tbb::internal::forward(arg1), arg2); 10136: } 10136: template 10136: static void internal_call( const Body& obj, A1&& arg1, A2&, void (Body::*)(CvItem&) const ) { 10136: obj(arg1); 10136: } 10136: template 10136: static void internal_call( const Body& obj, A1&& arg1, A2& arg2, void (Body::*)(CvItem&, parallel_do_feeder&) const ) { 10136: obj(arg1, arg2); 10136: } 10136: public: 10136: template 10136: static void call( const Body& obj, A1&& arg1, A2& arg2 ) 10136: { 10136: internal_call( obj, tbb::internal::forward(arg1), arg2, &Body::operator() ); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: class do_iteration_task: public task 10136: { 10136: typedef parallel_do_feeder_impl feeder_type; 10136: 10136: Item my_value; 10136: feeder_type& my_feeder; 10136: 10136: do_iteration_task( const Item& value, feeder_type& feeder ) : 10136: my_value(value), my_feeder(feeder) 10136: {} 10136: 10136: 10136: do_iteration_task( Item&& value, feeder_type& feeder ) : 10136: my_value(std::move(value)), my_feeder(feeder) 10136: {} 10136: 10136: 10136: task* execute() override 10136: { 10136: parallel_do_operator_selector::call(*my_feeder.my_body, tbb::internal::move(my_value), my_feeder); 10136: return 10136: # 117 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 117 "../../include/tbb/parallel_do.h" 10136: ; 10136: } 10136: 10136: template friend class parallel_do_feeder_impl; 10136: }; 10136: 10136: template 10136: class do_iteration_task_iter: public task 10136: { 10136: typedef parallel_do_feeder_impl feeder_type; 10136: 10136: Iterator my_iter; 10136: feeder_type& my_feeder; 10136: 10136: do_iteration_task_iter( const Iterator& iter, feeder_type& feeder ) : 10136: my_iter(iter), my_feeder(feeder) 10136: {} 10136: 10136: task* execute() override 10136: { 10136: parallel_do_operator_selector::call(*my_feeder.my_body, *my_iter, my_feeder); 10136: return 10136: # 138 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 138 "../../include/tbb/parallel_do.h" 10136: ; 10136: } 10136: 10136: template friend class do_group_task_forward; 10136: template friend class do_group_task_input; 10136: template friend class do_task_iter; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: class parallel_do_feeder_impl : public parallel_do_feeder 10136: { 10136: 10136: 10136: void internal_add_copy_impl(std::true_type, const Item& item) { 10136: typedef do_iteration_task iteration_type; 10136: iteration_type& t = *new (task::allocate_additional_child_of(*my_barrier)) iteration_type(item, *this); 10136: task::spawn(t); 10136: } 10136: void internal_add_copy_impl(std::false_type, const Item&) { 10136: ((false)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_do.h",160,"false","Overloading for r-value reference doesn't work or it's not movable and not copyable object")); 10136: } 10136: void internal_add_copy( const Item& item ) override 10136: { 10136: 10136: internal_add_copy_impl(typename std::is_copy_constructible::type(), item); 10136: 10136: 10136: 10136: } 10136: void internal_add_move( Item&& item ) override 10136: { 10136: typedef do_iteration_task iteration_type; 10136: iteration_type& t = *new (task::allocate_additional_child_of(*my_barrier)) iteration_type(std::move(item), *this); 10136: task::spawn(t); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: public: 10136: const Body* my_body; 10136: empty_task* my_barrier; 10136: 10136: parallel_do_feeder_impl() 10136: { 10136: my_barrier = new( task::allocate_root() ) empty_task(); 10136: ((my_barrier)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_do.h",190,"my_barrier","root task allocation failed")); 10136: } 10136: 10136: 10136: parallel_do_feeder_impl(tbb::task_group_context &context) 10136: { 10136: my_barrier = new( task::allocate_root(context) ) empty_task(); 10136: ((my_barrier)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_do.h",197,"my_barrier","root task allocation failed")); 10136: } 10136: 10136: 10136: ~parallel_do_feeder_impl() 10136: { 10136: my_barrier->destroy(*my_barrier); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class do_group_task_forward: public task 10136: { 10136: static const size_t max_arg_size = 4; 10136: 10136: typedef parallel_do_feeder_impl feeder_type; 10136: 10136: feeder_type& my_feeder; 10136: Iterator my_first; 10136: size_t my_size; 10136: 10136: do_group_task_forward( Iterator first, size_t size, feeder_type& feeder ) 10136: : my_feeder(feeder), my_first(first), my_size(size) 10136: {} 10136: 10136: task* execute() override 10136: { 10136: typedef do_iteration_task_iter iteration_type; 10136: ((my_size>0)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_do.h",230,"my_size>0", 10136: # 230 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 230 "../../include/tbb/parallel_do.h" 10136: )); 10136: task_list list; 10136: task* t; 10136: size_t k=0; 10136: for(;;) { 10136: t = new( allocate_child() ) iteration_type( my_first, my_feeder ); 10136: ++my_first; 10136: if( ++k==my_size ) break; 10136: list.push_back(*t); 10136: } 10136: set_ref_count(int(k+1)); 10136: spawn(list); 10136: spawn_and_wait_for_all(*t); 10136: return 10136: # 243 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 243 "../../include/tbb/parallel_do.h" 10136: ; 10136: } 10136: 10136: template friend class do_task_iter; 10136: }; 10136: 10136: template 10136: class do_group_task_input: public task 10136: { 10136: static const size_t max_arg_size = 4; 10136: 10136: typedef parallel_do_feeder_impl feeder_type; 10136: 10136: feeder_type& my_feeder; 10136: size_t my_size; 10136: aligned_space my_arg; 10136: 10136: do_group_task_input( feeder_type& feeder ) 10136: : my_feeder(feeder), my_size(0) 10136: {} 10136: 10136: task* execute() override 10136: { 10136: 10136: typedef std::move_iterator Item_iterator; 10136: 10136: 10136: 10136: typedef do_iteration_task_iter iteration_type; 10136: ((my_size>0)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_do.h",272,"my_size>0", 10136: # 272 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 272 "../../include/tbb/parallel_do.h" 10136: )); 10136: task_list list; 10136: task* t; 10136: size_t k=0; 10136: for(;;) { 10136: t = new( allocate_child() ) iteration_type( Item_iterator(my_arg.begin() + k), my_feeder ); 10136: if( ++k==my_size ) break; 10136: list.push_back(*t); 10136: } 10136: set_ref_count(int(k+1)); 10136: spawn(list); 10136: spawn_and_wait_for_all(*t); 10136: return 10136: # 284 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 284 "../../include/tbb/parallel_do.h" 10136: ; 10136: } 10136: 10136: ~do_group_task_input(){ 10136: for( size_t k=0; k~Item(); 10136: } 10136: 10136: template friend class do_task_iter; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: class do_task_iter: public task 10136: { 10136: typedef parallel_do_feeder_impl feeder_type; 10136: 10136: public: 10136: do_task_iter( Iterator first, Iterator last , feeder_type& feeder ) : 10136: my_first(first), my_last(last), my_feeder(feeder) 10136: {} 10136: 10136: private: 10136: Iterator my_first; 10136: Iterator my_last; 10136: feeder_type& my_feeder; 10136: # 323 "../../include/tbb/parallel_do.h" 10136: task* execute() override 10136: { 10136: typedef typename std::iterator_traits::iterator_category iterator_tag; 10136: return run( (iterator_tag*) 10136: # 326 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 326 "../../include/tbb/parallel_do.h" 10136: ); 10136: } 10136: 10136: 10136: 10136: inline task* run( void* ) { return run_for_input_iterator(); } 10136: 10136: task* run_for_input_iterator() { 10136: typedef do_group_task_input block_type; 10136: 10136: block_type& t = *new( allocate_additional_child_of(*my_feeder.my_barrier) ) block_type(my_feeder); 10136: size_t k=0; 10136: while( !(my_first == my_last) ) { 10136: 10136: new (t.my_arg.begin() + k) Item(*my_first); 10136: ++my_first; 10136: if( ++k==block_type::max_arg_size ) { 10136: if ( !(my_first == my_last) ) 10136: recycle_to_reexecute(); 10136: break; 10136: } 10136: } 10136: if( k==0 ) { 10136: destroy(t); 10136: return 10136: # 350 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 350 "../../include/tbb/parallel_do.h" 10136: ; 10136: } else { 10136: t.my_size = k; 10136: return &t; 10136: } 10136: } 10136: 10136: inline task* run( std::forward_iterator_tag* ) { return run_for_forward_iterator(); } 10136: 10136: task* run_for_forward_iterator() { 10136: typedef do_group_task_forward block_type; 10136: 10136: Iterator first = my_first; 10136: size_t k=0; 10136: while( !(my_first==my_last) ) { 10136: ++my_first; 10136: if( ++k==block_type::max_arg_size ) { 10136: if ( !(my_first==my_last) ) 10136: recycle_to_reexecute(); 10136: break; 10136: } 10136: } 10136: return k==0 ? 10136: # 372 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 372 "../../include/tbb/parallel_do.h" 10136: : new( allocate_additional_child_of(*my_feeder.my_barrier) ) block_type(first, k, my_feeder); 10136: } 10136: 10136: inline task* run( std::random_access_iterator_tag* ) { return run_for_random_access_iterator(); } 10136: 10136: task* run_for_random_access_iterator() { 10136: typedef do_group_task_forward block_type; 10136: typedef do_iteration_task_iter iteration_type; 10136: 10136: size_t k = static_cast(my_last-my_first); 10136: if( k > block_type::max_arg_size ) { 10136: Iterator middle = my_first + k/2; 10136: 10136: empty_task& c = *new( allocate_continuation() ) empty_task; 10136: do_task_iter& b = *new( c.allocate_child() ) do_task_iter(middle, my_last, my_feeder); 10136: recycle_as_child_of(c); 10136: 10136: my_last = middle; 10136: c.set_ref_count(2); 10136: c.spawn(b); 10136: return this; 10136: }else if( k != 0 ) { 10136: task_list list; 10136: task* t; 10136: size_t k1=0; 10136: for(;;) { 10136: t = new( allocate_child() ) iteration_type(my_first, my_feeder); 10136: ++my_first; 10136: if( ++k1==k ) break; 10136: list.push_back(*t); 10136: } 10136: set_ref_count(int(k+1)); 10136: spawn(list); 10136: spawn_and_wait_for_all(*t); 10136: } 10136: return 10136: # 407 "../../include/tbb/parallel_do.h" 3 4 10136: __null 10136: # 407 "../../include/tbb/parallel_do.h" 10136: ; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: void run_parallel_do( Iterator first, Iterator last, const Body& body 10136: 10136: , task_group_context& context 10136: 10136: ) 10136: { 10136: typedef do_task_iter root_iteration_task; 10136: 10136: parallel_do_feeder_impl feeder(context); 10136: 10136: 10136: 10136: feeder.my_body = &body; 10136: 10136: root_iteration_task &t = *new( feeder.my_barrier->allocate_child() ) root_iteration_task(first, last, feeder); 10136: 10136: feeder.my_barrier->set_ref_count(2); 10136: feeder.my_barrier->spawn_and_wait_for_all(t); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void select_parallel_do( Iterator first, Iterator last, const Body& body, void (Body::*)(Item) const 10136: 10136: , task_group_context& context 10136: 10136: ) 10136: { 10136: run_parallel_do::type>( first, last, body 10136: 10136: , context 10136: 10136: ); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void select_parallel_do( Iterator first, Iterator last, const Body& body, void (Body::*)(Item, parallel_do_feeder<_Item>&) const 10136: 10136: , task_group_context& context 10136: 10136: ) 10136: { 10136: run_parallel_do::type>( first, last, body 10136: 10136: , context 10136: 10136: ); 10136: } 10136: 10136: } 10136: } 10136: # 497 "../../include/tbb/parallel_do.h" 10136: template 10136: void parallel_do( Iterator first, Iterator last, const Body& body ) 10136: { 10136: if ( first == last ) 10136: return; 10136: 10136: task_group_context context; 10136: 10136: interface9::internal::select_parallel_do( first, last, body, &Body::operator() 10136: 10136: , context 10136: 10136: ); 10136: } 10136: 10136: template 10136: void parallel_do(Range& rng, const Body& body) { 10136: parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body); 10136: } 10136: 10136: template 10136: void parallel_do(const Range& rng, const Body& body) { 10136: parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void parallel_do( Iterator first, Iterator last, const Body& body, task_group_context& context ) 10136: { 10136: if ( first == last ) 10136: return; 10136: interface9::internal::select_parallel_do( first, last, body, &Body::operator(), context ); 10136: } 10136: 10136: template 10136: void parallel_do(Range& rng, const Body& body, task_group_context& context) { 10136: parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context); 10136: } 10136: 10136: template 10136: void parallel_do(const Range& rng, const Body& body, task_group_context& context) { 10136: parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: using interface9::parallel_do_feeder; 10136: 10136: } 10136: # 36 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/pipeline.h" 1 10136: # 33 "../../include/tbb/pipeline.h" 10136: namespace tbb { 10136: 10136: class pipeline; 10136: class filter; 10136: 10136: 10136: namespace internal { 10136: 10136: 10136: 10136: 10136: typedef unsigned long Token; 10136: typedef long tokendiff_t; 10136: class stage_task; 10136: class input_buffer; 10136: class pipeline_root_task; 10136: class pipeline_cleaner; 10136: 10136: } 10136: 10136: namespace interface6 { 10136: template class filter_t; 10136: 10136: namespace internal { 10136: class pipeline_proxy; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: 10136: class filter: internal::no_copy { 10136: private: 10136: 10136: static filter* not_in_pipeline() {return reinterpret_cast(intptr_t(-1));} 10136: protected: 10136: 10136: static const unsigned char filter_is_serial = 0x1; 10136: 10136: 10136: 10136: 10136: static const unsigned char filter_is_out_of_order = 0x1<<4; 10136: 10136: 10136: static const unsigned char filter_is_bound = 0x1<<5; 10136: 10136: 10136: static const unsigned char filter_may_emit_null = 0x1<<6; 10136: 10136: 10136: static const unsigned char exact_exception_propagation = 10136: 10136: 10136: 10136: 0x1<<7; 10136: 10136: 10136: static const unsigned char current_version = ((unsigned char)(5 -2)<<1); 10136: static const unsigned char version_mask = 0x7<<1; 10136: public: 10136: enum mode { 10136: 10136: parallel = current_version | filter_is_out_of_order, 10136: 10136: serial_in_order = current_version | filter_is_serial, 10136: 10136: serial_out_of_order = current_version | filter_is_serial | filter_is_out_of_order, 10136: 10136: serial = serial_in_order 10136: }; 10136: protected: 10136: explicit filter( bool is_serial_ ) : 10136: next_filter_in_pipeline(not_in_pipeline()), 10136: my_input_buffer( 10136: # 108 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 108 "../../include/tbb/pipeline.h" 10136: ), 10136: my_filter_mode(static_cast((is_serial_ ? serial : parallel) | exact_exception_propagation)), 10136: prev_filter_in_pipeline(not_in_pipeline()), 10136: my_pipeline( 10136: # 111 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 111 "../../include/tbb/pipeline.h" 10136: ), 10136: next_segment( 10136: # 112 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 112 "../../include/tbb/pipeline.h" 10136: ) 10136: {} 10136: 10136: explicit filter( mode filter_mode ) : 10136: next_filter_in_pipeline(not_in_pipeline()), 10136: my_input_buffer( 10136: # 117 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 117 "../../include/tbb/pipeline.h" 10136: ), 10136: my_filter_mode(static_cast(filter_mode | exact_exception_propagation)), 10136: prev_filter_in_pipeline(not_in_pipeline()), 10136: my_pipeline( 10136: # 120 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 120 "../../include/tbb/pipeline.h" 10136: ), 10136: next_segment( 10136: # 121 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 121 "../../include/tbb/pipeline.h" 10136: ) 10136: {} 10136: 10136: 10136: void set_end_of_input(); 10136: 10136: public: 10136: 10136: bool is_serial() const { 10136: return bool( my_filter_mode & filter_is_serial ); 10136: } 10136: 10136: 10136: bool is_ordered() const { 10136: return (my_filter_mode & (filter_is_out_of_order|filter_is_serial))==filter_is_serial; 10136: } 10136: 10136: 10136: bool is_bound() const { 10136: return ( my_filter_mode & filter_is_bound )==filter_is_bound; 10136: } 10136: 10136: 10136: bool object_may_be_null() { 10136: return ( my_filter_mode & filter_may_emit_null ) == filter_may_emit_null; 10136: } 10136: 10136: 10136: 10136: virtual void* operator()( void* item ) = 0; 10136: 10136: 10136: 10136: virtual ~filter(); 10136: 10136: 10136: 10136: 10136: 10136: virtual void finalize( void* ) {}; 10136: 10136: 10136: private: 10136: 10136: filter* next_filter_in_pipeline; 10136: 10136: 10136: 10136: 10136: bool has_more_work(); 10136: 10136: 10136: 10136: internal::input_buffer* my_input_buffer; 10136: 10136: friend class internal::stage_task; 10136: friend class internal::pipeline_root_task; 10136: friend class pipeline; 10136: friend class thread_bound_filter; 10136: 10136: 10136: const unsigned char my_filter_mode; 10136: 10136: 10136: filter* prev_filter_in_pipeline; 10136: 10136: 10136: pipeline* my_pipeline; 10136: 10136: 10136: 10136: filter* next_segment; 10136: }; 10136: 10136: 10136: 10136: class thread_bound_filter: public filter { 10136: public: 10136: enum result_type { 10136: 10136: success, 10136: 10136: item_not_available, 10136: 10136: end_of_stream 10136: }; 10136: protected: 10136: explicit thread_bound_filter(mode filter_mode): 10136: filter(static_cast(filter_mode | filter::filter_is_bound)) 10136: { 10136: ((filter_mode & filter::filter_is_serial)?((void)0) : tbb::assertion_failure("../../include/tbb/pipeline.h",211,"filter_mode & filter::filter_is_serial","thread-bound filters must be serial")); 10136: } 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: 10136: result_type try_process_item(); 10136: 10136: 10136: 10136: 10136: 10136: 10136: result_type process_item(); 10136: 10136: private: 10136: 10136: result_type internal_process_item(bool is_blocking); 10136: }; 10136: 10136: 10136: 10136: class pipeline { 10136: public: 10136: 10136: pipeline(); 10136: 10136: 10136: 10136: virtual ~pipeline(); 10136: 10136: 10136: void add_filter( filter& filter_ ); 10136: 10136: 10136: void run( size_t max_number_of_live_tokens ); 10136: 10136: 10136: 10136: void run( size_t max_number_of_live_tokens, tbb::task_group_context& context ); 10136: 10136: 10136: 10136: void clear(); 10136: 10136: private: 10136: friend class internal::stage_task; 10136: friend class internal::pipeline_root_task; 10136: friend class filter; 10136: friend class thread_bound_filter; 10136: friend class internal::pipeline_cleaner; 10136: friend class tbb::interface6::internal::pipeline_proxy; 10136: 10136: 10136: filter* filter_list; 10136: 10136: 10136: filter* filter_end; 10136: 10136: 10136: task* end_counter; 10136: 10136: 10136: atomic input_tokens; 10136: 10136: 10136: atomic token_counter; 10136: 10136: 10136: bool end_of_input; 10136: 10136: 10136: bool has_thread_bound_filters; 10136: 10136: 10136: void remove_filter( filter& filter_ ); 10136: 10136: 10136: void inject_token( task& self ); 10136: 10136: 10136: 10136: void clear_filters(); 10136: 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: namespace interface6 { 10136: 10136: namespace internal { 10136: template class concrete_filter; 10136: } 10136: 10136: 10136: class flow_control { 10136: bool is_pipeline_stopped; 10136: flow_control() { is_pipeline_stopped = false; } 10136: template friend class internal::concrete_filter; 10136: public: 10136: void stop() { is_pipeline_stopped = true; } 10136: }; 10136: 10136: 10136: namespace internal { 10136: 10136: template struct tbb_large_object {enum { value = sizeof(T) > sizeof(void *) }; }; 10136: 10136: 10136: 10136: template struct tbb_trivially_copyable { enum { value = std::is_trivially_copyable::value }; }; 10136: # 343 "../../include/tbb/pipeline.h" 10136: template struct is_large_object {enum { value = tbb_large_object::value || !tbb_trivially_copyable::value }; }; 10136: 10136: template class token_helper; 10136: 10136: 10136: template 10136: class token_helper { 10136: public: 10136: typedef typename tbb::tbb_allocator allocator; 10136: typedef T* pointer; 10136: typedef T value_type; 10136: static pointer create_token(const value_type & source) { 10136: pointer output_t = allocator().allocate(1); 10136: return new (output_t) T(source); 10136: } 10136: static value_type & token(pointer & t) { return *t;} 10136: static void * cast_to_void_ptr(pointer ref) { return (void *) ref; } 10136: static pointer cast_from_void_ptr(void * ref) { return (pointer)ref; } 10136: static void destroy_token(pointer token) { 10136: allocator().destroy(token); 10136: allocator().deallocate(token,1); 10136: } 10136: }; 10136: 10136: 10136: template 10136: class token_helper { 10136: public: 10136: typedef T* pointer; 10136: typedef T* value_type; 10136: static pointer create_token(const value_type & source) { return source; } 10136: static value_type & token(pointer & t) { return t;} 10136: static void * cast_to_void_ptr(pointer ref) { return (void *)ref; } 10136: static pointer cast_from_void_ptr(void * ref) { return (pointer)ref; } 10136: static void destroy_token( pointer ) {} 10136: }; 10136: 10136: 10136: template 10136: class token_helper { 10136: typedef union { 10136: T actual_value; 10136: void * void_overlay; 10136: } type_to_void_ptr_map; 10136: public: 10136: typedef T pointer; 10136: typedef T value_type; 10136: static pointer create_token(const value_type & source) { 10136: return source; } 10136: static value_type & token(pointer & t) { return t;} 10136: static void * cast_to_void_ptr(pointer ref) { 10136: type_to_void_ptr_map mymap; 10136: mymap.void_overlay = 10136: # 395 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 395 "../../include/tbb/pipeline.h" 10136: ; 10136: mymap.actual_value = ref; 10136: return mymap.void_overlay; 10136: } 10136: static pointer cast_from_void_ptr(void * ref) { 10136: type_to_void_ptr_map mymap; 10136: mymap.void_overlay = ref; 10136: return mymap.actual_value; 10136: } 10136: static void destroy_token( pointer ) {} 10136: }; 10136: 10136: template 10136: class concrete_filter: public tbb::filter { 10136: const Body& my_body; 10136: typedef token_helper::value > t_helper; 10136: typedef typename t_helper::pointer t_pointer; 10136: typedef token_helper::value > u_helper; 10136: typedef typename u_helper::pointer u_pointer; 10136: 10136: void* operator()(void* input) override { 10136: t_pointer temp_input = t_helper::cast_from_void_ptr(input); 10136: u_pointer output_u = u_helper::create_token(my_body(t_helper::token(temp_input))); 10136: t_helper::destroy_token(temp_input); 10136: return u_helper::cast_to_void_ptr(output_u); 10136: } 10136: 10136: void finalize(void * input) override { 10136: t_pointer temp_input = t_helper::cast_from_void_ptr(input); 10136: t_helper::destroy_token(temp_input); 10136: } 10136: 10136: public: 10136: concrete_filter(tbb::filter::mode filter_mode, const Body& body) : filter(filter_mode), my_body(body) {} 10136: }; 10136: 10136: 10136: template 10136: class concrete_filter: public filter { 10136: const Body& my_body; 10136: typedef token_helper::value > u_helper; 10136: typedef typename u_helper::pointer u_pointer; 10136: 10136: void* operator()(void*) override { 10136: flow_control control; 10136: u_pointer output_u = u_helper::create_token(my_body(control)); 10136: if(control.is_pipeline_stopped) { 10136: u_helper::destroy_token(output_u); 10136: set_end_of_input(); 10136: return 10136: # 444 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 444 "../../include/tbb/pipeline.h" 10136: ; 10136: } 10136: return u_helper::cast_to_void_ptr(output_u); 10136: } 10136: 10136: public: 10136: concrete_filter(tbb::filter::mode filter_mode, const Body& body) : 10136: filter(static_cast(filter_mode | filter_may_emit_null)), 10136: my_body(body) 10136: {} 10136: }; 10136: 10136: template 10136: class concrete_filter: public filter { 10136: const Body& my_body; 10136: typedef token_helper::value > t_helper; 10136: typedef typename t_helper::pointer t_pointer; 10136: 10136: void* operator()(void* input) override { 10136: t_pointer temp_input = t_helper::cast_from_void_ptr(input); 10136: my_body(t_helper::token(temp_input)); 10136: t_helper::destroy_token(temp_input); 10136: return 10136: # 466 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 466 "../../include/tbb/pipeline.h" 10136: ; 10136: } 10136: void finalize(void* input) override { 10136: t_pointer temp_input = t_helper::cast_from_void_ptr(input); 10136: t_helper::destroy_token(temp_input); 10136: } 10136: 10136: public: 10136: concrete_filter(tbb::filter::mode filter_mode, const Body& body) : filter(filter_mode), my_body(body) {} 10136: }; 10136: 10136: template 10136: class concrete_filter: public filter { 10136: const Body& my_body; 10136: 10136: 10136: void* operator()(void*) override { 10136: flow_control control; 10136: my_body(control); 10136: void* output = control.is_pipeline_stopped ? 10136: # 485 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 485 "../../include/tbb/pipeline.h" 10136: : (void*)(intptr_t)-1; 10136: return output; 10136: } 10136: public: 10136: concrete_filter(filter::mode filter_mode, const Body& body) : filter(filter_mode), my_body(body) {} 10136: }; 10136: 10136: 10136: 10136: class pipeline_proxy { 10136: tbb::pipeline my_pipe; 10136: public: 10136: pipeline_proxy( const filter_t& filter_chain ); 10136: ~pipeline_proxy() { 10136: while( filter* f = my_pipe.filter_list ) 10136: delete f; 10136: } 10136: tbb::pipeline* operator->() { return &my_pipe; } 10136: }; 10136: 10136: 10136: 10136: class filter_node: tbb::internal::no_copy { 10136: 10136: tbb::atomic ref_count; 10136: protected: 10136: filter_node() { 10136: ref_count = 0; 10136: 10136: 10136: 10136: } 10136: public: 10136: 10136: virtual void add_to( pipeline& ) = 0; 10136: 10136: void add_ref() {++ref_count;} 10136: 10136: void remove_ref() { 10136: ((ref_count>0)?((void)0) : tbb::assertion_failure("../../include/tbb/pipeline.h",524,"ref_count>0","ref_count underflow")); 10136: if( --ref_count==0 ) 10136: delete this; 10136: } 10136: virtual ~filter_node() { 10136: 10136: 10136: 10136: } 10136: }; 10136: 10136: 10136: template 10136: class filter_node_leaf: public filter_node { 10136: const tbb::filter::mode mode; 10136: const Body body; 10136: void add_to( pipeline& p ) override { 10136: concrete_filter* f = new concrete_filter(mode,body); 10136: p.add_filter( *f ); 10136: } 10136: public: 10136: filter_node_leaf( tbb::filter::mode m, const Body& b ) : mode(m), body(b) {} 10136: }; 10136: 10136: 10136: class filter_node_join: public filter_node { 10136: friend class filter_node; 10136: filter_node& left; 10136: filter_node& right; 10136: ~filter_node_join() { 10136: left.remove_ref(); 10136: right.remove_ref(); 10136: } 10136: void add_to( pipeline& p ) override { 10136: left.add_to(p); 10136: right.add_to(p); 10136: } 10136: public: 10136: filter_node_join( filter_node& x, filter_node& y ) : left(x), right(y) { 10136: left.add_ref(); 10136: right.add_ref(); 10136: } 10136: }; 10136: 10136: } 10136: 10136: 10136: 10136: template 10136: filter_t make_filter(tbb::filter::mode mode, const Body& body) { 10136: return new internal::filter_node_leaf(mode, body); 10136: } 10136: 10136: template 10136: filter_t operator& (const filter_t& left, const filter_t& right) { 10136: ((left.root)?((void)0) : tbb::assertion_failure("../../include/tbb/pipeline.h",579,"left.root","cannot use default-constructed filter_t as left argument of '&'")); 10136: ((right.root)?((void)0) : tbb::assertion_failure("../../include/tbb/pipeline.h",580,"right.root","cannot use default-constructed filter_t as right argument of '&'")); 10136: return new internal::filter_node_join(*left.root,*right.root); 10136: } 10136: 10136: 10136: template 10136: class filter_t { 10136: typedef internal::filter_node filter_node; 10136: filter_node* root; 10136: filter_t( filter_node* root_ ) : root(root_) { 10136: root->add_ref(); 10136: } 10136: friend class internal::pipeline_proxy; 10136: template 10136: friend filter_t make_filter(tbb::filter::mode, const Body& ); 10136: template 10136: friend filter_t operator& (const filter_t& , const filter_t& ); 10136: public: 10136: 10136: filter_t() : root( 10136: # 599 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 599 "../../include/tbb/pipeline.h" 10136: ) {} 10136: filter_t( const filter_t& rhs ) : root(rhs.root) { 10136: if( root ) root->add_ref(); 10136: } 10136: template 10136: filter_t( tbb::filter::mode mode, const Body& body ) : 10136: root( new internal::filter_node_leaf(mode, body) ) { 10136: root->add_ref(); 10136: } 10136: 10136: void operator=( const filter_t& rhs ) { 10136: 10136: 10136: filter_node* old = root; 10136: root = rhs.root; 10136: if( root ) root->add_ref(); 10136: if( old ) old->remove_ref(); 10136: } 10136: ~filter_t() { 10136: if( root ) root->remove_ref(); 10136: } 10136: void clear() { 10136: 10136: if( root ) { 10136: filter_node* old = root; 10136: root = 10136: # 624 "../../include/tbb/pipeline.h" 3 4 10136: __null 10136: # 624 "../../include/tbb/pipeline.h" 10136: ; 10136: old->remove_ref(); 10136: } 10136: } 10136: }; 10136: 10136: inline internal::pipeline_proxy::pipeline_proxy( const filter_t& filter_chain ) : my_pipe() { 10136: ((filter_chain.root)?((void)0) : tbb::assertion_failure("../../include/tbb/pipeline.h",631,"filter_chain.root","cannot apply parallel_pipeline to default-constructed filter_t")); 10136: filter_chain.root->add_to(my_pipe); 10136: } 10136: 10136: inline void parallel_pipeline(size_t max_number_of_live_tokens, const filter_t& filter_chain 10136: 10136: , tbb::task_group_context& context 10136: 10136: ) { 10136: internal::pipeline_proxy pipe(filter_chain); 10136: 10136: pipe->run(max_number_of_live_tokens 10136: 10136: , context 10136: 10136: ); 10136: } 10136: 10136: 10136: inline void parallel_pipeline(size_t max_number_of_live_tokens, const filter_t& filter_chain) { 10136: tbb::task_group_context context; 10136: parallel_pipeline(max_number_of_live_tokens, filter_chain, context); 10136: } 10136: 10136: 10136: } 10136: 10136: using interface6::flow_control; 10136: using interface6::filter_t; 10136: using interface6::make_filter; 10136: using interface6::parallel_pipeline; 10136: 10136: } 10136: # 37 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 1 "../../include/tbb/parallel_scan.h" 1 10136: # 29 "../../include/tbb/parallel_scan.h" 10136: namespace tbb { 10136: 10136: 10136: 10136: struct pre_scan_tag { 10136: static bool is_final_scan() {return false;} 10136: }; 10136: 10136: 10136: 10136: struct final_scan_tag { 10136: static bool is_final_scan() {return true;} 10136: }; 10136: 10136: 10136: namespace internal { 10136: 10136: 10136: 10136: template 10136: class final_sum: public task { 10136: public: 10136: Body my_body; 10136: private: 10136: aligned_space my_range; 10136: 10136: Body* my_stuff_last; 10136: public: 10136: final_sum( Body& body_ ) : 10136: my_body(body_,split()) 10136: { 10136: poison_pointer(my_stuff_last); 10136: } 10136: ~final_sum() { 10136: my_range.begin()->~Range(); 10136: } 10136: void finish_construction( const Range& range_, Body* stuff_last_ ) { 10136: new( my_range.begin() ) Range(range_); 10136: my_stuff_last = stuff_last_; 10136: } 10136: private: 10136: task* execute() override { 10136: my_body( *my_range.begin(), final_scan_tag() ); 10136: if( my_stuff_last ) 10136: my_stuff_last->assign(my_body); 10136: return 10136: # 74 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 74 "../../include/tbb/parallel_scan.h" 10136: ; 10136: } 10136: }; 10136: 10136: 10136: 10136: template 10136: class sum_node: public task { 10136: typedef final_sum final_sum_type; 10136: public: 10136: final_sum_type *my_incoming; 10136: final_sum_type *my_body; 10136: Body *my_stuff_last; 10136: private: 10136: final_sum_type *my_left_sum; 10136: sum_node *my_left; 10136: sum_node *my_right; 10136: bool my_left_is_final; 10136: Range my_range; 10136: sum_node( const Range range_, bool left_is_final_ ) : 10136: my_stuff_last( 10136: # 94 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 94 "../../include/tbb/parallel_scan.h" 10136: ), 10136: my_left_sum( 10136: # 95 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 95 "../../include/tbb/parallel_scan.h" 10136: ), 10136: my_left( 10136: # 96 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 96 "../../include/tbb/parallel_scan.h" 10136: ), 10136: my_right( 10136: # 97 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 97 "../../include/tbb/parallel_scan.h" 10136: ), 10136: my_left_is_final(left_is_final_), 10136: my_range(range_) 10136: { 10136: 10136: poison_pointer(my_body); 10136: poison_pointer(my_incoming); 10136: } 10136: task* create_child( const Range& range_, final_sum_type& f, sum_node* n, final_sum_type* incoming_, Body* stuff_last_ ) { 10136: if( !n ) { 10136: f.recycle_as_child_of( *this ); 10136: f.finish_construction( range_, stuff_last_ ); 10136: return &f; 10136: } else { 10136: n->my_body = &f; 10136: n->my_incoming = incoming_; 10136: n->my_stuff_last = stuff_last_; 10136: return n; 10136: } 10136: } 10136: task* execute() override { 10136: if( my_body ) { 10136: if( my_incoming ) 10136: my_left_sum->my_body.reverse_join( my_incoming->my_body ); 10136: recycle_as_continuation(); 10136: sum_node& c = *this; 10136: task* b = c.create_child(Range(my_range,split()),*my_left_sum,my_right,my_left_sum,my_stuff_last); 10136: task* a = my_left_is_final ? 10136: # 124 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 124 "../../include/tbb/parallel_scan.h" 10136: : c.create_child(my_range,*my_body,my_left,my_incoming, 10136: # 124 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 124 "../../include/tbb/parallel_scan.h" 10136: ); 10136: set_ref_count( (a!= 10136: # 125 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 125 "../../include/tbb/parallel_scan.h" 10136: )+(b!= 10136: # 125 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 125 "../../include/tbb/parallel_scan.h" 10136: ) ); 10136: my_body = 10136: # 126 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 126 "../../include/tbb/parallel_scan.h" 10136: ; 10136: if( a ) spawn(*b); 10136: else a = b; 10136: return a; 10136: } else { 10136: return 10136: # 131 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 131 "../../include/tbb/parallel_scan.h" 10136: ; 10136: } 10136: } 10136: template 10136: friend class start_scan; 10136: 10136: template 10136: friend class finish_scan; 10136: }; 10136: 10136: 10136: 10136: template 10136: class finish_scan: public task { 10136: typedef sum_node sum_node_type; 10136: typedef final_sum final_sum_type; 10136: final_sum_type** const my_sum; 10136: sum_node_type*& my_return_slot; 10136: public: 10136: final_sum_type* my_right_zombie; 10136: sum_node_type& my_result; 10136: 10136: task* execute() override { 10136: ((my_result.ref_count()==(my_result.my_left!= 10136: # 154 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 154 "../../include/tbb/parallel_scan.h" 10136: )+(my_result.my_right!= 10136: # 154 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 154 "../../include/tbb/parallel_scan.h" 10136: ))?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_scan.h",154,"my_result.ref_count()==(my_result.my_left!=__null)+(my_result.my_right!=__null)", 10136: # 154 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 154 "../../include/tbb/parallel_scan.h" 10136: )); 10136: if( my_result.my_left ) 10136: my_result.my_left_is_final = false; 10136: if( my_right_zombie && my_sum ) 10136: ((*my_sum)->my_body).reverse_join(my_result.my_left_sum->my_body); 10136: ((!my_return_slot)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_scan.h",159,"!my_return_slot", 10136: # 159 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 159 "../../include/tbb/parallel_scan.h" 10136: )); 10136: if( my_right_zombie || my_result.my_right ) { 10136: my_return_slot = &my_result; 10136: } else { 10136: destroy( my_result ); 10136: } 10136: if( my_right_zombie && !my_sum && !my_result.my_right ) { 10136: destroy(*my_right_zombie); 10136: my_right_zombie = 10136: # 167 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 167 "../../include/tbb/parallel_scan.h" 10136: ; 10136: } 10136: return 10136: # 169 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 169 "../../include/tbb/parallel_scan.h" 10136: ; 10136: } 10136: 10136: finish_scan( sum_node_type*& return_slot_, final_sum_type** sum_, sum_node_type& result_ ) : 10136: my_sum(sum_), 10136: my_return_slot(return_slot_), 10136: my_right_zombie( 10136: # 175 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 175 "../../include/tbb/parallel_scan.h" 10136: ), 10136: my_result(result_) 10136: { 10136: ((!my_return_slot)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_scan.h",178,"!my_return_slot", 10136: # 178 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 178 "../../include/tbb/parallel_scan.h" 10136: )); 10136: } 10136: }; 10136: 10136: 10136: 10136: template 10136: class start_scan: public task { 10136: typedef sum_node sum_node_type; 10136: typedef final_sum final_sum_type; 10136: final_sum_type* my_body; 10136: 10136: final_sum_type** my_sum; 10136: sum_node_type** my_return_slot; 10136: 10136: sum_node_type* my_parent_sum; 10136: bool my_is_final; 10136: bool my_is_right_child; 10136: Range my_range; 10136: typename Partitioner::partition_type my_partition; 10136: task* execute() override ; 10136: public: 10136: start_scan( sum_node_type*& return_slot_, start_scan& parent_, sum_node_type* parent_sum_ ) : 10136: my_body(parent_.my_body), 10136: my_sum(parent_.my_sum), 10136: my_return_slot(&return_slot_), 10136: my_parent_sum(parent_sum_), 10136: my_is_final(parent_.my_is_final), 10136: my_is_right_child(false), 10136: my_range(parent_.my_range,split()), 10136: my_partition(parent_.my_partition,split()) 10136: { 10136: ((!*my_return_slot)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_scan.h",210,"!*my_return_slot", 10136: # 210 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 210 "../../include/tbb/parallel_scan.h" 10136: )); 10136: } 10136: 10136: start_scan( sum_node_type*& return_slot_, const Range& range_, final_sum_type& body_, const Partitioner& partitioner_) : 10136: my_body(&body_), 10136: my_sum( 10136: # 215 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 215 "../../include/tbb/parallel_scan.h" 10136: ), 10136: my_return_slot(&return_slot_), 10136: my_parent_sum( 10136: # 217 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 217 "../../include/tbb/parallel_scan.h" 10136: ), 10136: my_is_final(true), 10136: my_is_right_child(false), 10136: my_range(range_), 10136: my_partition(partitioner_) 10136: { 10136: ((!*my_return_slot)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_scan.h",223,"!*my_return_slot", 10136: # 223 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 223 "../../include/tbb/parallel_scan.h" 10136: )); 10136: } 10136: 10136: static void run( const Range& range_, Body& body_, const Partitioner& partitioner_ ) { 10136: if( !range_.empty() ) { 10136: typedef internal::start_scan start_pass1_type; 10136: internal::sum_node* root = 10136: # 229 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 229 "../../include/tbb/parallel_scan.h" 10136: ; 10136: typedef internal::final_sum final_sum_type; 10136: final_sum_type* temp_body = new(task::allocate_root()) final_sum_type( body_ ); 10136: start_pass1_type& pass1 = *new(task::allocate_root()) start_pass1_type( 10136: root, 10136: range_, 10136: *temp_body, 10136: partitioner_ ); 10136: temp_body->my_body.reverse_join(body_); 10136: task::spawn_root_and_wait( pass1 ); 10136: if( root ) { 10136: root->my_body = temp_body; 10136: root->my_incoming = 10136: # 241 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 241 "../../include/tbb/parallel_scan.h" 10136: ; 10136: root->my_stuff_last = &body_; 10136: task::spawn_root_and_wait( *root ); 10136: } else { 10136: body_.assign(temp_body->my_body); 10136: temp_body->finish_construction( range_, 10136: # 246 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 246 "../../include/tbb/parallel_scan.h" 10136: ); 10136: temp_body->destroy(*temp_body); 10136: } 10136: } 10136: } 10136: }; 10136: 10136: template 10136: task* start_scan::execute() { 10136: typedef internal::finish_scan finish_pass1_type; 10136: finish_pass1_type* p = my_parent_sum ? static_cast( parent() ) : 10136: # 256 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 256 "../../include/tbb/parallel_scan.h" 10136: ; 10136: 10136: 10136: 10136: bool treat_as_stolen = my_is_right_child && (is_stolen_task() || my_body!=p->my_result.my_left_sum); 10136: if( treat_as_stolen ) { 10136: 10136: p->my_right_zombie = my_body = new( allocate_root() ) final_sum_type(my_body->my_body); 10136: my_is_final = false; 10136: } 10136: task* next_task = 10136: # 266 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 266 "../../include/tbb/parallel_scan.h" 10136: ; 10136: if( (my_is_right_child && !treat_as_stolen) || !my_range.is_divisible() || my_partition.should_execute_range(*this) ) { 10136: if( my_is_final ) 10136: (my_body->my_body)( my_range, final_scan_tag() ); 10136: else if( my_sum ) 10136: (my_body->my_body)( my_range, pre_scan_tag() ); 10136: if( my_sum ) 10136: *my_sum = my_body; 10136: ((!*my_return_slot)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_scan.h",274,"!*my_return_slot", 10136: # 274 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 274 "../../include/tbb/parallel_scan.h" 10136: )); 10136: } else { 10136: sum_node_type* result; 10136: if( my_parent_sum ) 10136: result = new(allocate_additional_child_of(*my_parent_sum)) sum_node_type(my_range, my_is_final); 10136: else 10136: result = new(task::allocate_root()) sum_node_type(my_range, my_is_final); 10136: finish_pass1_type& c = *new( allocate_continuation()) finish_pass1_type(*my_return_slot,my_sum,*result); 10136: 10136: start_scan& b = *new( c.allocate_child() ) start_scan( result->my_right, *this, result ); 10136: b.my_is_right_child = true; 10136: 10136: 10136: 10136: recycle_as_child_of(c); 10136: c.set_ref_count(2); 10136: c.spawn(b); 10136: my_sum = &result->my_left_sum; 10136: my_return_slot = &result->my_left; 10136: my_is_right_child = false; 10136: next_task = this; 10136: my_parent_sum = result; 10136: ((!*my_return_slot)?((void)0) : tbb::assertion_failure("../../include/tbb/parallel_scan.h",296,"!*my_return_slot", 10136: # 296 "../../include/tbb/parallel_scan.h" 3 4 10136: __null 10136: # 296 "../../include/tbb/parallel_scan.h" 10136: )); 10136: } 10136: return next_task; 10136: } 10136: } 10136: # 325 "../../include/tbb/parallel_scan.h" 10136: template 10136: void parallel_scan( const Range& range, Body& body ) { 10136: internal::start_scan::run(range,body,tbb::auto_partitioner()); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_scan( const Range& range, Body& body, const simple_partitioner& partitioner ) { 10136: internal::start_scan::run(range,body,partitioner); 10136: } 10136: 10136: 10136: 10136: template 10136: void parallel_scan( const Range& range, Body& body, const auto_partitioner& partitioner ) { 10136: internal::start_scan::run(range,body,partitioner); 10136: } 10136: 10136: 10136: } 10136: # 38 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 48 "../../src/test/test_eh_algorithms.cpp" 10136: tbb::atomic g_FedTasksCount; 10136: tbb::atomic g_OuterParCalls; 10136: tbb::atomic g_TGCCancelled; 10136: 10136: inline intptr_t Existed () { return 0x7fffffff; } 10136: 10136: # 1 "../../src/test/harness_eh.h" 1 10136: # 28 "../../src/test/harness_eh.h" 10136: # 1 "../../src/test/harness_concurrency_tracker.h" 1 10136: # 25 "../../src/test/harness_concurrency_tracker.h" 10136: # 1 "../../src/test/harness_barrier.h" 1 10136: # 22 "../../src/test/harness_barrier.h" 10136: # 1 "../../include/tbb/tick_count.h" 1 10136: # 29 "../../include/tbb/tick_count.h" 10136: # 1 "/usr/include/c++/8/ctime" 1 3 10136: # 39 "/usr/include/c++/8/ctime" 3 10136: 10136: # 40 "/usr/include/c++/8/ctime" 3 10136: # 58 "/usr/include/c++/8/ctime" 3 10136: 10136: # 58 "/usr/include/c++/8/ctime" 3 10136: namespace std 10136: { 10136: using ::clock_t; 10136: using ::time_t; 10136: using ::tm; 10136: 10136: using ::clock; 10136: using ::difftime; 10136: using ::mktime; 10136: using ::time; 10136: using ::asctime; 10136: using ::ctime; 10136: using ::gmtime; 10136: using ::localtime; 10136: using ::strftime; 10136: } 10136: # 30 "../../include/tbb/tick_count.h" 2 10136: 10136: 10136: 10136: 10136: 10136: # 34 "../../include/tbb/tick_count.h" 10136: namespace tbb { 10136: 10136: 10136: 10136: class tick_count { 10136: public: 10136: 10136: class interval_t { 10136: long long value; 10136: explicit interval_t( long long value_ ) : value(value_) {} 10136: public: 10136: 10136: interval_t() : value(0) {}; 10136: 10136: 10136: explicit interval_t( double sec ); 10136: 10136: 10136: double seconds() const; 10136: 10136: friend class tbb::tick_count; 10136: 10136: 10136: friend interval_t operator-( const tick_count& t1, const tick_count& t0 ); 10136: 10136: 10136: friend interval_t operator+( const interval_t& i, const interval_t& j ) { 10136: return interval_t(i.value+j.value); 10136: } 10136: 10136: 10136: friend interval_t operator-( const interval_t& i, const interval_t& j ) { 10136: return interval_t(i.value-j.value); 10136: } 10136: 10136: 10136: interval_t& operator+=( const interval_t& i ) {value += i.value; return *this;} 10136: 10136: 10136: interval_t& operator-=( const interval_t& i ) {value -= i.value; return *this;} 10136: private: 10136: static long long ticks_per_second(){ 10136: 10136: 10136: 10136: 10136: 10136: 10136: return static_cast(1E9); 10136: 10136: 10136: 10136: } 10136: }; 10136: 10136: 10136: tick_count() : my_count(0) {}; 10136: 10136: 10136: static tick_count now(); 10136: 10136: 10136: friend interval_t operator-( const tick_count& t1, const tick_count& t0 ); 10136: 10136: 10136: static double resolution() { return 1.0 / interval_t::ticks_per_second(); } 10136: 10136: private: 10136: long long my_count; 10136: }; 10136: 10136: inline tick_count tick_count::now() { 10136: tick_count result; 10136: 10136: 10136: 10136: 10136: 10136: 10136: struct timespec ts; 10136: int status = clock_gettime( 10136: # 114 "../../include/tbb/tick_count.h" 3 4 10136: 0 10136: # 114 "../../include/tbb/tick_count.h" 10136: , &ts ); 10136: ((status==0)?((void)0) : tbb::assertion_failure("../../include/tbb/tick_count.h",115,"status==0","CLOCK_REALTIME not supported")); 10136: result.my_count = static_cast(1000000000UL)*static_cast(ts.tv_sec) + static_cast(ts.tv_nsec); 10136: 10136: 10136: 10136: 10136: 10136: 10136: return result; 10136: } 10136: 10136: inline tick_count::interval_t::interval_t( double sec ) { 10136: value = static_cast(sec*interval_t::ticks_per_second()); 10136: } 10136: 10136: inline tick_count::interval_t operator-( const tick_count& t1, const tick_count& t0 ) { 10136: return tick_count::interval_t( t1.my_count-t0.my_count ); 10136: } 10136: 10136: inline double tick_count::interval_t::seconds() const { 10136: return value*tick_count::resolution(); 10136: } 10136: 10136: } 10136: # 23 "../../src/test/harness_barrier.h" 2 10136: 10136: 10136: 10136: 10136: namespace Harness { 10136: 10136: 10136: 10136: class TimedWaitWhileEq { 10136: 10136: void operator=( const TimedWaitWhileEq& ); 10136: double &my_limit; 10136: public: 10136: TimedWaitWhileEq(double &n_seconds) : my_limit(n_seconds) {} 10136: TimedWaitWhileEq(const TimedWaitWhileEq &src) : my_limit(src.my_limit) {} 10136: template 10136: void operator()( const volatile T& location, U value ) const { 10136: tbb::tick_count start = tbb::tick_count::now(); 10136: double time_passed; 10136: do { 10136: time_passed = (tbb::tick_count::now()-start).seconds(); 10136: if( time_passed < 0.0001 ) __TBB_machine_pause(10); else sched_yield(); 10136: } while( time_passed < my_limit && location == value); 10136: my_limit -= time_passed; 10136: } 10136: }; 10136: 10136: 10136: class WaitWhileEq { 10136: 10136: void operator=( const WaitWhileEq& ); 10136: public: 10136: template 10136: void operator()( const volatile T& location, U value ) const { 10136: tbb::internal::spin_wait_while_eq(location, value); 10136: } 10136: }; 10136: class SpinBarrier 10136: { 10136: unsigned numThreads; 10136: tbb::atomic numThreadsFinished; 10136: 10136: tbb::atomic epoch; 10136: 10136: bool throwaway; 10136: 10136: struct DummyCallback { 10136: void operator() () const {} 10136: template 10136: void operator()( const T&, U) const {} 10136: }; 10136: 10136: SpinBarrier( const SpinBarrier& ); 10136: void operator=( const SpinBarrier& ); 10136: public: 10136: SpinBarrier( unsigned nthreads = 0, bool throwaway_ = false ) { 10136: initialize(nthreads, throwaway_); 10136: } 10136: void initialize( unsigned nthreads, bool throwaway_ = false ) { 10136: numThreads = nthreads; 10136: numThreadsFinished = 0; 10136: epoch = 0; 10136: throwaway = throwaway_; 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: bool custom_wait(const WaitEq &onWaitCallback, const Callback &onOpenBarrierCallback) 10136: { 10136: if (throwaway && epoch) 10136: return false; 10136: unsigned myEpoch = epoch; 10136: unsigned myNumThreads = numThreads; 10136: int threadsLeft = myNumThreads - numThreadsFinished.fetch_and_increment() - 1; 10136: ((threadsLeft>=0)?(void)0:ReportError("../../src/test/harness_barrier.h",99,"threadsLeft>=0","Broken barrier")); 10136: if (threadsLeft > 0) { 10136: 10136: onWaitCallback(epoch, myEpoch); 10136: return false; 10136: } 10136: 10136: onOpenBarrierCallback(); 10136: 10136: threadsLeft = numThreadsFinished -= myNumThreads; 10136: ((threadsLeft == 0)?(void)0:ReportError("../../src/test/harness_barrier.h",109,"threadsLeft == 0","Broken barrier")); 10136: 10136: myEpoch -= epoch++; 10136: ((myEpoch == 0)?(void)0:ReportError("../../src/test/harness_barrier.h",112,"myEpoch == 0","Broken barrier")); 10136: return true; 10136: } 10136: bool timed_wait_noerror(double n_seconds) { 10136: custom_wait(TimedWaitWhileEq(n_seconds), DummyCallback()); 10136: return n_seconds >= 0.0001; 10136: } 10136: bool timed_wait(double n_seconds, const char *msg="Time is out while waiting on a barrier") { 10136: bool is_last = custom_wait(TimedWaitWhileEq(n_seconds), DummyCallback()); 10136: ((n_seconds >= 0)?(void)0:ReportError("../../src/test/harness_barrier.h",121,"n_seconds >= 0",msg)); 10136: return is_last; 10136: } 10136: 10136: template 10136: bool wait(const Callback &onOpenBarrierCallback) { 10136: return custom_wait(WaitWhileEq(), onOpenBarrierCallback); 10136: } 10136: bool wait(){ 10136: return wait(DummyCallback()); 10136: } 10136: 10136: bool signal_nowait() { 10136: return custom_wait(DummyCallback(),DummyCallback()); 10136: } 10136: }; 10136: 10136: } 10136: # 26 "../../src/test/harness_concurrency_tracker.h" 2 10136: 10136: # 1 "../../src/test/../tbb/tls.h" 1 10136: # 30 "../../src/test/../tbb/tls.h" 10136: namespace tbb { 10136: 10136: namespace internal { 10136: 10136: typedef void (*tls_dtor_t)(void*); 10136: 10136: 10136: template 10136: class basic_tls { 10136: 10136: typedef pthread_key_t tls_key_t; 10136: public: 10136: int create( tls_dtor_t dtor = 10136: # 42 "../../src/test/../tbb/tls.h" 3 4 10136: __null 10136: # 42 "../../src/test/../tbb/tls.h" 10136: ) { 10136: return pthread_key_create(&my_key, dtor); 10136: } 10136: int destroy() { return pthread_key_delete(my_key); } 10136: void set( T value ) { pthread_setspecific(my_key, (void*)value); } 10136: T get() { return (T)pthread_getspecific(my_key); } 10136: # 75 "../../src/test/../tbb/tls.h" 10136: private: 10136: tls_key_t my_key; 10136: }; 10136: 10136: 10136: 10136: template 10136: class tls : public basic_tls { 10136: typedef basic_tls base; 10136: public: 10136: tls() { base::create(); } 10136: ~tls() { base::destroy(); } 10136: T operator=(T value) { base::set(value); return value; } 10136: operator T() { return base::get(); } 10136: }; 10136: 10136: template 10136: class tls : basic_tls { 10136: typedef basic_tls base; 10136: static void internal_dtor(void* ptr) { 10136: if (ptr) delete (T*)ptr; 10136: } 10136: T* internal_get() { 10136: T* result = base::get(); 10136: if (!result) { 10136: result = new T; 10136: base::set(result); 10136: } 10136: return result; 10136: } 10136: public: 10136: tls() { 10136: 10136: base::create( internal_dtor ); 10136: 10136: 10136: 10136: } 10136: ~tls() { base::destroy(); } 10136: T* operator=(T* value) { base::set(value); return value; } 10136: operator T*() { return internal_get(); } 10136: T* operator->() { return internal_get(); } 10136: T& operator*() { return *internal_get(); } 10136: }; 10136: 10136: } 10136: 10136: } 10136: # 28 "../../src/test/harness_concurrency_tracker.h" 2 10136: 10136: 10136: 10136: # 1 "../../include/tbb/mutex.h" 1 10136: # 35 "../../include/tbb/mutex.h" 10136: namespace tbb { 10136: 10136: 10136: 10136: class mutex : internal::mutex_copy_deprecated_and_disabled { 10136: public: 10136: 10136: mutex() { 10136: 10136: internal_construct(); 10136: # 54 "../../include/tbb/mutex.h" 10136: }; 10136: 10136: ~mutex() { 10136: 10136: internal_destroy(); 10136: # 67 "../../include/tbb/mutex.h" 10136: }; 10136: 10136: class scoped_lock; 10136: friend class scoped_lock; 10136: 10136: 10136: 10136: 10136: class scoped_lock : internal::no_copy { 10136: public: 10136: 10136: scoped_lock() : my_mutex( 10136: # 78 "../../include/tbb/mutex.h" 3 4 10136: __null 10136: # 78 "../../include/tbb/mutex.h" 10136: ) {}; 10136: 10136: 10136: scoped_lock( mutex& mutex ) { 10136: acquire( mutex ); 10136: } 10136: 10136: 10136: ~scoped_lock() { 10136: if( my_mutex ) 10136: release(); 10136: } 10136: 10136: 10136: void acquire( mutex& mutex ) { 10136: 10136: internal_acquire(mutex); 10136: 10136: 10136: 10136: 10136: } 10136: 10136: 10136: bool try_acquire( mutex& mutex ) { 10136: 10136: return internal_try_acquire (mutex); 10136: 10136: 10136: 10136: 10136: 10136: 10136: } 10136: 10136: 10136: void release() { 10136: 10136: internal_release (); 10136: 10136: 10136: 10136: 10136: } 10136: 10136: private: 10136: 10136: mutex* my_mutex; 10136: 10136: 10136: void internal_acquire( mutex& m ); 10136: 10136: 10136: bool internal_try_acquire( mutex& m ); 10136: 10136: 10136: void internal_release(); 10136: 10136: friend class mutex; 10136: }; 10136: 10136: 10136: static const bool is_rw_mutex = false; 10136: static const bool is_recursive_mutex = false; 10136: static const bool is_fair_mutex = false; 10136: 10136: 10136: 10136: 10136: void lock() { 10136: 10136: aligned_space tmp; 10136: new(tmp.begin()) scoped_lock(*this); 10136: # 160 "../../include/tbb/mutex.h" 10136: } 10136: 10136: 10136: 10136: bool try_lock() { 10136: 10136: aligned_space tmp; 10136: scoped_lock& s = *tmp.begin(); 10136: s.my_mutex = 10136: # 168 "../../include/tbb/mutex.h" 3 4 10136: __null 10136: # 168 "../../include/tbb/mutex.h" 10136: ; 10136: return s.internal_try_acquire(*this); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: } 10136: 10136: 10136: void unlock() { 10136: 10136: aligned_space tmp; 10136: scoped_lock& s = *tmp.begin(); 10136: s.my_mutex = this; 10136: s.internal_release(); 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: } 10136: 10136: 10136: 10136: 10136: 10136: typedef pthread_mutex_t* native_handle_type; 10136: 10136: native_handle_type native_handle() { return (native_handle_type) &impl; } 10136: 10136: enum state_t { 10136: INITIALIZED=0x1234, 10136: DESTROYED=0x789A, 10136: HELD=0x56CD 10136: }; 10136: private: 10136: 10136: 10136: 10136: 10136: pthread_mutex_t impl; 10136: 10136: 10136: 10136: void internal_construct(); 10136: 10136: 10136: void internal_destroy(); 10136: 10136: 10136: 10136: 10136: 10136: 10136: }; 10136: 10136: namespace profiling { inline void set_name( mutex& obj, const char* name ) { tbb::internal::itt_set_sync_name_v3( &obj, name ); } } 10136: 10136: } 10136: # 32 "../../src/test/harness_concurrency_tracker.h" 2 10136: 10136: # 1 "../../include/tbb/combinable.h" 1 10136: # 24 "../../include/tbb/combinable.h" 10136: # 1 "../../include/tbb/enumerable_thread_specific.h" 1 10136: # 25 "../../include/tbb/enumerable_thread_specific.h" 10136: # 1 "../../include/tbb/concurrent_vector.h" 1 10136: # 27 "../../include/tbb/concurrent_vector.h" 10136: # 1 "../../include/tbb/cache_aligned_allocator.h" 1 10136: # 30 "../../include/tbb/cache_aligned_allocator.h" 10136: namespace tbb { 10136: 10136: 10136: namespace internal { 10136: 10136: 10136: size_t NFS_GetLineSize(); 10136: 10136: 10136: 10136: void* NFS_Allocate( size_t n_element, size_t element_size, void* hint ); 10136: 10136: 10136: 10136: 10136: void NFS_Free( void* ); 10136: } 10136: # 59 "../../include/tbb/cache_aligned_allocator.h" 10136: template 10136: class cache_aligned_allocator { 10136: public: 10136: typedef typename internal::allocator_type::value_type value_type; 10136: typedef value_type* pointer; 10136: typedef const value_type* const_pointer; 10136: typedef value_type& reference; 10136: typedef const value_type& const_reference; 10136: typedef size_t size_type; 10136: typedef ptrdiff_t difference_type; 10136: template struct rebind { 10136: typedef cache_aligned_allocator other; 10136: }; 10136: 10136: cache_aligned_allocator() throw() {} 10136: cache_aligned_allocator( const cache_aligned_allocator& ) throw() {} 10136: template cache_aligned_allocator(const cache_aligned_allocator&) throw() {} 10136: 10136: pointer address(reference x) const {return &x;} 10136: const_pointer address(const_reference x) const {return &x;} 10136: 10136: 10136: pointer allocate( size_type n, const void* hint=0 ) { 10136: 10136: return pointer(internal::NFS_Allocate( n, sizeof(value_type), const_cast(hint) )); 10136: } 10136: 10136: 10136: void deallocate( pointer p, size_type ) { 10136: internal::NFS_Free(p); 10136: } 10136: 10136: 10136: size_type max_size() const throw() { 10136: return (~size_t(0)-internal::NFS_MaxLineSize)/sizeof(value_type); 10136: } 10136: 10136: 10136: 10136: template 10136: void construct(U *p, Args&&... args) 10136: { ::new((void *)p) U(std::forward(args)...); } 10136: # 109 "../../include/tbb/cache_aligned_allocator.h" 10136: void destroy( pointer p ) {p->~value_type();} 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: class cache_aligned_allocator { 10136: public: 10136: typedef void* pointer; 10136: typedef const void* const_pointer; 10136: typedef void value_type; 10136: template struct rebind { 10136: typedef cache_aligned_allocator other; 10136: }; 10136: }; 10136: 10136: template 10136: inline bool operator==( const cache_aligned_allocator&, const cache_aligned_allocator& ) {return true;} 10136: 10136: template 10136: inline bool operator!=( const cache_aligned_allocator&, const cache_aligned_allocator& ) {return false;} 10136: 10136: } 10136: # 28 "../../include/tbb/concurrent_vector.h" 2 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/cstring" 1 3 10136: # 39 "/usr/include/c++/8/cstring" 3 10136: 10136: # 40 "/usr/include/c++/8/cstring" 3 10136: # 33 "../../include/tbb/concurrent_vector.h" 2 10136: # 41 "../../include/tbb/concurrent_vector.h" 10136: # 1 "/usr/include/c++/8/algorithm" 1 3 10136: # 58 "/usr/include/c++/8/algorithm" 3 10136: 10136: # 59 "/usr/include/c++/8/algorithm" 3 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/stl_algo.h" 1 3 10136: # 59 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: # 1 "/usr/include/c++/8/cstdlib" 1 3 10136: # 39 "/usr/include/c++/8/cstdlib" 3 10136: 10136: # 40 "/usr/include/c++/8/cstdlib" 3 10136: # 60 "/usr/include/c++/8/bits/stl_algo.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/algorithmfwd.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/algorithmfwd.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/algorithmfwd.h" 3 10136: # 42 "/usr/include/c++/8/bits/algorithmfwd.h" 3 10136: 10136: # 42 "/usr/include/c++/8/bits/algorithmfwd.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 195 "/usr/include/c++/8/bits/algorithmfwd.h" 3 10136: template 10136: bool 10136: all_of(_IIter, _IIter, _Predicate); 10136: 10136: template 10136: bool 10136: any_of(_IIter, _IIter, _Predicate); 10136: 10136: 10136: template 10136: bool 10136: binary_search(_FIter, _FIter, const _Tp&); 10136: 10136: template 10136: bool 10136: binary_search(_FIter, _FIter, const _Tp&, _Compare); 10136: # 224 "/usr/include/c++/8/bits/algorithmfwd.h" 3 10136: template 10136: _OIter 10136: copy(_IIter, _IIter, _OIter); 10136: 10136: template 10136: _BIter2 10136: copy_backward(_BIter1, _BIter1, _BIter2); 10136: 10136: 10136: template 10136: _OIter 10136: copy_if(_IIter, _IIter, _OIter, _Predicate); 10136: 10136: template 10136: _OIter 10136: copy_n(_IIter, _Size, _OIter); 10136: 10136: 10136: 10136: 10136: 10136: template 10136: pair<_FIter, _FIter> 10136: equal_range(_FIter, _FIter, const _Tp&); 10136: 10136: template 10136: pair<_FIter, _FIter> 10136: equal_range(_FIter, _FIter, const _Tp&, _Compare); 10136: 10136: template 10136: void 10136: fill(_FIter, _FIter, const _Tp&); 10136: 10136: template 10136: _OIter 10136: fill_n(_OIter, _Size, const _Tp&); 10136: 10136: 10136: 10136: template 10136: _FIter1 10136: find_end(_FIter1, _FIter1, _FIter2, _FIter2); 10136: 10136: template 10136: _FIter1 10136: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _IIter 10136: find_if_not(_IIter, _IIter, _Predicate); 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: bool 10136: includes(_IIter1, _IIter1, _IIter2, _IIter2); 10136: 10136: template 10136: bool 10136: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 10136: 10136: template 10136: void 10136: inplace_merge(_BIter, _BIter, _BIter); 10136: 10136: template 10136: void 10136: inplace_merge(_BIter, _BIter, _BIter, _Compare); 10136: 10136: 10136: template 10136: bool 10136: is_heap(_RAIter, _RAIter); 10136: 10136: template 10136: bool 10136: is_heap(_RAIter, _RAIter, _Compare); 10136: 10136: template 10136: _RAIter 10136: is_heap_until(_RAIter, _RAIter); 10136: 10136: template 10136: _RAIter 10136: is_heap_until(_RAIter, _RAIter, _Compare); 10136: 10136: template 10136: bool 10136: is_partitioned(_IIter, _IIter, _Predicate); 10136: 10136: template 10136: bool 10136: is_permutation(_FIter1, _FIter1, _FIter2); 10136: 10136: template 10136: bool 10136: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); 10136: 10136: template 10136: bool 10136: is_sorted(_FIter, _FIter); 10136: 10136: template 10136: bool 10136: is_sorted(_FIter, _FIter, _Compare); 10136: 10136: template 10136: _FIter 10136: is_sorted_until(_FIter, _FIter); 10136: 10136: template 10136: _FIter 10136: is_sorted_until(_FIter, _FIter, _Compare); 10136: 10136: 10136: template 10136: void 10136: iter_swap(_FIter1, _FIter2); 10136: 10136: template 10136: _FIter 10136: lower_bound(_FIter, _FIter, const _Tp&); 10136: 10136: template 10136: _FIter 10136: lower_bound(_FIter, _FIter, const _Tp&, _Compare); 10136: 10136: template 10136: void 10136: make_heap(_RAIter, _RAIter); 10136: 10136: template 10136: void 10136: make_heap(_RAIter, _RAIter, _Compare); 10136: 10136: template 10136: constexpr 10136: const _Tp& 10136: max(const _Tp&, const _Tp&); 10136: 10136: template 10136: constexpr 10136: const _Tp& 10136: max(const _Tp&, const _Tp&, _Compare); 10136: 10136: 10136: 10136: 10136: template 10136: constexpr 10136: const _Tp& 10136: min(const _Tp&, const _Tp&); 10136: 10136: template 10136: constexpr 10136: const _Tp& 10136: min(const _Tp&, const _Tp&, _Compare); 10136: 10136: 10136: 10136: 10136: template 10136: constexpr 10136: pair 10136: minmax(const _Tp&, const _Tp&); 10136: 10136: template 10136: constexpr 10136: pair 10136: minmax(const _Tp&, const _Tp&, _Compare); 10136: 10136: template 10136: constexpr 10136: pair<_FIter, _FIter> 10136: minmax_element(_FIter, _FIter); 10136: 10136: template 10136: constexpr 10136: pair<_FIter, _FIter> 10136: minmax_element(_FIter, _FIter, _Compare); 10136: 10136: template 10136: constexpr 10136: _Tp 10136: min(initializer_list<_Tp>); 10136: 10136: template 10136: constexpr 10136: _Tp 10136: min(initializer_list<_Tp>, _Compare); 10136: 10136: template 10136: constexpr 10136: _Tp 10136: max(initializer_list<_Tp>); 10136: 10136: template 10136: constexpr 10136: _Tp 10136: max(initializer_list<_Tp>, _Compare); 10136: 10136: template 10136: constexpr 10136: pair<_Tp, _Tp> 10136: minmax(initializer_list<_Tp>); 10136: 10136: template 10136: constexpr 10136: pair<_Tp, _Tp> 10136: minmax(initializer_list<_Tp>, _Compare); 10136: 10136: 10136: 10136: 10136: template 10136: bool 10136: next_permutation(_BIter, _BIter); 10136: 10136: template 10136: bool 10136: next_permutation(_BIter, _BIter, _Compare); 10136: 10136: 10136: template 10136: bool 10136: none_of(_IIter, _IIter, _Predicate); 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _RAIter 10136: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); 10136: 10136: template 10136: _RAIter 10136: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); 10136: 10136: 10136: 10136: 10136: template 10136: pair<_OIter1, _OIter2> 10136: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); 10136: 10136: template 10136: _FIter 10136: partition_point(_FIter, _FIter, _Predicate); 10136: 10136: 10136: template 10136: void 10136: pop_heap(_RAIter, _RAIter); 10136: 10136: template 10136: void 10136: pop_heap(_RAIter, _RAIter, _Compare); 10136: 10136: template 10136: bool 10136: prev_permutation(_BIter, _BIter); 10136: 10136: template 10136: bool 10136: prev_permutation(_BIter, _BIter, _Compare); 10136: 10136: template 10136: void 10136: push_heap(_RAIter, _RAIter); 10136: 10136: template 10136: void 10136: push_heap(_RAIter, _RAIter, _Compare); 10136: 10136: 10136: 10136: template 10136: _FIter 10136: remove(_FIter, _FIter, const _Tp&); 10136: 10136: template 10136: _FIter 10136: remove_if(_FIter, _FIter, _Predicate); 10136: 10136: template 10136: _OIter 10136: remove_copy(_IIter, _IIter, _OIter, const _Tp&); 10136: 10136: template 10136: _OIter 10136: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); 10136: 10136: 10136: 10136: template 10136: _OIter 10136: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); 10136: 10136: template 10136: _OIter 10136: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); 10136: 10136: 10136: 10136: template 10136: void 10136: reverse(_BIter, _BIter); 10136: 10136: template 10136: _OIter 10136: reverse_copy(_BIter, _BIter, _OIter); 10136: 10136: inline namespace _V2 10136: { 10136: template 10136: _FIter 10136: rotate(_FIter, _FIter, _FIter); 10136: } 10136: 10136: template 10136: _OIter 10136: rotate_copy(_FIter, _FIter, _FIter, _OIter); 10136: # 565 "/usr/include/c++/8/bits/algorithmfwd.h" 3 10136: template 10136: void 10136: shuffle(_RAIter, _RAIter, _UGenerator&&); 10136: 10136: 10136: template 10136: void 10136: sort_heap(_RAIter, _RAIter); 10136: 10136: template 10136: void 10136: sort_heap(_RAIter, _RAIter, _Compare); 10136: 10136: template 10136: _BIter 10136: stable_partition(_BIter, _BIter, _Predicate); 10136: # 594 "/usr/include/c++/8/bits/algorithmfwd.h" 3 10136: template 10136: _FIter2 10136: swap_ranges(_FIter1, _FIter1, _FIter2); 10136: 10136: 10136: 10136: template 10136: _FIter 10136: unique(_FIter, _FIter); 10136: 10136: template 10136: _FIter 10136: unique(_FIter, _FIter, _BinaryPredicate); 10136: 10136: 10136: 10136: template 10136: _FIter 10136: upper_bound(_FIter, _FIter, const _Tp&); 10136: 10136: template 10136: _FIter 10136: upper_bound(_FIter, _FIter, const _Tp&, _Compare); 10136: 10136: 10136: 10136: template 10136: _FIter 10136: adjacent_find(_FIter, _FIter); 10136: 10136: template 10136: _FIter 10136: adjacent_find(_FIter, _FIter, _BinaryPredicate); 10136: 10136: template 10136: typename iterator_traits<_IIter>::difference_type 10136: count(_IIter, _IIter, const _Tp&); 10136: 10136: template 10136: typename iterator_traits<_IIter>::difference_type 10136: count_if(_IIter, _IIter, _Predicate); 10136: 10136: template 10136: bool 10136: equal(_IIter1, _IIter1, _IIter2); 10136: 10136: template 10136: bool 10136: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 10136: 10136: template 10136: _IIter 10136: find(_IIter, _IIter, const _Tp&); 10136: 10136: template 10136: _FIter1 10136: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); 10136: 10136: template 10136: _FIter1 10136: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 10136: 10136: template 10136: _IIter 10136: find_if(_IIter, _IIter, _Predicate); 10136: 10136: template 10136: _Funct 10136: for_each(_IIter, _IIter, _Funct); 10136: 10136: template 10136: void 10136: generate(_FIter, _FIter, _Generator); 10136: 10136: template 10136: _OIter 10136: generate_n(_OIter, _Size, _Generator); 10136: 10136: template 10136: bool 10136: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); 10136: 10136: template 10136: bool 10136: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 10136: 10136: template 10136: constexpr 10136: _FIter 10136: max_element(_FIter, _FIter); 10136: 10136: template 10136: constexpr 10136: _FIter 10136: max_element(_FIter, _FIter, _Compare); 10136: 10136: template 10136: _OIter 10136: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 10136: 10136: template 10136: _OIter 10136: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 10136: 10136: template 10136: constexpr 10136: _FIter 10136: min_element(_FIter, _FIter); 10136: 10136: template 10136: constexpr 10136: _FIter 10136: min_element(_FIter, _FIter, _Compare); 10136: 10136: template 10136: pair<_IIter1, _IIter2> 10136: mismatch(_IIter1, _IIter1, _IIter2); 10136: 10136: template 10136: pair<_IIter1, _IIter2> 10136: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 10136: 10136: template 10136: void 10136: nth_element(_RAIter, _RAIter, _RAIter); 10136: 10136: template 10136: void 10136: nth_element(_RAIter, _RAIter, _RAIter, _Compare); 10136: 10136: template 10136: void 10136: partial_sort(_RAIter, _RAIter, _RAIter); 10136: 10136: template 10136: void 10136: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); 10136: 10136: template 10136: _BIter 10136: partition(_BIter, _BIter, _Predicate); 10136: 10136: template 10136: void 10136: random_shuffle(_RAIter, _RAIter); 10136: 10136: template 10136: void 10136: random_shuffle(_RAIter, _RAIter, 10136: 10136: _Generator&&); 10136: 10136: 10136: 10136: 10136: template 10136: void 10136: replace(_FIter, _FIter, const _Tp&, const _Tp&); 10136: 10136: template 10136: void 10136: replace_if(_FIter, _FIter, _Predicate, const _Tp&); 10136: 10136: template 10136: _FIter1 10136: search(_FIter1, _FIter1, _FIter2, _FIter2); 10136: 10136: template 10136: _FIter1 10136: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 10136: 10136: template 10136: _FIter 10136: search_n(_FIter, _FIter, _Size, const _Tp&); 10136: 10136: template 10136: _FIter 10136: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); 10136: 10136: template 10136: _OIter 10136: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 10136: 10136: template 10136: _OIter 10136: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 10136: 10136: template 10136: _OIter 10136: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 10136: 10136: template 10136: _OIter 10136: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 10136: 10136: template 10136: _OIter 10136: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 10136: 10136: template 10136: _OIter 10136: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, 10136: _OIter, _Compare); 10136: 10136: template 10136: _OIter 10136: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 10136: 10136: template 10136: _OIter 10136: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 10136: 10136: template 10136: void 10136: sort(_RAIter, _RAIter); 10136: 10136: template 10136: void 10136: sort(_RAIter, _RAIter, _Compare); 10136: 10136: template 10136: void 10136: stable_sort(_RAIter, _RAIter); 10136: 10136: template 10136: void 10136: stable_sort(_RAIter, _RAIter, _Compare); 10136: 10136: template 10136: _OIter 10136: transform(_IIter, _IIter, _OIter, _UnaryOperation); 10136: 10136: template 10136: _OIter 10136: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); 10136: 10136: template 10136: _OIter 10136: unique_copy(_IIter, _IIter, _OIter); 10136: 10136: template 10136: _OIter 10136: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); 10136: 10136: 10136: 10136: } 10136: # 61 "/usr/include/c++/8/bits/stl_algo.h" 2 3 10136: # 1 "/usr/include/c++/8/bits/stl_heap.h" 1 3 10136: # 62 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _Distance 10136: __is_heap_until(_RandomAccessIterator __first, _Distance __n, 10136: _Compare& __comp) 10136: { 10136: _Distance __parent = 0; 10136: for (_Distance __child = 1; __child < __n; ++__child) 10136: { 10136: if (__comp(__first + __parent, __first + __child)) 10136: return __child; 10136: if ((__child & 1) == 0) 10136: ++__parent; 10136: } 10136: return __n; 10136: } 10136: 10136: 10136: 10136: template 10136: inline bool 10136: __is_heap(_RandomAccessIterator __first, _Distance __n) 10136: { 10136: __gnu_cxx::__ops::_Iter_less_iter __comp; 10136: return std::__is_heap_until(__first, __n, __comp) == __n; 10136: } 10136: 10136: template 10136: inline bool 10136: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) 10136: { 10136: typedef __decltype(__comp) _Cmp; 10136: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 10136: return std::__is_heap_until(__first, __n, __cmp) == __n; 10136: } 10136: 10136: template 10136: inline bool 10136: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { return std::__is_heap(__first, std::distance(__first, __last)); } 10136: 10136: template 10136: inline bool 10136: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: return std::__is_heap(__first, std::move(__comp), 10136: std::distance(__first, __last)); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void 10136: __push_heap(_RandomAccessIterator __first, 10136: _Distance __holeIndex, _Distance __topIndex, _Tp __value, 10136: _Compare& __comp) 10136: { 10136: _Distance __parent = (__holeIndex - 1) / 2; 10136: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) 10136: { 10136: *(__first + __holeIndex) = std::move(*(__first + __parent)); 10136: __holeIndex = __parent; 10136: __parent = (__holeIndex - 1) / 2; 10136: } 10136: *(__first + __holeIndex) = std::move(__value); 10136: } 10136: # 152 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline void 10136: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { 10136: typedef typename iterator_traits<_RandomAccessIterator>::value_type 10136: _ValueType; 10136: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 10136: _DistanceType; 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: __gnu_cxx::__ops::_Iter_less_val __comp; 10136: _ValueType __value = std::move(*(__last - 1)); 10136: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 10136: _DistanceType(0), std::move(__value), __comp); 10136: } 10136: # 187 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline void 10136: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: typedef typename iterator_traits<_RandomAccessIterator>::value_type 10136: _ValueType; 10136: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 10136: _DistanceType; 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 10136: __cmp(std::move(__comp)); 10136: _ValueType __value = std::move(*(__last - 1)); 10136: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 10136: _DistanceType(0), std::move(__value), __cmp); 10136: } 10136: 10136: template 10136: void 10136: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, 10136: _Distance __len, _Tp __value, _Compare __comp) 10136: { 10136: const _Distance __topIndex = __holeIndex; 10136: _Distance __secondChild = __holeIndex; 10136: while (__secondChild < (__len - 1) / 2) 10136: { 10136: __secondChild = 2 * (__secondChild + 1); 10136: if (__comp(__first + __secondChild, 10136: __first + (__secondChild - 1))) 10136: __secondChild--; 10136: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); 10136: __holeIndex = __secondChild; 10136: } 10136: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) 10136: { 10136: __secondChild = 2 * (__secondChild + 1); 10136: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) 10136: ; 10136: __holeIndex = __secondChild - 1; 10136: } 10136: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 10136: __cmp(std::move(__comp)); 10136: std::__push_heap(__first, __holeIndex, __topIndex, 10136: std::move(__value), __cmp); 10136: } 10136: 10136: template 10136: inline void 10136: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _RandomAccessIterator __result, _Compare& __comp) 10136: { 10136: typedef typename iterator_traits<_RandomAccessIterator>::value_type 10136: _ValueType; 10136: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 10136: _DistanceType; 10136: 10136: _ValueType __value = std::move(*__result); 10136: *__result = std::move(*__first); 10136: std::__adjust_heap(__first, _DistanceType(0), 10136: _DistanceType(__last - __first), 10136: std::move(__value), __comp); 10136: } 10136: # 269 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline void 10136: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: if (__last - __first > 1) 10136: { 10136: --__last; 10136: __gnu_cxx::__ops::_Iter_less_iter __comp; 10136: std::__pop_heap(__first, __last, __last, __comp); 10136: } 10136: } 10136: # 302 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline void 10136: pop_heap(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: if (__last - __first > 1) 10136: { 10136: typedef __decltype(__comp) _Cmp; 10136: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 10136: --__last; 10136: std::__pop_heap(__first, __last, __last, __cmp); 10136: } 10136: } 10136: 10136: template 10136: void 10136: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare& __comp) 10136: { 10136: typedef typename iterator_traits<_RandomAccessIterator>::value_type 10136: _ValueType; 10136: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 10136: _DistanceType; 10136: 10136: if (__last - __first < 2) 10136: return; 10136: 10136: const _DistanceType __len = __last - __first; 10136: _DistanceType __parent = (__len - 2) / 2; 10136: while (true) 10136: { 10136: _ValueType __value = std::move(*(__first + __parent)); 10136: std::__adjust_heap(__first, __parent, __len, std::move(__value), 10136: __comp); 10136: if (__parent == 0) 10136: return; 10136: __parent--; 10136: } 10136: } 10136: # 358 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline void 10136: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: __gnu_cxx::__ops::_Iter_less_iter __comp; 10136: std::__make_heap(__first, __last, __comp); 10136: } 10136: # 384 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline void 10136: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: typedef __decltype(__comp) _Cmp; 10136: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 10136: std::__make_heap(__first, __last, __cmp); 10136: } 10136: 10136: template 10136: void 10136: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare& __comp) 10136: { 10136: while (__last - __first > 1) 10136: { 10136: --__last; 10136: std::__pop_heap(__first, __last, __last, __comp); 10136: } 10136: } 10136: # 420 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline void 10136: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: __gnu_cxx::__ops::_Iter_less_iter __comp; 10136: std::__sort_heap(__first, __last, __comp); 10136: } 10136: # 447 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline void 10136: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: typedef __decltype(__comp) _Cmp; 10136: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 10136: std::__sort_heap(__first, __last, __cmp); 10136: } 10136: # 475 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline _RandomAccessIterator 10136: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: __gnu_cxx::__ops::_Iter_less_iter __comp; 10136: return __first + 10136: std::__is_heap_until(__first, std::distance(__first, __last), __comp); 10136: } 10136: # 503 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline _RandomAccessIterator 10136: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: typedef __decltype(__comp) _Cmp; 10136: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 10136: return __first 10136: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); 10136: } 10136: # 527 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline bool 10136: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { return std::is_heap_until(__first, __last) == __last; } 10136: # 540 "/usr/include/c++/8/bits/stl_heap.h" 3 10136: template 10136: inline bool 10136: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: const auto __dist = std::distance(__first, __last); 10136: typedef __decltype(__comp) _Cmp; 10136: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 10136: return std::__is_heap_until(__first, __dist, __cmp) == __dist; 10136: } 10136: 10136: 10136: 10136: } 10136: # 62 "/usr/include/c++/8/bits/stl_algo.h" 2 3 10136: 10136: 10136: 10136: 10136: # 1 "/usr/include/c++/8/bits/uniform_int_dist.h" 1 3 10136: # 35 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 10136: # 1 "/usr/include/c++/8/limits" 1 3 10136: # 40 "/usr/include/c++/8/limits" 3 10136: 10136: # 41 "/usr/include/c++/8/limits" 3 10136: # 158 "/usr/include/c++/8/limits" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: enum float_round_style 10136: { 10136: round_indeterminate = -1, 10136: round_toward_zero = 0, 10136: round_to_nearest = 1, 10136: round_toward_infinity = 2, 10136: round_toward_neg_infinity = 3 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: enum float_denorm_style 10136: { 10136: 10136: denorm_indeterminate = -1, 10136: 10136: denorm_absent = 0, 10136: 10136: denorm_present = 1 10136: }; 10136: # 202 "/usr/include/c++/8/limits" 3 10136: struct __numeric_limits_base 10136: { 10136: 10136: 10136: static constexpr bool is_specialized = false; 10136: 10136: 10136: 10136: 10136: static constexpr int digits = 0; 10136: 10136: 10136: static constexpr int digits10 = 0; 10136: 10136: 10136: 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: 10136: 10136: static constexpr bool is_signed = false; 10136: 10136: 10136: static constexpr bool is_integer = false; 10136: 10136: 10136: 10136: 10136: static constexpr bool is_exact = false; 10136: 10136: 10136: 10136: static constexpr int radix = 0; 10136: 10136: 10136: 10136: static constexpr int min_exponent = 0; 10136: 10136: 10136: 10136: static constexpr int min_exponent10 = 0; 10136: 10136: 10136: 10136: 10136: static constexpr int max_exponent = 0; 10136: 10136: 10136: 10136: static constexpr int max_exponent10 = 0; 10136: 10136: 10136: static constexpr bool has_infinity = false; 10136: 10136: 10136: 10136: static constexpr bool has_quiet_NaN = false; 10136: 10136: 10136: 10136: static constexpr bool has_signaling_NaN = false; 10136: 10136: 10136: static constexpr float_denorm_style has_denorm = denorm_absent; 10136: 10136: 10136: 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: 10136: 10136: static constexpr bool is_iec559 = false; 10136: 10136: 10136: 10136: 10136: static constexpr bool is_bounded = false; 10136: # 288 "/usr/include/c++/8/limits" 3 10136: static constexpr bool is_modulo = false; 10136: 10136: 10136: static constexpr bool traps = false; 10136: 10136: 10136: static constexpr bool tinyness_before = false; 10136: 10136: 10136: 10136: 10136: static constexpr float_round_style round_style = 10136: round_toward_zero; 10136: }; 10136: # 311 "/usr/include/c++/8/limits" 3 10136: template 10136: struct numeric_limits : public __numeric_limits_base 10136: { 10136: 10136: 10136: static constexpr _Tp 10136: min() noexcept { return _Tp(); } 10136: 10136: 10136: static constexpr _Tp 10136: max() noexcept { return _Tp(); } 10136: 10136: 10136: 10136: 10136: static constexpr _Tp 10136: lowest() noexcept { return _Tp(); } 10136: 10136: 10136: 10136: 10136: static constexpr _Tp 10136: epsilon() noexcept { return _Tp(); } 10136: 10136: 10136: static constexpr _Tp 10136: round_error() noexcept { return _Tp(); } 10136: 10136: 10136: static constexpr _Tp 10136: infinity() noexcept { return _Tp(); } 10136: 10136: 10136: 10136: static constexpr _Tp 10136: quiet_NaN() noexcept { return _Tp(); } 10136: 10136: 10136: 10136: static constexpr _Tp 10136: signaling_NaN() noexcept { return _Tp(); } 10136: 10136: 10136: 10136: 10136: static constexpr _Tp 10136: denorm_min() noexcept { return _Tp(); } 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct numeric_limits 10136: : public numeric_limits<_Tp> { }; 10136: 10136: template 10136: struct numeric_limits 10136: : public numeric_limits<_Tp> { }; 10136: 10136: template 10136: struct numeric_limits 10136: : public numeric_limits<_Tp> { }; 10136: # 382 "/usr/include/c++/8/limits" 3 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr bool 10136: min() noexcept { return false; } 10136: 10136: static constexpr bool 10136: max() noexcept { return true; } 10136: 10136: 10136: static constexpr bool 10136: lowest() noexcept { return min(); } 10136: 10136: static constexpr int digits = 1; 10136: static constexpr int digits10 = 0; 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = false; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr bool 10136: epsilon() noexcept { return false; } 10136: 10136: static constexpr bool 10136: round_error() noexcept { return false; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr bool 10136: infinity() noexcept { return false; } 10136: 10136: static constexpr bool 10136: quiet_NaN() noexcept { return false; } 10136: 10136: static constexpr bool 10136: signaling_NaN() noexcept { return false; } 10136: 10136: static constexpr bool 10136: denorm_min() noexcept { return false; } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: 10136: 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr char 10136: min() noexcept { return (((char)(-1) < 0) ? -(((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0) - 1 : (char)0); } 10136: 10136: static constexpr char 10136: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } 10136: 10136: 10136: static constexpr char 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); 10136: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = ((char)(-1) < 0); 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr char 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr char 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr 10136: char infinity() noexcept { return char(); } 10136: 10136: static constexpr char 10136: quiet_NaN() noexcept { return char(); } 10136: 10136: static constexpr char 10136: signaling_NaN() noexcept { return char(); } 10136: 10136: static constexpr char 10136: denorm_min() noexcept { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = !is_signed; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr signed char 10136: min() noexcept { return -0x7f - 1; } 10136: 10136: static constexpr signed char 10136: max() noexcept { return 0x7f; } 10136: 10136: 10136: static constexpr signed char 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); 10136: static constexpr int digits10 10136: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = true; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr signed char 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr signed char 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr signed char 10136: infinity() noexcept { return static_cast(0); } 10136: 10136: static constexpr signed char 10136: quiet_NaN() noexcept { return static_cast(0); } 10136: 10136: static constexpr signed char 10136: signaling_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr signed char 10136: denorm_min() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr unsigned char 10136: min() noexcept { return 0; } 10136: 10136: static constexpr unsigned char 10136: max() noexcept { return 0x7f * 2U + 1; } 10136: 10136: 10136: static constexpr unsigned char 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits 10136: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); 10136: static constexpr int digits10 10136: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = false; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr unsigned char 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr unsigned char 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr unsigned char 10136: infinity() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned char 10136: quiet_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned char 10136: signaling_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned char 10136: denorm_min() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = true; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr wchar_t 10136: min() noexcept { return (((wchar_t)(-1) < 0) ? -(((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0) - 1 : (wchar_t)0); } 10136: 10136: static constexpr wchar_t 10136: max() noexcept { return (((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0); } 10136: 10136: 10136: static constexpr wchar_t 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); 10136: static constexpr int digits10 10136: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = ((wchar_t)(-1) < 0); 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr wchar_t 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr wchar_t 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr wchar_t 10136: infinity() noexcept { return wchar_t(); } 10136: 10136: static constexpr wchar_t 10136: quiet_NaN() noexcept { return wchar_t(); } 10136: 10136: static constexpr wchar_t 10136: signaling_NaN() noexcept { return wchar_t(); } 10136: 10136: static constexpr wchar_t 10136: denorm_min() noexcept { return wchar_t(); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = !is_signed; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr char16_t 10136: min() noexcept { return (((char16_t)(-1) < 0) ? -(((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0) - 1 : (char16_t)0); } 10136: 10136: static constexpr char16_t 10136: max() noexcept { return (((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0); } 10136: 10136: static constexpr char16_t 10136: lowest() noexcept { return min(); } 10136: 10136: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); 10136: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); 10136: static constexpr int max_digits10 = 0; 10136: static constexpr bool is_signed = ((char16_t)(-1) < 0); 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr char16_t 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr char16_t 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr char16_t 10136: infinity() noexcept { return char16_t(); } 10136: 10136: static constexpr char16_t 10136: quiet_NaN() noexcept { return char16_t(); } 10136: 10136: static constexpr char16_t 10136: signaling_NaN() noexcept { return char16_t(); } 10136: 10136: static constexpr char16_t 10136: denorm_min() noexcept { return char16_t(); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = !is_signed; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr char32_t 10136: min() noexcept { return (((char32_t)(-1) < 0) ? -(((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0) - 1 : (char32_t)0); } 10136: 10136: static constexpr char32_t 10136: max() noexcept { return (((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0); } 10136: 10136: static constexpr char32_t 10136: lowest() noexcept { return min(); } 10136: 10136: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); 10136: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); 10136: static constexpr int max_digits10 = 0; 10136: static constexpr bool is_signed = ((char32_t)(-1) < 0); 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr char32_t 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr char32_t 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr char32_t 10136: infinity() noexcept { return char32_t(); } 10136: 10136: static constexpr char32_t 10136: quiet_NaN() noexcept { return char32_t(); } 10136: 10136: static constexpr char32_t 10136: signaling_NaN() noexcept { return char32_t(); } 10136: 10136: static constexpr char32_t 10136: denorm_min() noexcept { return char32_t(); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = !is_signed; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style = round_toward_zero; 10136: }; 10136: 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr short 10136: min() noexcept { return -0x7fff - 1; } 10136: 10136: static constexpr short 10136: max() noexcept { return 0x7fff; } 10136: 10136: 10136: static constexpr short 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); 10136: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = true; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr short 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr short 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr short 10136: infinity() noexcept { return short(); } 10136: 10136: static constexpr short 10136: quiet_NaN() noexcept { return short(); } 10136: 10136: static constexpr short 10136: signaling_NaN() noexcept { return short(); } 10136: 10136: static constexpr short 10136: denorm_min() noexcept { return short(); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr unsigned short 10136: min() noexcept { return 0; } 10136: 10136: static constexpr unsigned short 10136: max() noexcept { return 0x7fff * 2U + 1; } 10136: 10136: 10136: static constexpr unsigned short 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits 10136: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); 10136: static constexpr int digits10 10136: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = false; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr unsigned short 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr unsigned short 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr unsigned short 10136: infinity() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned short 10136: quiet_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned short 10136: signaling_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned short 10136: denorm_min() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = true; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr int 10136: min() noexcept { return -0x7fffffff - 1; } 10136: 10136: static constexpr int 10136: max() noexcept { return 0x7fffffff; } 10136: 10136: 10136: static constexpr int 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); 10136: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = true; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr int 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr int 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr int 10136: infinity() noexcept { return static_cast(0); } 10136: 10136: static constexpr int 10136: quiet_NaN() noexcept { return static_cast(0); } 10136: 10136: static constexpr int 10136: signaling_NaN() noexcept { return static_cast(0); } 10136: 10136: static constexpr int 10136: denorm_min() noexcept { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr unsigned int 10136: min() noexcept { return 0; } 10136: 10136: static constexpr unsigned int 10136: max() noexcept { return 0x7fffffff * 2U + 1; } 10136: 10136: 10136: static constexpr unsigned int 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits 10136: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); 10136: static constexpr int digits10 10136: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = false; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr unsigned int 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr unsigned int 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr unsigned int 10136: infinity() noexcept { return static_cast(0); } 10136: 10136: static constexpr unsigned int 10136: quiet_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned int 10136: signaling_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned int 10136: denorm_min() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = true; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr long 10136: min() noexcept { return -0x7fffffffL - 1; } 10136: 10136: static constexpr long 10136: max() noexcept { return 0x7fffffffL; } 10136: 10136: 10136: static constexpr long 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); 10136: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = true; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr long 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr long 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr long 10136: infinity() noexcept { return static_cast(0); } 10136: 10136: static constexpr long 10136: quiet_NaN() noexcept { return static_cast(0); } 10136: 10136: static constexpr long 10136: signaling_NaN() noexcept { return static_cast(0); } 10136: 10136: static constexpr long 10136: denorm_min() noexcept { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr unsigned long 10136: min() noexcept { return 0; } 10136: 10136: static constexpr unsigned long 10136: max() noexcept { return 0x7fffffffL * 2UL + 1; } 10136: 10136: 10136: static constexpr unsigned long 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits 10136: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); 10136: static constexpr int digits10 10136: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = false; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr unsigned long 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr unsigned long 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr unsigned long 10136: infinity() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned long 10136: quiet_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned long 10136: signaling_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned long 10136: denorm_min() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = true; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr long long 10136: min() noexcept { return -0x7fffffffffffffffLL - 1; } 10136: 10136: static constexpr long long 10136: max() noexcept { return 0x7fffffffffffffffLL; } 10136: 10136: 10136: static constexpr long long 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits 10136: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); 10136: static constexpr int digits10 10136: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = true; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr long long 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr long long 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr long long 10136: infinity() noexcept { return static_cast(0); } 10136: 10136: static constexpr long long 10136: quiet_NaN() noexcept { return static_cast(0); } 10136: 10136: static constexpr long long 10136: signaling_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr long long 10136: denorm_min() noexcept { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr unsigned long long 10136: min() noexcept { return 0; } 10136: 10136: static constexpr unsigned long long 10136: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } 10136: 10136: 10136: static constexpr unsigned long long 10136: lowest() noexcept { return min(); } 10136: 10136: 10136: static constexpr int digits 10136: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); 10136: static constexpr int digits10 10136: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); 10136: 10136: static constexpr int max_digits10 = 0; 10136: 10136: static constexpr bool is_signed = false; 10136: static constexpr bool is_integer = true; 10136: static constexpr bool is_exact = true; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr unsigned long long 10136: epsilon() noexcept { return 0; } 10136: 10136: static constexpr unsigned long long 10136: round_error() noexcept { return 0; } 10136: 10136: static constexpr int min_exponent = 0; 10136: static constexpr int min_exponent10 = 0; 10136: static constexpr int max_exponent = 0; 10136: static constexpr int max_exponent10 = 0; 10136: 10136: static constexpr bool has_infinity = false; 10136: static constexpr bool has_quiet_NaN = false; 10136: static constexpr bool has_signaling_NaN = false; 10136: static constexpr float_denorm_style has_denorm 10136: = denorm_absent; 10136: static constexpr bool has_denorm_loss = false; 10136: 10136: static constexpr unsigned long long 10136: infinity() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned long long 10136: quiet_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned long long 10136: signaling_NaN() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr unsigned long long 10136: denorm_min() noexcept 10136: { return static_cast(0); } 10136: 10136: static constexpr bool is_iec559 = false; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = true; 10136: 10136: static constexpr bool traps = true; 10136: static constexpr bool tinyness_before = false; 10136: static constexpr float_round_style round_style 10136: = round_toward_zero; 10136: }; 10136: # 1593 "/usr/include/c++/8/limits" 3 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr float 10136: min() noexcept { return 1.1754943508222875e-38F; } 10136: 10136: static constexpr float 10136: max() noexcept { return 3.4028234663852886e+38F; } 10136: 10136: 10136: static constexpr float 10136: lowest() noexcept { return -3.4028234663852886e+38F; } 10136: 10136: 10136: static constexpr int digits = 24; 10136: static constexpr int digits10 = 6; 10136: 10136: static constexpr int max_digits10 10136: = (2 + (24) * 643L / 2136); 10136: 10136: static constexpr bool is_signed = true; 10136: static constexpr bool is_integer = false; 10136: static constexpr bool is_exact = false; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr float 10136: epsilon() noexcept { return 1.1920928955078125e-7F; } 10136: 10136: static constexpr float 10136: round_error() noexcept { return 0.5F; } 10136: 10136: static constexpr int min_exponent = (-125); 10136: static constexpr int min_exponent10 = (-37); 10136: static constexpr int max_exponent = 128; 10136: static constexpr int max_exponent10 = 38; 10136: 10136: static constexpr bool has_infinity = 1; 10136: static constexpr bool has_quiet_NaN = 1; 10136: static constexpr bool has_signaling_NaN = has_quiet_NaN; 10136: static constexpr float_denorm_style has_denorm 10136: = bool(1) ? denorm_present : denorm_absent; 10136: static constexpr bool has_denorm_loss 10136: = false; 10136: 10136: static constexpr float 10136: infinity() noexcept { return __builtin_huge_valf(); } 10136: 10136: static constexpr float 10136: quiet_NaN() noexcept { return __builtin_nanf(""); } 10136: 10136: static constexpr float 10136: signaling_NaN() noexcept { return __builtin_nansf(""); } 10136: 10136: static constexpr float 10136: denorm_min() noexcept { return 1.4012984643248171e-45F; } 10136: 10136: static constexpr bool is_iec559 10136: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: static constexpr bool traps = false; 10136: static constexpr bool tinyness_before 10136: = false; 10136: static constexpr float_round_style round_style 10136: = round_to_nearest; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr double 10136: min() noexcept { return double(2.2250738585072014e-308L); } 10136: 10136: static constexpr double 10136: max() noexcept { return double(1.7976931348623157e+308L); } 10136: 10136: 10136: static constexpr double 10136: lowest() noexcept { return -double(1.7976931348623157e+308L); } 10136: 10136: 10136: static constexpr int digits = 53; 10136: static constexpr int digits10 = 15; 10136: 10136: static constexpr int max_digits10 10136: = (2 + (53) * 643L / 2136); 10136: 10136: static constexpr bool is_signed = true; 10136: static constexpr bool is_integer = false; 10136: static constexpr bool is_exact = false; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr double 10136: epsilon() noexcept { return double(2.2204460492503131e-16L); } 10136: 10136: static constexpr double 10136: round_error() noexcept { return 0.5; } 10136: 10136: static constexpr int min_exponent = (-1021); 10136: static constexpr int min_exponent10 = (-307); 10136: static constexpr int max_exponent = 1024; 10136: static constexpr int max_exponent10 = 308; 10136: 10136: static constexpr bool has_infinity = 1; 10136: static constexpr bool has_quiet_NaN = 1; 10136: static constexpr bool has_signaling_NaN = has_quiet_NaN; 10136: static constexpr float_denorm_style has_denorm 10136: = bool(1) ? denorm_present : denorm_absent; 10136: static constexpr bool has_denorm_loss 10136: = false; 10136: 10136: static constexpr double 10136: infinity() noexcept { return __builtin_huge_val(); } 10136: 10136: static constexpr double 10136: quiet_NaN() noexcept { return __builtin_nan(""); } 10136: 10136: static constexpr double 10136: signaling_NaN() noexcept { return __builtin_nans(""); } 10136: 10136: static constexpr double 10136: denorm_min() noexcept { return double(4.9406564584124654e-324L); } 10136: 10136: static constexpr bool is_iec559 10136: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: static constexpr bool traps = false; 10136: static constexpr bool tinyness_before 10136: = false; 10136: static constexpr float_round_style round_style 10136: = round_to_nearest; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template<> 10136: struct numeric_limits 10136: { 10136: static constexpr bool is_specialized = true; 10136: 10136: static constexpr long double 10136: min() noexcept { return 2.2250738585072014e-308L; } 10136: 10136: static constexpr long double 10136: max() noexcept { return 1.7976931348623157e+308L; } 10136: 10136: 10136: static constexpr long double 10136: lowest() noexcept { return -1.7976931348623157e+308L; } 10136: 10136: 10136: static constexpr int digits = 53; 10136: static constexpr int digits10 = 15; 10136: 10136: static constexpr int max_digits10 10136: = (2 + (53) * 643L / 2136); 10136: 10136: static constexpr bool is_signed = true; 10136: static constexpr bool is_integer = false; 10136: static constexpr bool is_exact = false; 10136: static constexpr int radix = 2; 10136: 10136: static constexpr long double 10136: epsilon() noexcept { return 2.2204460492503131e-16L; } 10136: 10136: static constexpr long double 10136: round_error() noexcept { return 0.5L; } 10136: 10136: static constexpr int min_exponent = (-1021); 10136: static constexpr int min_exponent10 = (-307); 10136: static constexpr int max_exponent = 1024; 10136: static constexpr int max_exponent10 = 308; 10136: 10136: static constexpr bool has_infinity = 1; 10136: static constexpr bool has_quiet_NaN = 1; 10136: static constexpr bool has_signaling_NaN = has_quiet_NaN; 10136: static constexpr float_denorm_style has_denorm 10136: = bool(1) ? denorm_present : denorm_absent; 10136: static constexpr bool has_denorm_loss 10136: = false; 10136: 10136: static constexpr long double 10136: infinity() noexcept { return __builtin_huge_vall(); } 10136: 10136: static constexpr long double 10136: quiet_NaN() noexcept { return __builtin_nanl(""); } 10136: 10136: static constexpr long double 10136: signaling_NaN() noexcept { return __builtin_nansl(""); } 10136: 10136: static constexpr long double 10136: denorm_min() noexcept { return 4.9406564584124654e-324L; } 10136: 10136: static constexpr bool is_iec559 10136: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 10136: static constexpr bool is_bounded = true; 10136: static constexpr bool is_modulo = false; 10136: 10136: static constexpr bool traps = false; 10136: static constexpr bool tinyness_before = 10136: false; 10136: static constexpr float_round_style round_style = 10136: round_to_nearest; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: } 10136: # 36 "/usr/include/c++/8/bits/uniform_int_dist.h" 2 3 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: namespace __detail 10136: { 10136: 10136: template 10136: inline bool 10136: _Power_of_2(_Tp __x) 10136: { 10136: return ((__x - 1) & __x) == 0; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class uniform_int_distribution 10136: { 10136: static_assert(std::is_integral<_IntType>::value, 10136: "template argument must be an integral type"); 10136: 10136: public: 10136: 10136: typedef _IntType result_type; 10136: 10136: struct param_type 10136: { 10136: typedef uniform_int_distribution<_IntType> distribution_type; 10136: 10136: explicit 10136: param_type(_IntType __a = 0, 10136: _IntType __b = std::numeric_limits<_IntType>::max()) 10136: : _M_a(__a), _M_b(__b) 10136: { 10136: ; 10136: } 10136: 10136: result_type 10136: a() const 10136: { return _M_a; } 10136: 10136: result_type 10136: b() const 10136: { return _M_b; } 10136: 10136: friend bool 10136: operator==(const param_type& __p1, const param_type& __p2) 10136: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 10136: 10136: friend bool 10136: operator!=(const param_type& __p1, const param_type& __p2) 10136: { return !(__p1 == __p2); } 10136: 10136: private: 10136: _IntType _M_a; 10136: _IntType _M_b; 10136: }; 10136: 10136: public: 10136: 10136: 10136: 10136: explicit 10136: uniform_int_distribution(_IntType __a = 0, 10136: _IntType __b = std::numeric_limits<_IntType>::max()) 10136: : _M_param(__a, __b) 10136: { } 10136: 10136: explicit 10136: uniform_int_distribution(const param_type& __p) 10136: : _M_param(__p) 10136: { } 10136: 10136: 10136: 10136: 10136: 10136: 10136: void 10136: reset() { } 10136: 10136: result_type 10136: a() const 10136: { return _M_param.a(); } 10136: 10136: result_type 10136: b() const 10136: { return _M_param.b(); } 10136: 10136: 10136: 10136: 10136: param_type 10136: param() const 10136: { return _M_param; } 10136: 10136: 10136: 10136: 10136: 10136: void 10136: param(const param_type& __param) 10136: { _M_param = __param; } 10136: 10136: 10136: 10136: 10136: result_type 10136: min() const 10136: { return this->a(); } 10136: 10136: 10136: 10136: 10136: result_type 10136: max() const 10136: { return this->b(); } 10136: 10136: 10136: 10136: 10136: template 10136: result_type 10136: operator()(_UniformRandomNumberGenerator& __urng) 10136: { return this->operator()(__urng, _M_param); } 10136: 10136: template 10136: result_type 10136: operator()(_UniformRandomNumberGenerator& __urng, 10136: const param_type& __p); 10136: 10136: template 10136: void 10136: __generate(_ForwardIterator __f, _ForwardIterator __t, 10136: _UniformRandomNumberGenerator& __urng) 10136: { this->__generate(__f, __t, __urng, _M_param); } 10136: 10136: template 10136: void 10136: __generate(_ForwardIterator __f, _ForwardIterator __t, 10136: _UniformRandomNumberGenerator& __urng, 10136: const param_type& __p) 10136: { this->__generate_impl(__f, __t, __urng, __p); } 10136: 10136: template 10136: void 10136: __generate(result_type* __f, result_type* __t, 10136: _UniformRandomNumberGenerator& __urng, 10136: const param_type& __p) 10136: { this->__generate_impl(__f, __t, __urng, __p); } 10136: 10136: 10136: 10136: 10136: 10136: friend bool 10136: operator==(const uniform_int_distribution& __d1, 10136: const uniform_int_distribution& __d2) 10136: { return __d1._M_param == __d2._M_param; } 10136: 10136: private: 10136: template 10136: void 10136: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 10136: _UniformRandomNumberGenerator& __urng, 10136: const param_type& __p); 10136: 10136: param_type _M_param; 10136: }; 10136: 10136: template 10136: template 10136: typename uniform_int_distribution<_IntType>::result_type 10136: uniform_int_distribution<_IntType>:: 10136: operator()(_UniformRandomNumberGenerator& __urng, 10136: const param_type& __param) 10136: { 10136: typedef typename _UniformRandomNumberGenerator::result_type 10136: _Gresult_type; 10136: typedef typename std::make_unsigned::type __utype; 10136: typedef typename std::common_type<_Gresult_type, __utype>::type 10136: __uctype; 10136: 10136: const __uctype __urngmin = __urng.min(); 10136: const __uctype __urngmax = __urng.max(); 10136: const __uctype __urngrange = __urngmax - __urngmin; 10136: const __uctype __urange 10136: = __uctype(__param.b()) - __uctype(__param.a()); 10136: 10136: __uctype __ret; 10136: 10136: if (__urngrange > __urange) 10136: { 10136: 10136: const __uctype __uerange = __urange + 1; 10136: const __uctype __scaling = __urngrange / __uerange; 10136: const __uctype __past = __uerange * __scaling; 10136: do 10136: __ret = __uctype(__urng()) - __urngmin; 10136: while (__ret >= __past); 10136: __ret /= __scaling; 10136: } 10136: else if (__urngrange < __urange) 10136: { 10136: # 264 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 10136: __uctype __tmp; 10136: do 10136: { 10136: const __uctype __uerngrange = __urngrange + 1; 10136: __tmp = (__uerngrange * operator() 10136: (__urng, param_type(0, __urange / __uerngrange))); 10136: __ret = __tmp + (__uctype(__urng()) - __urngmin); 10136: } 10136: while (__ret > __urange || __ret < __tmp); 10136: } 10136: else 10136: __ret = __uctype(__urng()) - __urngmin; 10136: 10136: return __ret + __param.a(); 10136: } 10136: 10136: 10136: template 10136: template 10136: void 10136: uniform_int_distribution<_IntType>:: 10136: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 10136: _UniformRandomNumberGenerator& __urng, 10136: const param_type& __param) 10136: { 10136: 10136: typedef typename _UniformRandomNumberGenerator::result_type 10136: _Gresult_type; 10136: typedef typename std::make_unsigned::type __utype; 10136: typedef typename std::common_type<_Gresult_type, __utype>::type 10136: __uctype; 10136: 10136: const __uctype __urngmin = __urng.min(); 10136: const __uctype __urngmax = __urng.max(); 10136: const __uctype __urngrange = __urngmax - __urngmin; 10136: const __uctype __urange 10136: = __uctype(__param.b()) - __uctype(__param.a()); 10136: 10136: __uctype __ret; 10136: 10136: if (__urngrange > __urange) 10136: { 10136: if (__detail::_Power_of_2(__urngrange + 1) 10136: && __detail::_Power_of_2(__urange + 1)) 10136: { 10136: while (__f != __t) 10136: { 10136: __ret = __uctype(__urng()) - __urngmin; 10136: *__f++ = (__ret & __urange) + __param.a(); 10136: } 10136: } 10136: else 10136: { 10136: 10136: const __uctype __uerange = __urange + 1; 10136: const __uctype __scaling = __urngrange / __uerange; 10136: const __uctype __past = __uerange * __scaling; 10136: while (__f != __t) 10136: { 10136: do 10136: __ret = __uctype(__urng()) - __urngmin; 10136: while (__ret >= __past); 10136: *__f++ = __ret / __scaling + __param.a(); 10136: } 10136: } 10136: } 10136: else if (__urngrange < __urange) 10136: { 10136: # 348 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 10136: __uctype __tmp; 10136: while (__f != __t) 10136: { 10136: do 10136: { 10136: const __uctype __uerngrange = __urngrange + 1; 10136: __tmp = (__uerngrange * operator() 10136: (__urng, param_type(0, __urange / __uerngrange))); 10136: __ret = __tmp + (__uctype(__urng()) - __urngmin); 10136: } 10136: while (__ret > __urange || __ret < __tmp); 10136: *__f++ = __ret; 10136: } 10136: } 10136: else 10136: while (__f != __t) 10136: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); 10136: } 10136: 10136: 10136: 10136: 10136: } 10136: # 67 "/usr/include/c++/8/bits/stl_algo.h" 2 3 10136: 10136: 10136: 10136: 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: template 10136: void 10136: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, 10136: _Iterator __c, _Compare __comp) 10136: { 10136: if (__comp(__a, __b)) 10136: { 10136: if (__comp(__b, __c)) 10136: std::iter_swap(__result, __b); 10136: else if (__comp(__a, __c)) 10136: std::iter_swap(__result, __c); 10136: else 10136: std::iter_swap(__result, __a); 10136: } 10136: else if (__comp(__a, __c)) 10136: std::iter_swap(__result, __a); 10136: else if (__comp(__b, __c)) 10136: std::iter_swap(__result, __c); 10136: else 10136: std::iter_swap(__result, __b); 10136: } 10136: 10136: 10136: template 10136: inline _InputIterator 10136: __find_if(_InputIterator __first, _InputIterator __last, 10136: _Predicate __pred, input_iterator_tag) 10136: { 10136: while (__first != __last && !__pred(__first)) 10136: ++__first; 10136: return __first; 10136: } 10136: 10136: 10136: template 10136: _RandomAccessIterator 10136: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Predicate __pred, random_access_iterator_tag) 10136: { 10136: typename iterator_traits<_RandomAccessIterator>::difference_type 10136: __trip_count = (__last - __first) >> 2; 10136: 10136: for (; __trip_count > 0; --__trip_count) 10136: { 10136: if (__pred(__first)) 10136: return __first; 10136: ++__first; 10136: 10136: if (__pred(__first)) 10136: return __first; 10136: ++__first; 10136: 10136: if (__pred(__first)) 10136: return __first; 10136: ++__first; 10136: 10136: if (__pred(__first)) 10136: return __first; 10136: ++__first; 10136: } 10136: 10136: switch (__last - __first) 10136: { 10136: case 3: 10136: if (__pred(__first)) 10136: return __first; 10136: ++__first; 10136: case 2: 10136: if (__pred(__first)) 10136: return __first; 10136: ++__first; 10136: case 1: 10136: if (__pred(__first)) 10136: return __first; 10136: ++__first; 10136: case 0: 10136: default: 10136: return __last; 10136: } 10136: } 10136: 10136: template 10136: inline _Iterator 10136: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) 10136: { 10136: return __find_if(__first, __last, __pred, 10136: std::__iterator_category(__first)); 10136: } 10136: 10136: 10136: template 10136: inline _InputIterator 10136: __find_if_not(_InputIterator __first, _InputIterator __last, 10136: _Predicate __pred) 10136: { 10136: return std::__find_if(__first, __last, 10136: __gnu_cxx::__ops::__negate(__pred), 10136: std::__iterator_category(__first)); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: _InputIterator 10136: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) 10136: { 10136: for (; __len; --__len, (void) ++__first) 10136: if (!__pred(__first)) 10136: break; 10136: return __first; 10136: } 10136: # 202 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _ForwardIterator1 10136: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 10136: _BinaryPredicate __predicate) 10136: { 10136: 10136: if (__first1 == __last1 || __first2 == __last2) 10136: return __first1; 10136: 10136: 10136: _ForwardIterator2 __p1(__first2); 10136: if (++__p1 == __last2) 10136: return std::__find_if(__first1, __last1, 10136: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 10136: 10136: 10136: _ForwardIterator2 __p; 10136: _ForwardIterator1 __current = __first1; 10136: 10136: for (;;) 10136: { 10136: __first1 = 10136: std::__find_if(__first1, __last1, 10136: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 10136: 10136: if (__first1 == __last1) 10136: return __last1; 10136: 10136: __p = __p1; 10136: __current = __first1; 10136: if (++__current == __last1) 10136: return __last1; 10136: 10136: while (__predicate(__current, __p)) 10136: { 10136: if (++__p == __last2) 10136: return __first1; 10136: if (++__current == __last1) 10136: return __last1; 10136: } 10136: ++__first1; 10136: } 10136: return __first1; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _ForwardIterator 10136: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, 10136: _Integer __count, _UnaryPredicate __unary_pred, 10136: std::forward_iterator_tag) 10136: { 10136: __first = std::__find_if(__first, __last, __unary_pred); 10136: while (__first != __last) 10136: { 10136: typename iterator_traits<_ForwardIterator>::difference_type 10136: __n = __count; 10136: _ForwardIterator __i = __first; 10136: ++__i; 10136: while (__i != __last && __n != 1 && __unary_pred(__i)) 10136: { 10136: ++__i; 10136: --__n; 10136: } 10136: if (__n == 1) 10136: return __first; 10136: if (__i == __last) 10136: return __last; 10136: __first = std::__find_if(++__i, __last, __unary_pred); 10136: } 10136: return __last; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _RandomAccessIter 10136: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, 10136: _Integer __count, _UnaryPredicate __unary_pred, 10136: std::random_access_iterator_tag) 10136: { 10136: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type 10136: _DistanceType; 10136: 10136: _DistanceType __tailSize = __last - __first; 10136: _DistanceType __remainder = __count; 10136: 10136: while (__remainder <= __tailSize) 10136: { 10136: __first += __remainder; 10136: __tailSize -= __remainder; 10136: 10136: 10136: _RandomAccessIter __backTrack = __first; 10136: while (__unary_pred(--__backTrack)) 10136: { 10136: if (--__remainder == 0) 10136: return (__first - __count); 10136: } 10136: __remainder = __count + 1 - (__first - __backTrack); 10136: } 10136: return __last; 10136: } 10136: 10136: template 10136: _ForwardIterator 10136: __search_n(_ForwardIterator __first, _ForwardIterator __last, 10136: _Integer __count, 10136: _UnaryPredicate __unary_pred) 10136: { 10136: if (__count <= 0) 10136: return __first; 10136: 10136: if (__count == 1) 10136: return std::__find_if(__first, __last, __unary_pred); 10136: 10136: return std::__search_n_aux(__first, __last, __count, __unary_pred, 10136: std::__iterator_category(__first)); 10136: } 10136: 10136: 10136: template 10136: _ForwardIterator1 10136: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 10136: forward_iterator_tag, forward_iterator_tag, 10136: _BinaryPredicate __comp) 10136: { 10136: if (__first2 == __last2) 10136: return __last1; 10136: 10136: _ForwardIterator1 __result = __last1; 10136: while (1) 10136: { 10136: _ForwardIterator1 __new_result 10136: = std::__search(__first1, __last1, __first2, __last2, __comp); 10136: if (__new_result == __last1) 10136: return __result; 10136: else 10136: { 10136: __result = __new_result; 10136: __first1 = __new_result; 10136: ++__first1; 10136: } 10136: } 10136: } 10136: 10136: 10136: template 10136: _BidirectionalIterator1 10136: __find_end(_BidirectionalIterator1 __first1, 10136: _BidirectionalIterator1 __last1, 10136: _BidirectionalIterator2 __first2, 10136: _BidirectionalIterator2 __last2, 10136: bidirectional_iterator_tag, bidirectional_iterator_tag, 10136: _BinaryPredicate __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; 10136: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; 10136: 10136: _RevIterator1 __rlast1(__first1); 10136: _RevIterator2 __rlast2(__first2); 10136: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, 10136: _RevIterator2(__last2), __rlast2, 10136: __comp); 10136: 10136: if (__rresult == __rlast1) 10136: return __last1; 10136: else 10136: { 10136: _BidirectionalIterator1 __result = __rresult.base(); 10136: std::advance(__result, -std::distance(__first2, __last2)); 10136: return __result; 10136: } 10136: } 10136: # 423 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator1 10136: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__find_end(__first1, __last1, __first2, __last2, 10136: std::__iterator_category(__first1), 10136: std::__iterator_category(__first2), 10136: __gnu_cxx::__ops::__iter_equal_to_iter()); 10136: } 10136: # 471 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator1 10136: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 10136: _BinaryPredicate __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__find_end(__first1, __last1, __first2, __last2, 10136: std::__iterator_category(__first1), 10136: std::__iterator_category(__first2), 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: # 506 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 10136: { return __last == std::find_if_not(__first, __last, __pred); } 10136: # 523 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 10136: { return __last == std::find_if(__first, __last, __pred); } 10136: # 541 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 10136: { return !std::none_of(__first, __last, __pred); } 10136: # 556 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _InputIterator 10136: find_if_not(_InputIterator __first, _InputIterator __last, 10136: _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: return std::__find_if_not(__first, __last, 10136: __gnu_cxx::__ops::__pred_iter(__pred)); 10136: } 10136: # 580 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: is_partitioned(_InputIterator __first, _InputIterator __last, 10136: _Predicate __pred) 10136: { 10136: __first = std::find_if_not(__first, __last, __pred); 10136: if (__first == __last) 10136: return true; 10136: ++__first; 10136: return std::none_of(__first, __last, __pred); 10136: } 10136: # 601 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _ForwardIterator 10136: partition_point(_ForwardIterator __first, _ForwardIterator __last, 10136: _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: typedef typename iterator_traits<_ForwardIterator>::difference_type 10136: _DistanceType; 10136: 10136: _DistanceType __len = std::distance(__first, __last); 10136: _DistanceType __half; 10136: _ForwardIterator __middle; 10136: 10136: while (__len > 0) 10136: { 10136: __half = __len >> 1; 10136: __middle = __first; 10136: std::advance(__middle, __half); 10136: if (__pred(*__middle)) 10136: { 10136: __first = __middle; 10136: ++__first; 10136: __len = __len - __half - 1; 10136: } 10136: else 10136: __len = __half; 10136: } 10136: return __first; 10136: } 10136: 10136: 10136: template 10136: _OutputIterator 10136: __remove_copy_if(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, _Predicate __pred) 10136: { 10136: for (; __first != __last; ++__first) 10136: if (!__pred(__first)) 10136: { 10136: *__result = *__first; 10136: ++__result; 10136: } 10136: return __result; 10136: } 10136: # 668 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: remove_copy(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, const _Tp& __value) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__remove_copy_if(__first, __last, __result, 10136: __gnu_cxx::__ops::__iter_equals_val(__value)); 10136: } 10136: # 700 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: remove_copy_if(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__remove_copy_if(__first, __last, __result, 10136: __gnu_cxx::__ops::__pred_iter(__pred)); 10136: } 10136: # 734 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _OutputIterator 10136: copy_if(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first != __last; ++__first) 10136: if (__pred(*__first)) 10136: { 10136: *__result = *__first; 10136: ++__result; 10136: } 10136: return __result; 10136: } 10136: 10136: template 10136: _OutputIterator 10136: __copy_n(_InputIterator __first, _Size __n, 10136: _OutputIterator __result, input_iterator_tag) 10136: { 10136: if (__n > 0) 10136: { 10136: while (true) 10136: { 10136: *__result = *__first; 10136: ++__result; 10136: if (--__n > 0) 10136: ++__first; 10136: else 10136: break; 10136: } 10136: } 10136: return __result; 10136: } 10136: 10136: template 10136: inline _OutputIterator 10136: __copy_n(_RandomAccessIterator __first, _Size __n, 10136: _OutputIterator __result, random_access_iterator_tag) 10136: { return std::copy(__first, __first + __n, __result); } 10136: # 797 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: return std::__copy_n(__first, __n, __result, 10136: std::__iterator_category(__first)); 10136: } 10136: # 825 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: pair<_OutputIterator1, _OutputIterator2> 10136: partition_copy(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator1 __out_true, _OutputIterator2 __out_false, 10136: _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first != __last; ++__first) 10136: if (__pred(*__first)) 10136: { 10136: *__out_true = *__first; 10136: ++__out_true; 10136: } 10136: else 10136: { 10136: *__out_false = *__first; 10136: ++__out_false; 10136: } 10136: 10136: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); 10136: } 10136: 10136: 10136: template 10136: _ForwardIterator 10136: __remove_if(_ForwardIterator __first, _ForwardIterator __last, 10136: _Predicate __pred) 10136: { 10136: __first = std::__find_if(__first, __last, __pred); 10136: if (__first == __last) 10136: return __first; 10136: _ForwardIterator __result = __first; 10136: ++__first; 10136: for (; __first != __last; ++__first) 10136: if (!__pred(__first)) 10136: { 10136: *__result = std::move(*__first); 10136: ++__result; 10136: } 10136: return __result; 10136: } 10136: # 894 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: remove(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __value) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__remove_if(__first, __last, 10136: __gnu_cxx::__ops::__iter_equals_val(__value)); 10136: } 10136: # 927 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: remove_if(_ForwardIterator __first, _ForwardIterator __last, 10136: _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__remove_if(__first, __last, 10136: __gnu_cxx::__ops::__pred_iter(__pred)); 10136: } 10136: 10136: template 10136: _ForwardIterator 10136: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: if (__first == __last) 10136: return __last; 10136: _ForwardIterator __next = __first; 10136: while (++__next != __last) 10136: { 10136: if (__binary_pred(__first, __next)) 10136: return __first; 10136: __first = __next; 10136: } 10136: return __last; 10136: } 10136: 10136: template 10136: _ForwardIterator 10136: __unique(_ForwardIterator __first, _ForwardIterator __last, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: 10136: __first = std::__adjacent_find(__first, __last, __binary_pred); 10136: if (__first == __last) 10136: return __last; 10136: 10136: 10136: _ForwardIterator __dest = __first; 10136: ++__first; 10136: while (++__first != __last) 10136: if (!__binary_pred(__dest, __first)) 10136: *++__dest = std::move(*__first); 10136: return ++__dest; 10136: } 10136: # 993 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: unique(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__unique(__first, __last, 10136: __gnu_cxx::__ops::__iter_equal_to_iter()); 10136: } 10136: # 1023 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: unique(_ForwardIterator __first, _ForwardIterator __last, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__unique(__first, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _OutputIterator 10136: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, 10136: _OutputIterator __result, _BinaryPredicate __binary_pred, 10136: forward_iterator_tag, output_iterator_tag) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: _ForwardIterator __next = __first; 10136: *__result = *__first; 10136: while (++__next != __last) 10136: if (!__binary_pred(__first, __next)) 10136: { 10136: __first = __next; 10136: *++__result = *__first; 10136: } 10136: return ++__result; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _OutputIterator 10136: __unique_copy(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, _BinaryPredicate __binary_pred, 10136: input_iterator_tag, output_iterator_tag) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: typename iterator_traits<_InputIterator>::value_type __value = *__first; 10136: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) 10136: __rebound_pred 10136: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); 10136: *__result = __value; 10136: while (++__first != __last) 10136: if (!__rebound_pred(__first, __value)) 10136: { 10136: __value = *__first; 10136: *++__result = __value; 10136: } 10136: return ++__result; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _ForwardIterator 10136: __unique_copy(_InputIterator __first, _InputIterator __last, 10136: _ForwardIterator __result, _BinaryPredicate __binary_pred, 10136: input_iterator_tag, forward_iterator_tag) 10136: { 10136: 10136: 10136: 10136: 10136: *__result = *__first; 10136: while (++__first != __last) 10136: if (!__binary_pred(__result, __first)) 10136: *++__result = *__first; 10136: return ++__result; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void 10136: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, 10136: bidirectional_iterator_tag) 10136: { 10136: while (true) 10136: if (__first == __last || __first == --__last) 10136: return; 10136: else 10136: { 10136: std::iter_swap(__first, __last); 10136: ++__first; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void 10136: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: random_access_iterator_tag) 10136: { 10136: if (__first == __last) 10136: return; 10136: --__last; 10136: while (__first < __last) 10136: { 10136: std::iter_swap(__first, __last); 10136: ++__first; 10136: --__last; 10136: } 10136: } 10136: # 1178 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) 10136: { 10136: 10136: 10136: 10136: ; 10136: std::__reverse(__first, __last, std::__iterator_category(__first)); 10136: } 10136: # 1205 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _OutputIterator 10136: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, 10136: _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: while (__first != __last) 10136: { 10136: --__last; 10136: *__result = *__last; 10136: ++__result; 10136: } 10136: return __result; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: _EuclideanRingElement 10136: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) 10136: { 10136: while (__n != 0) 10136: { 10136: _EuclideanRingElement __t = __m % __n; 10136: __m = __n; 10136: __n = __t; 10136: } 10136: return __m; 10136: } 10136: 10136: inline namespace _V2 10136: { 10136: 10136: 10136: template 10136: _ForwardIterator 10136: __rotate(_ForwardIterator __first, 10136: _ForwardIterator __middle, 10136: _ForwardIterator __last, 10136: forward_iterator_tag) 10136: { 10136: if (__first == __middle) 10136: return __last; 10136: else if (__last == __middle) 10136: return __first; 10136: 10136: _ForwardIterator __first2 = __middle; 10136: do 10136: { 10136: std::iter_swap(__first, __first2); 10136: ++__first; 10136: ++__first2; 10136: if (__first == __middle) 10136: __middle = __first2; 10136: } 10136: while (__first2 != __last); 10136: 10136: _ForwardIterator __ret = __first; 10136: 10136: __first2 = __middle; 10136: 10136: while (__first2 != __last) 10136: { 10136: std::iter_swap(__first, __first2); 10136: ++__first; 10136: ++__first2; 10136: if (__first == __middle) 10136: __middle = __first2; 10136: else if (__first2 == __last) 10136: __first2 = __middle; 10136: } 10136: return __ret; 10136: } 10136: 10136: 10136: template 10136: _BidirectionalIterator 10136: __rotate(_BidirectionalIterator __first, 10136: _BidirectionalIterator __middle, 10136: _BidirectionalIterator __last, 10136: bidirectional_iterator_tag) 10136: { 10136: 10136: 10136: 10136: 10136: if (__first == __middle) 10136: return __last; 10136: else if (__last == __middle) 10136: return __first; 10136: 10136: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 10136: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 10136: 10136: while (__first != __middle && __middle != __last) 10136: { 10136: std::iter_swap(__first, --__last); 10136: ++__first; 10136: } 10136: 10136: if (__first == __middle) 10136: { 10136: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 10136: return __last; 10136: } 10136: else 10136: { 10136: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 10136: return __first; 10136: } 10136: } 10136: 10136: 10136: template 10136: _RandomAccessIterator 10136: __rotate(_RandomAccessIterator __first, 10136: _RandomAccessIterator __middle, 10136: _RandomAccessIterator __last, 10136: random_access_iterator_tag) 10136: { 10136: 10136: 10136: 10136: 10136: if (__first == __middle) 10136: return __last; 10136: else if (__last == __middle) 10136: return __first; 10136: 10136: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 10136: _Distance; 10136: typedef typename iterator_traits<_RandomAccessIterator>::value_type 10136: _ValueType; 10136: 10136: _Distance __n = __last - __first; 10136: _Distance __k = __middle - __first; 10136: 10136: if (__k == __n - __k) 10136: { 10136: std::swap_ranges(__first, __middle, __middle); 10136: return __middle; 10136: } 10136: 10136: _RandomAccessIterator __p = __first; 10136: _RandomAccessIterator __ret = __first + (__last - __middle); 10136: 10136: for (;;) 10136: { 10136: if (__k < __n - __k) 10136: { 10136: if (__is_pod(_ValueType) && __k == 1) 10136: { 10136: _ValueType __t = std::move(*__p); 10136: std::move(__p + 1, __p + __n, __p); 10136: *(__p + __n - 1) = std::move(__t); 10136: return __ret; 10136: } 10136: _RandomAccessIterator __q = __p + __k; 10136: for (_Distance __i = 0; __i < __n - __k; ++ __i) 10136: { 10136: std::iter_swap(__p, __q); 10136: ++__p; 10136: ++__q; 10136: } 10136: __n %= __k; 10136: if (__n == 0) 10136: return __ret; 10136: std::swap(__n, __k); 10136: __k = __n - __k; 10136: } 10136: else 10136: { 10136: __k = __n - __k; 10136: if (__is_pod(_ValueType) && __k == 1) 10136: { 10136: _ValueType __t = std::move(*(__p + __n - 1)); 10136: std::move_backward(__p, __p + __n - 1, __p + __n); 10136: *__p = std::move(__t); 10136: return __ret; 10136: } 10136: _RandomAccessIterator __q = __p + __n; 10136: __p = __q - __k; 10136: for (_Distance __i = 0; __i < __n - __k; ++ __i) 10136: { 10136: --__p; 10136: --__q; 10136: std::iter_swap(__p, __q); 10136: } 10136: __n %= __k; 10136: if (__n == 0) 10136: return __ret; 10136: std::swap(__n, __k); 10136: } 10136: } 10136: } 10136: # 1432 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: rotate(_ForwardIterator __first, _ForwardIterator __middle, 10136: _ForwardIterator __last) 10136: { 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__rotate(__first, __middle, __last, 10136: std::__iterator_category(__first)); 10136: } 10136: 10136: } 10136: # 1469 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, 10136: _ForwardIterator __last, _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::copy(__first, __middle, 10136: std::copy(__middle, __last, __result)); 10136: } 10136: 10136: 10136: template 10136: _ForwardIterator 10136: __partition(_ForwardIterator __first, _ForwardIterator __last, 10136: _Predicate __pred, forward_iterator_tag) 10136: { 10136: if (__first == __last) 10136: return __first; 10136: 10136: while (__pred(*__first)) 10136: if (++__first == __last) 10136: return __first; 10136: 10136: _ForwardIterator __next = __first; 10136: 10136: while (++__next != __last) 10136: if (__pred(*__next)) 10136: { 10136: std::iter_swap(__first, __next); 10136: ++__first; 10136: } 10136: 10136: return __first; 10136: } 10136: 10136: 10136: template 10136: _BidirectionalIterator 10136: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, 10136: _Predicate __pred, bidirectional_iterator_tag) 10136: { 10136: while (true) 10136: { 10136: while (true) 10136: if (__first == __last) 10136: return __first; 10136: else if (__pred(*__first)) 10136: ++__first; 10136: else 10136: break; 10136: --__last; 10136: while (true) 10136: if (__first == __last) 10136: return __first; 10136: else if (!bool(__pred(*__last))) 10136: --__last; 10136: else 10136: break; 10136: std::iter_swap(__first, __last); 10136: ++__first; 10136: } 10136: } 10136: # 1546 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _ForwardIterator 10136: __stable_partition_adaptive(_ForwardIterator __first, 10136: _ForwardIterator __last, 10136: _Predicate __pred, _Distance __len, 10136: _Pointer __buffer, 10136: _Distance __buffer_size) 10136: { 10136: if (__len == 1) 10136: return __first; 10136: 10136: if (__len <= __buffer_size) 10136: { 10136: _ForwardIterator __result1 = __first; 10136: _Pointer __result2 = __buffer; 10136: 10136: 10136: 10136: 10136: *__result2 = std::move(*__first); 10136: ++__result2; 10136: ++__first; 10136: for (; __first != __last; ++__first) 10136: if (__pred(__first)) 10136: { 10136: *__result1 = std::move(*__first); 10136: ++__result1; 10136: } 10136: else 10136: { 10136: *__result2 = std::move(*__first); 10136: ++__result2; 10136: } 10136: 10136: std::move(__buffer, __result2, __result1); 10136: return __result1; 10136: } 10136: 10136: _ForwardIterator __middle = __first; 10136: std::advance(__middle, __len / 2); 10136: _ForwardIterator __left_split = 10136: std::__stable_partition_adaptive(__first, __middle, __pred, 10136: __len / 2, __buffer, 10136: __buffer_size); 10136: 10136: 10136: 10136: _Distance __right_len = __len - __len / 2; 10136: _ForwardIterator __right_split = 10136: std::__find_if_not_n(__middle, __right_len, __pred); 10136: 10136: if (__right_len) 10136: __right_split = 10136: std::__stable_partition_adaptive(__right_split, __last, __pred, 10136: __right_len, 10136: __buffer, __buffer_size); 10136: 10136: std::rotate(__left_split, __middle, __right_split); 10136: std::advance(__left_split, std::distance(__middle, __right_split)); 10136: return __left_split; 10136: } 10136: 10136: template 10136: _ForwardIterator 10136: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, 10136: _Predicate __pred) 10136: { 10136: __first = std::__find_if_not(__first, __last, __pred); 10136: 10136: if (__first == __last) 10136: return __first; 10136: 10136: typedef typename iterator_traits<_ForwardIterator>::value_type 10136: _ValueType; 10136: typedef typename iterator_traits<_ForwardIterator>::difference_type 10136: _DistanceType; 10136: 10136: _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first, __last); 10136: return 10136: std::__stable_partition_adaptive(__first, __last, __pred, 10136: _DistanceType(__buf.requested_size()), 10136: __buf.begin(), 10136: _DistanceType(__buf.size())); 10136: } 10136: # 1649 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: stable_partition(_ForwardIterator __first, _ForwardIterator __last, 10136: _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__stable_partition(__first, __last, 10136: __gnu_cxx::__ops::__pred_iter(__pred)); 10136: } 10136: 10136: 10136: template 10136: void 10136: __heap_select(_RandomAccessIterator __first, 10136: _RandomAccessIterator __middle, 10136: _RandomAccessIterator __last, _Compare __comp) 10136: { 10136: std::__make_heap(__first, __middle, __comp); 10136: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) 10136: if (__comp(__i, __first)) 10136: std::__pop_heap(__first, __middle, __i, __comp); 10136: } 10136: 10136: 10136: 10136: template 10136: _RandomAccessIterator 10136: __partial_sort_copy(_InputIterator __first, _InputIterator __last, 10136: _RandomAccessIterator __result_first, 10136: _RandomAccessIterator __result_last, 10136: _Compare __comp) 10136: { 10136: typedef typename iterator_traits<_InputIterator>::value_type 10136: _InputValueType; 10136: typedef iterator_traits<_RandomAccessIterator> _RItTraits; 10136: typedef typename _RItTraits::difference_type _DistanceType; 10136: 10136: if (__result_first == __result_last) 10136: return __result_last; 10136: _RandomAccessIterator __result_real_last = __result_first; 10136: while (__first != __last && __result_real_last != __result_last) 10136: { 10136: *__result_real_last = *__first; 10136: ++__result_real_last; 10136: ++__first; 10136: } 10136: 10136: std::__make_heap(__result_first, __result_real_last, __comp); 10136: while (__first != __last) 10136: { 10136: if (__comp(__first, __result_first)) 10136: std::__adjust_heap(__result_first, _DistanceType(0), 10136: _DistanceType(__result_real_last 10136: - __result_first), 10136: _InputValueType(*__first), __comp); 10136: ++__first; 10136: } 10136: std::__sort_heap(__result_first, __result_real_last, __comp); 10136: return __result_real_last; 10136: } 10136: # 1735 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _RandomAccessIterator 10136: partial_sort_copy(_InputIterator __first, _InputIterator __last, 10136: _RandomAccessIterator __result_first, 10136: _RandomAccessIterator __result_last) 10136: { 10136: # 1749 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__partial_sort_copy(__first, __last, 10136: __result_first, __result_last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 1784 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _RandomAccessIterator 10136: partial_sort_copy(_InputIterator __first, _InputIterator __last, 10136: _RandomAccessIterator __result_first, 10136: _RandomAccessIterator __result_last, 10136: _Compare __comp) 10136: { 10136: # 1800 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__partial_sort_copy(__first, __last, 10136: __result_first, __result_last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: 10136: template 10136: void 10136: __unguarded_linear_insert(_RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: typename iterator_traits<_RandomAccessIterator>::value_type 10136: __val = std::move(*__last); 10136: _RandomAccessIterator __next = __last; 10136: --__next; 10136: while (__comp(__val, __next)) 10136: { 10136: *__last = std::move(*__next); 10136: __last = __next; 10136: --__next; 10136: } 10136: *__last = std::move(__val); 10136: } 10136: 10136: 10136: template 10136: void 10136: __insertion_sort(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, _Compare __comp) 10136: { 10136: if (__first == __last) return; 10136: 10136: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 10136: { 10136: if (__comp(__i, __first)) 10136: { 10136: typename iterator_traits<_RandomAccessIterator>::value_type 10136: __val = std::move(*__i); 10136: std::move_backward(__first, __i, __i + 1); 10136: *__first = std::move(__val); 10136: } 10136: else 10136: std::__unguarded_linear_insert(__i, 10136: __gnu_cxx::__ops::__val_comp_iter(__comp)); 10136: } 10136: } 10136: 10136: 10136: template 10136: inline void 10136: __unguarded_insertion_sort(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, _Compare __comp) 10136: { 10136: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) 10136: std::__unguarded_linear_insert(__i, 10136: __gnu_cxx::__ops::__val_comp_iter(__comp)); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: enum { _S_threshold = 16 }; 10136: 10136: 10136: template 10136: void 10136: __final_insertion_sort(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, _Compare __comp) 10136: { 10136: if (__last - __first > int(_S_threshold)) 10136: { 10136: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); 10136: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, 10136: __comp); 10136: } 10136: else 10136: std::__insertion_sort(__first, __last, __comp); 10136: } 10136: 10136: 10136: template 10136: _RandomAccessIterator 10136: __unguarded_partition(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, 10136: _RandomAccessIterator __pivot, _Compare __comp) 10136: { 10136: while (true) 10136: { 10136: while (__comp(__first, __pivot)) 10136: ++__first; 10136: --__last; 10136: while (__comp(__pivot, __last)) 10136: --__last; 10136: if (!(__first < __last)) 10136: return __first; 10136: std::iter_swap(__first, __last); 10136: ++__first; 10136: } 10136: } 10136: 10136: 10136: template 10136: inline _RandomAccessIterator 10136: __unguarded_partition_pivot(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, _Compare __comp) 10136: { 10136: _RandomAccessIterator __mid = __first + (__last - __first) / 2; 10136: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, 10136: __comp); 10136: return std::__unguarded_partition(__first + 1, __last, __first, __comp); 10136: } 10136: 10136: template 10136: inline void 10136: __partial_sort(_RandomAccessIterator __first, 10136: _RandomAccessIterator __middle, 10136: _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: std::__heap_select(__first, __middle, __last, __comp); 10136: std::__sort_heap(__first, __middle, __comp); 10136: } 10136: 10136: 10136: template 10136: void 10136: __introsort_loop(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, 10136: _Size __depth_limit, _Compare __comp) 10136: { 10136: while (__last - __first > int(_S_threshold)) 10136: { 10136: if (__depth_limit == 0) 10136: { 10136: std::__partial_sort(__first, __last, __last, __comp); 10136: return; 10136: } 10136: --__depth_limit; 10136: _RandomAccessIterator __cut = 10136: std::__unguarded_partition_pivot(__first, __last, __comp); 10136: std::__introsort_loop(__cut, __last, __depth_limit, __comp); 10136: __last = __cut; 10136: } 10136: } 10136: 10136: 10136: 10136: template 10136: inline void 10136: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: if (__first != __last) 10136: { 10136: std::__introsort_loop(__first, __last, 10136: std::__lg(__last - __first) * 2, 10136: __comp); 10136: std::__final_insertion_sort(__first, __last, __comp); 10136: } 10136: } 10136: 10136: template 10136: void 10136: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, 10136: _RandomAccessIterator __last, _Size __depth_limit, 10136: _Compare __comp) 10136: { 10136: while (__last - __first > 3) 10136: { 10136: if (__depth_limit == 0) 10136: { 10136: std::__heap_select(__first, __nth + 1, __last, __comp); 10136: 10136: std::iter_swap(__first, __nth); 10136: return; 10136: } 10136: --__depth_limit; 10136: _RandomAccessIterator __cut = 10136: std::__unguarded_partition_pivot(__first, __last, __comp); 10136: if (__cut <= __nth) 10136: __first = __cut; 10136: else 10136: __last = __cut; 10136: } 10136: std::__insertion_sort(__first, __last, __comp); 10136: } 10136: # 2021 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__lower_bound(__first, __last, __val, 10136: __gnu_cxx::__ops::__iter_comp_val(__comp)); 10136: } 10136: 10136: template 10136: _ForwardIterator 10136: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val, _Compare __comp) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::difference_type 10136: _DistanceType; 10136: 10136: _DistanceType __len = std::distance(__first, __last); 10136: 10136: while (__len > 0) 10136: { 10136: _DistanceType __half = __len >> 1; 10136: _ForwardIterator __middle = __first; 10136: std::advance(__middle, __half); 10136: if (__comp(__val, __middle)) 10136: __len = __half; 10136: else 10136: { 10136: __first = __middle; 10136: ++__first; 10136: __len = __len - __half - 1; 10136: } 10136: } 10136: return __first; 10136: } 10136: # 2075 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__upper_bound(__first, __last, __val, 10136: __gnu_cxx::__ops::__val_less_iter()); 10136: } 10136: # 2105 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__upper_bound(__first, __last, __val, 10136: __gnu_cxx::__ops::__val_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: pair<_ForwardIterator, _ForwardIterator> 10136: __equal_range(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val, 10136: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) 10136: { 10136: typedef typename iterator_traits<_ForwardIterator>::difference_type 10136: _DistanceType; 10136: 10136: _DistanceType __len = std::distance(__first, __last); 10136: 10136: while (__len > 0) 10136: { 10136: _DistanceType __half = __len >> 1; 10136: _ForwardIterator __middle = __first; 10136: std::advance(__middle, __half); 10136: if (__comp_it_val(__middle, __val)) 10136: { 10136: __first = __middle; 10136: ++__first; 10136: __len = __len - __half - 1; 10136: } 10136: else if (__comp_val_it(__val, __middle)) 10136: __len = __half; 10136: else 10136: { 10136: _ForwardIterator __left 10136: = std::__lower_bound(__first, __middle, __val, __comp_it_val); 10136: std::advance(__first, __len); 10136: _ForwardIterator __right 10136: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); 10136: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); 10136: } 10136: } 10136: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); 10136: } 10136: # 2176 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline pair<_ForwardIterator, _ForwardIterator> 10136: equal_range(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__equal_range(__first, __last, __val, 10136: __gnu_cxx::__ops::__iter_less_val(), 10136: __gnu_cxx::__ops::__val_less_iter()); 10136: } 10136: # 2212 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline pair<_ForwardIterator, _ForwardIterator> 10136: equal_range(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: ; 10136: 10136: return std::__equal_range(__first, __last, __val, 10136: __gnu_cxx::__ops::__iter_comp_val(__comp), 10136: __gnu_cxx::__ops::__val_comp_iter(__comp)); 10136: } 10136: # 2245 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: bool 10136: binary_search(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: _ForwardIterator __i 10136: = std::__lower_bound(__first, __last, __val, 10136: __gnu_cxx::__ops::__iter_less_val()); 10136: return __i != __last && !(__val < *__i); 10136: } 10136: # 2278 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: bool 10136: binary_search(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __val, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: ; 10136: 10136: _ForwardIterator __i 10136: = std::__lower_bound(__first, __last, __val, 10136: __gnu_cxx::__ops::__iter_comp_val(__comp)); 10136: return __i != __last && !bool(__comp(__val, *__i)); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void 10136: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2) 10136: { 10136: if (__comp(__first2, __first1)) 10136: { 10136: *__result = std::move(*__first2); 10136: ++__first2; 10136: } 10136: else 10136: { 10136: *__result = std::move(*__first1); 10136: ++__first1; 10136: } 10136: ++__result; 10136: } 10136: if (__first1 != __last1) 10136: std::move(__first1, __last1, __result); 10136: } 10136: 10136: 10136: template 10136: void 10136: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, 10136: _BidirectionalIterator1 __last1, 10136: _BidirectionalIterator2 __first2, 10136: _BidirectionalIterator2 __last2, 10136: _BidirectionalIterator3 __result, 10136: _Compare __comp) 10136: { 10136: if (__first1 == __last1) 10136: { 10136: std::move_backward(__first2, __last2, __result); 10136: return; 10136: } 10136: else if (__first2 == __last2) 10136: return; 10136: 10136: --__last1; 10136: --__last2; 10136: while (true) 10136: { 10136: if (__comp(__last2, __last1)) 10136: { 10136: *--__result = std::move(*__last1); 10136: if (__first1 == __last1) 10136: { 10136: std::move_backward(__first2, ++__last2, __result); 10136: return; 10136: } 10136: --__last1; 10136: } 10136: else 10136: { 10136: *--__result = std::move(*__last2); 10136: if (__first2 == __last2) 10136: return; 10136: --__last2; 10136: } 10136: } 10136: } 10136: 10136: 10136: template 10136: _BidirectionalIterator1 10136: __rotate_adaptive(_BidirectionalIterator1 __first, 10136: _BidirectionalIterator1 __middle, 10136: _BidirectionalIterator1 __last, 10136: _Distance __len1, _Distance __len2, 10136: _BidirectionalIterator2 __buffer, 10136: _Distance __buffer_size) 10136: { 10136: _BidirectionalIterator2 __buffer_end; 10136: if (__len1 > __len2 && __len2 <= __buffer_size) 10136: { 10136: if (__len2) 10136: { 10136: __buffer_end = std::move(__middle, __last, __buffer); 10136: std::move_backward(__first, __middle, __last); 10136: return std::move(__buffer, __buffer_end, __first); 10136: } 10136: else 10136: return __first; 10136: } 10136: else if (__len1 <= __buffer_size) 10136: { 10136: if (__len1) 10136: { 10136: __buffer_end = std::move(__first, __middle, __buffer); 10136: std::move(__middle, __last, __first); 10136: return std::move_backward(__buffer, __buffer_end, __last); 10136: } 10136: else 10136: return __last; 10136: } 10136: else 10136: { 10136: std::rotate(__first, __middle, __last); 10136: std::advance(__first, std::distance(__middle, __last)); 10136: return __first; 10136: } 10136: } 10136: 10136: 10136: template 10136: void 10136: __merge_adaptive(_BidirectionalIterator __first, 10136: _BidirectionalIterator __middle, 10136: _BidirectionalIterator __last, 10136: _Distance __len1, _Distance __len2, 10136: _Pointer __buffer, _Distance __buffer_size, 10136: _Compare __comp) 10136: { 10136: if (__len1 <= __len2 && __len1 <= __buffer_size) 10136: { 10136: _Pointer __buffer_end = std::move(__first, __middle, __buffer); 10136: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, 10136: __first, __comp); 10136: } 10136: else if (__len2 <= __buffer_size) 10136: { 10136: _Pointer __buffer_end = std::move(__middle, __last, __buffer); 10136: std::__move_merge_adaptive_backward(__first, __middle, __buffer, 10136: __buffer_end, __last, __comp); 10136: } 10136: else 10136: { 10136: _BidirectionalIterator __first_cut = __first; 10136: _BidirectionalIterator __second_cut = __middle; 10136: _Distance __len11 = 0; 10136: _Distance __len22 = 0; 10136: if (__len1 > __len2) 10136: { 10136: __len11 = __len1 / 2; 10136: std::advance(__first_cut, __len11); 10136: __second_cut 10136: = std::__lower_bound(__middle, __last, *__first_cut, 10136: __gnu_cxx::__ops::__iter_comp_val(__comp)); 10136: __len22 = std::distance(__middle, __second_cut); 10136: } 10136: else 10136: { 10136: __len22 = __len2 / 2; 10136: std::advance(__second_cut, __len22); 10136: __first_cut 10136: = std::__upper_bound(__first, __middle, *__second_cut, 10136: __gnu_cxx::__ops::__val_comp_iter(__comp)); 10136: __len11 = std::distance(__first, __first_cut); 10136: } 10136: 10136: _BidirectionalIterator __new_middle 10136: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, 10136: __len1 - __len11, __len22, __buffer, 10136: __buffer_size); 10136: std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, 10136: __len22, __buffer, __buffer_size, __comp); 10136: std::__merge_adaptive(__new_middle, __second_cut, __last, 10136: __len1 - __len11, 10136: __len2 - __len22, __buffer, 10136: __buffer_size, __comp); 10136: } 10136: } 10136: 10136: 10136: template 10136: void 10136: __merge_without_buffer(_BidirectionalIterator __first, 10136: _BidirectionalIterator __middle, 10136: _BidirectionalIterator __last, 10136: _Distance __len1, _Distance __len2, 10136: _Compare __comp) 10136: { 10136: if (__len1 == 0 || __len2 == 0) 10136: return; 10136: 10136: if (__len1 + __len2 == 2) 10136: { 10136: if (__comp(__middle, __first)) 10136: std::iter_swap(__first, __middle); 10136: return; 10136: } 10136: 10136: _BidirectionalIterator __first_cut = __first; 10136: _BidirectionalIterator __second_cut = __middle; 10136: _Distance __len11 = 0; 10136: _Distance __len22 = 0; 10136: if (__len1 > __len2) 10136: { 10136: __len11 = __len1 / 2; 10136: std::advance(__first_cut, __len11); 10136: __second_cut 10136: = std::__lower_bound(__middle, __last, *__first_cut, 10136: __gnu_cxx::__ops::__iter_comp_val(__comp)); 10136: __len22 = std::distance(__middle, __second_cut); 10136: } 10136: else 10136: { 10136: __len22 = __len2 / 2; 10136: std::advance(__second_cut, __len22); 10136: __first_cut 10136: = std::__upper_bound(__first, __middle, *__second_cut, 10136: __gnu_cxx::__ops::__val_comp_iter(__comp)); 10136: __len11 = std::distance(__first, __first_cut); 10136: } 10136: 10136: std::rotate(__first_cut, __middle, __second_cut); 10136: _BidirectionalIterator __new_middle = __first_cut; 10136: std::advance(__new_middle, std::distance(__middle, __second_cut)); 10136: std::__merge_without_buffer(__first, __first_cut, __new_middle, 10136: __len11, __len22, __comp); 10136: std::__merge_without_buffer(__new_middle, __second_cut, __last, 10136: __len1 - __len11, __len2 - __len22, __comp); 10136: } 10136: 10136: template 10136: void 10136: __inplace_merge(_BidirectionalIterator __first, 10136: _BidirectionalIterator __middle, 10136: _BidirectionalIterator __last, 10136: _Compare __comp) 10136: { 10136: typedef typename iterator_traits<_BidirectionalIterator>::value_type 10136: _ValueType; 10136: typedef typename iterator_traits<_BidirectionalIterator>::difference_type 10136: _DistanceType; 10136: 10136: if (__first == __middle || __middle == __last) 10136: return; 10136: 10136: const _DistanceType __len1 = std::distance(__first, __middle); 10136: const _DistanceType __len2 = std::distance(__middle, __last); 10136: 10136: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; 10136: _TmpBuf __buf(__first, __last); 10136: 10136: if (__buf.begin() == 0) 10136: std::__merge_without_buffer 10136: (__first, __middle, __last, __len1, __len2, __comp); 10136: else 10136: std::__merge_adaptive 10136: (__first, __middle, __last, __len1, __len2, __buf.begin(), 10136: _DistanceType(__buf.size()), __comp); 10136: } 10136: # 2572 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: inplace_merge(_BidirectionalIterator __first, 10136: _BidirectionalIterator __middle, 10136: _BidirectionalIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: std::__inplace_merge(__first, __middle, __last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 2613 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: inplace_merge(_BidirectionalIterator __first, 10136: _BidirectionalIterator __middle, 10136: _BidirectionalIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: std::__inplace_merge(__first, __middle, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: 10136: 10136: template 10136: _OutputIterator 10136: __move_merge(_InputIterator __first1, _InputIterator __last1, 10136: _InputIterator __first2, _InputIterator __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2) 10136: { 10136: if (__comp(__first2, __first1)) 10136: { 10136: *__result = std::move(*__first2); 10136: ++__first2; 10136: } 10136: else 10136: { 10136: *__result = std::move(*__first1); 10136: ++__first1; 10136: } 10136: ++__result; 10136: } 10136: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) 10136: 10136: ; 10136: } 10136: 10136: template 10136: void 10136: __merge_sort_loop(_RandomAccessIterator1 __first, 10136: _RandomAccessIterator1 __last, 10136: _RandomAccessIterator2 __result, _Distance __step_size, 10136: _Compare __comp) 10136: { 10136: const _Distance __two_step = 2 * __step_size; 10136: 10136: while (__last - __first >= __two_step) 10136: { 10136: __result = std::__move_merge(__first, __first + __step_size, 10136: __first + __step_size, 10136: __first + __two_step, 10136: __result, __comp); 10136: __first += __two_step; 10136: } 10136: __step_size = std::min(_Distance(__last - __first), __step_size); 10136: 10136: std::__move_merge(__first, __first + __step_size, 10136: __first + __step_size, __last, __result, __comp); 10136: } 10136: 10136: template 10136: void 10136: __chunk_insertion_sort(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, 10136: _Distance __chunk_size, _Compare __comp) 10136: { 10136: while (__last - __first >= __chunk_size) 10136: { 10136: std::__insertion_sort(__first, __first + __chunk_size, __comp); 10136: __first += __chunk_size; 10136: } 10136: std::__insertion_sort(__first, __last, __comp); 10136: } 10136: 10136: enum { _S_chunk_size = 7 }; 10136: 10136: template 10136: void 10136: __merge_sort_with_buffer(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, 10136: _Pointer __buffer, _Compare __comp) 10136: { 10136: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 10136: _Distance; 10136: 10136: const _Distance __len = __last - __first; 10136: const _Pointer __buffer_last = __buffer + __len; 10136: 10136: _Distance __step_size = _S_chunk_size; 10136: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); 10136: 10136: while (__step_size < __len) 10136: { 10136: std::__merge_sort_loop(__first, __last, __buffer, 10136: __step_size, __comp); 10136: __step_size *= 2; 10136: std::__merge_sort_loop(__buffer, __buffer_last, __first, 10136: __step_size, __comp); 10136: __step_size *= 2; 10136: } 10136: } 10136: 10136: template 10136: void 10136: __stable_sort_adaptive(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, 10136: _Pointer __buffer, _Distance __buffer_size, 10136: _Compare __comp) 10136: { 10136: const _Distance __len = (__last - __first + 1) / 2; 10136: const _RandomAccessIterator __middle = __first + __len; 10136: if (__len > __buffer_size) 10136: { 10136: std::__stable_sort_adaptive(__first, __middle, __buffer, 10136: __buffer_size, __comp); 10136: std::__stable_sort_adaptive(__middle, __last, __buffer, 10136: __buffer_size, __comp); 10136: } 10136: else 10136: { 10136: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); 10136: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); 10136: } 10136: std::__merge_adaptive(__first, __middle, __last, 10136: _Distance(__middle - __first), 10136: _Distance(__last - __middle), 10136: __buffer, __buffer_size, 10136: __comp); 10136: } 10136: 10136: 10136: template 10136: void 10136: __inplace_stable_sort(_RandomAccessIterator __first, 10136: _RandomAccessIterator __last, _Compare __comp) 10136: { 10136: if (__last - __first < 15) 10136: { 10136: std::__insertion_sort(__first, __last, __comp); 10136: return; 10136: } 10136: _RandomAccessIterator __middle = __first + (__last - __first) / 2; 10136: std::__inplace_stable_sort(__first, __middle, __comp); 10136: std::__inplace_stable_sort(__middle, __last, __comp); 10136: std::__merge_without_buffer(__first, __middle, __last, 10136: __middle - __first, 10136: __last - __middle, 10136: __comp); 10136: } 10136: # 2785 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: bool 10136: __includes(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _Compare __comp) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2) 10136: if (__comp(__first2, __first1)) 10136: return false; 10136: else if (__comp(__first1, __first2)) 10136: ++__first1; 10136: else 10136: { 10136: ++__first1; 10136: ++__first2; 10136: } 10136: 10136: return __first2 == __last2; 10136: } 10136: # 2824 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: includes(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__includes(__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 2868 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: includes(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__includes(__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: # 2903 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: bool 10136: __next_permutation(_BidirectionalIterator __first, 10136: _BidirectionalIterator __last, _Compare __comp) 10136: { 10136: if (__first == __last) 10136: return false; 10136: _BidirectionalIterator __i = __first; 10136: ++__i; 10136: if (__i == __last) 10136: return false; 10136: __i = __last; 10136: --__i; 10136: 10136: for(;;) 10136: { 10136: _BidirectionalIterator __ii = __i; 10136: --__i; 10136: if (__comp(__i, __ii)) 10136: { 10136: _BidirectionalIterator __j = __last; 10136: while (!__comp(__i, --__j)) 10136: {} 10136: std::iter_swap(__i, __j); 10136: std::__reverse(__ii, __last, 10136: std::__iterator_category(__first)); 10136: return true; 10136: } 10136: if (__i == __first) 10136: { 10136: std::__reverse(__first, __last, 10136: std::__iterator_category(__first)); 10136: return false; 10136: } 10136: } 10136: } 10136: # 2952 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: next_permutation(_BidirectionalIterator __first, 10136: _BidirectionalIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__next_permutation 10136: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 2984 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: next_permutation(_BidirectionalIterator __first, 10136: _BidirectionalIterator __last, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__next_permutation 10136: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: bool 10136: __prev_permutation(_BidirectionalIterator __first, 10136: _BidirectionalIterator __last, _Compare __comp) 10136: { 10136: if (__first == __last) 10136: return false; 10136: _BidirectionalIterator __i = __first; 10136: ++__i; 10136: if (__i == __last) 10136: return false; 10136: __i = __last; 10136: --__i; 10136: 10136: for(;;) 10136: { 10136: _BidirectionalIterator __ii = __i; 10136: --__i; 10136: if (__comp(__ii, __i)) 10136: { 10136: _BidirectionalIterator __j = __last; 10136: while (!__comp(--__j, __i)) 10136: {} 10136: std::iter_swap(__i, __j); 10136: std::__reverse(__ii, __last, 10136: std::__iterator_category(__first)); 10136: return true; 10136: } 10136: if (__i == __first) 10136: { 10136: std::__reverse(__first, __last, 10136: std::__iterator_category(__first)); 10136: return false; 10136: } 10136: } 10136: } 10136: # 3052 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: prev_permutation(_BidirectionalIterator __first, 10136: _BidirectionalIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__prev_permutation(__first, __last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 3084 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: prev_permutation(_BidirectionalIterator __first, 10136: _BidirectionalIterator __last, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__prev_permutation(__first, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: _OutputIterator 10136: __replace_copy_if(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, 10136: _Predicate __pred, const _Tp& __new_value) 10136: { 10136: for (; __first != __last; ++__first, (void)++__result) 10136: if (__pred(__first)) 10136: *__result = __new_value; 10136: else 10136: *__result = *__first; 10136: return __result; 10136: } 10136: # 3134 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: replace_copy(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, 10136: const _Tp& __old_value, const _Tp& __new_value) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__replace_copy_if(__first, __last, __result, 10136: __gnu_cxx::__ops::__iter_equals_val(__old_value), 10136: __new_value); 10136: } 10136: # 3168 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: replace_copy_if(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, 10136: _Predicate __pred, const _Tp& __new_value) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__replace_copy_if(__first, __last, __result, 10136: __gnu_cxx::__ops::__pred_iter(__pred), 10136: __new_value); 10136: } 10136: 10136: template 10136: typename iterator_traits<_InputIterator>::difference_type 10136: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 10136: { 10136: typename iterator_traits<_InputIterator>::difference_type __n = 0; 10136: for (; __first != __last; ++__first) 10136: if (__pred(__first)) 10136: ++__n; 10136: return __n; 10136: } 10136: # 3207 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: is_sorted(_ForwardIterator __first, _ForwardIterator __last) 10136: { return std::is_sorted_until(__first, __last) == __last; } 10136: # 3221 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: is_sorted(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { return std::is_sorted_until(__first, __last, __comp) == __last; } 10136: 10136: template 10136: _ForwardIterator 10136: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { 10136: if (__first == __last) 10136: return __last; 10136: 10136: _ForwardIterator __next = __first; 10136: for (++__next; __next != __last; __first = __next, (void)++__next) 10136: if (__comp(__next, __first)) 10136: return __next; 10136: return __next; 10136: } 10136: # 3250 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__is_sorted_until(__first, __last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 3274 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__is_sorted_until(__first, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: # 3299 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: constexpr 10136: inline pair 10136: minmax(const _Tp& __a, const _Tp& __b) 10136: { 10136: 10136: 10136: 10136: return __b < __a ? pair(__b, __a) 10136: : pair(__a, __b); 10136: } 10136: # 3320 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: constexpr 10136: inline pair 10136: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) 10136: { 10136: return __comp(__b, __a) ? pair(__b, __a) 10136: : pair(__a, __b); 10136: } 10136: 10136: template 10136: constexpr 10136: pair<_ForwardIterator, _ForwardIterator> 10136: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { 10136: _ForwardIterator __next = __first; 10136: if (__first == __last 10136: || ++__next == __last) 10136: return std::make_pair(__first, __first); 10136: 10136: _ForwardIterator __min{}, __max{}; 10136: if (__comp(__next, __first)) 10136: { 10136: __min = __next; 10136: __max = __first; 10136: } 10136: else 10136: { 10136: __min = __first; 10136: __max = __next; 10136: } 10136: 10136: __first = __next; 10136: ++__first; 10136: 10136: while (__first != __last) 10136: { 10136: __next = __first; 10136: if (++__next == __last) 10136: { 10136: if (__comp(__first, __min)) 10136: __min = __first; 10136: else if (!__comp(__first, __max)) 10136: __max = __first; 10136: break; 10136: } 10136: 10136: if (__comp(__next, __first)) 10136: { 10136: if (__comp(__next, __min)) 10136: __min = __next; 10136: if (!__comp(__first, __max)) 10136: __max = __first; 10136: } 10136: else 10136: { 10136: if (__comp(__first, __min)) 10136: __min = __first; 10136: if (!__comp(__next, __max)) 10136: __max = __next; 10136: } 10136: 10136: __first = __next; 10136: ++__first; 10136: } 10136: 10136: return std::make_pair(__min, __max); 10136: } 10136: # 3400 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: constexpr 10136: inline pair<_ForwardIterator, _ForwardIterator> 10136: minmax_element(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__minmax_element(__first, __last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 3428 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: constexpr 10136: inline pair<_ForwardIterator, _ForwardIterator> 10136: minmax_element(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__minmax_element(__first, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: 10136: template 10136: constexpr 10136: inline _Tp 10136: min(initializer_list<_Tp> __l) 10136: { return *std::min_element(__l.begin(), __l.end()); } 10136: 10136: template 10136: constexpr 10136: inline _Tp 10136: min(initializer_list<_Tp> __l, _Compare __comp) 10136: { return *std::min_element(__l.begin(), __l.end(), __comp); } 10136: 10136: template 10136: constexpr 10136: inline _Tp 10136: max(initializer_list<_Tp> __l) 10136: { return *std::max_element(__l.begin(), __l.end()); } 10136: 10136: template 10136: constexpr 10136: inline _Tp 10136: max(initializer_list<_Tp> __l, _Compare __comp) 10136: { return *std::max_element(__l.begin(), __l.end(), __comp); } 10136: 10136: template 10136: constexpr 10136: inline pair<_Tp, _Tp> 10136: minmax(initializer_list<_Tp> __l) 10136: { 10136: pair __p = 10136: std::minmax_element(__l.begin(), __l.end()); 10136: return std::make_pair(*__p.first, *__p.second); 10136: } 10136: 10136: template 10136: constexpr 10136: inline pair<_Tp, _Tp> 10136: minmax(initializer_list<_Tp> __l, _Compare __comp) 10136: { 10136: pair __p = 10136: std::minmax_element(__l.begin(), __l.end(), __comp); 10136: return std::make_pair(*__p.first, *__p.second); 10136: } 10136: 10136: template 10136: bool 10136: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _BinaryPredicate __pred) 10136: { 10136: 10136: 10136: for (; __first1 != __last1; ++__first1, (void)++__first2) 10136: if (!__pred(__first1, __first2)) 10136: break; 10136: 10136: if (__first1 == __last1) 10136: return true; 10136: 10136: 10136: 10136: _ForwardIterator2 __last2 = __first2; 10136: std::advance(__last2, std::distance(__first1, __last1)); 10136: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 10136: { 10136: if (__scan != std::__find_if(__first1, __scan, 10136: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 10136: continue; 10136: 10136: auto __matches 10136: = std::__count_if(__first2, __last2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 10136: if (0 == __matches || 10136: std::__count_if(__scan, __last1, 10136: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 10136: != __matches) 10136: return false; 10136: } 10136: return true; 10136: } 10136: # 3540 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__is_permutation(__first1, __last1, __first2, 10136: __gnu_cxx::__ops::__iter_equal_to_iter()); 10136: } 10136: # 3571 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _BinaryPredicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__is_permutation(__first1, __last1, __first2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 10136: } 10136: 10136: 10136: template 10136: bool 10136: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 10136: _BinaryPredicate __pred) 10136: { 10136: using _Cat1 10136: = typename iterator_traits<_ForwardIterator1>::iterator_category; 10136: using _Cat2 10136: = typename iterator_traits<_ForwardIterator2>::iterator_category; 10136: using _It1_is_RA = is_same<_Cat1, random_access_iterator_tag>; 10136: using _It2_is_RA = is_same<_Cat2, random_access_iterator_tag>; 10136: constexpr bool __ra_iters = _It1_is_RA() && _It2_is_RA(); 10136: if (__ra_iters) 10136: { 10136: auto __d1 = std::distance(__first1, __last1); 10136: auto __d2 = std::distance(__first2, __last2); 10136: if (__d1 != __d2) 10136: return false; 10136: } 10136: 10136: 10136: 10136: for (; __first1 != __last1 && __first2 != __last2; 10136: ++__first1, (void)++__first2) 10136: if (!__pred(__first1, __first2)) 10136: break; 10136: 10136: if (__ra_iters) 10136: { 10136: if (__first1 == __last1) 10136: return true; 10136: } 10136: else 10136: { 10136: auto __d1 = std::distance(__first1, __last1); 10136: auto __d2 = std::distance(__first2, __last2); 10136: if (__d1 == 0 && __d2 == 0) 10136: return true; 10136: if (__d1 != __d2) 10136: return false; 10136: } 10136: 10136: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 10136: { 10136: if (__scan != std::__find_if(__first1, __scan, 10136: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 10136: continue; 10136: 10136: auto __matches = std::__count_if(__first2, __last2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 10136: if (0 == __matches 10136: || std::__count_if(__scan, __last1, 10136: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 10136: != __matches) 10136: return false; 10136: } 10136: return true; 10136: } 10136: # 3664 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 10136: { 10136: ; 10136: ; 10136: 10136: return 10136: std::__is_permutation(__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_equal_to_iter()); 10136: } 10136: # 3691 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline bool 10136: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 10136: _BinaryPredicate __pred) 10136: { 10136: ; 10136: ; 10136: 10136: return std::__is_permutation(__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 10136: } 10136: # 3767 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: pair<_IntType, _IntType> 10136: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, 10136: _UniformRandomBitGenerator&& __g) 10136: { 10136: _IntType __x 10136: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); 10136: return std::make_pair(__x / __b1, __x % __b1); 10136: } 10136: # 3789 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: void 10136: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _UniformRandomNumberGenerator&& __g) 10136: { 10136: 10136: 10136: 10136: ; 10136: 10136: if (__first == __last) 10136: return; 10136: 10136: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 10136: _DistanceType; 10136: 10136: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; 10136: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; 10136: typedef typename __distr_type::param_type __p_type; 10136: 10136: typedef typename remove_reference<_UniformRandomNumberGenerator>::type 10136: _Gen; 10136: typedef typename common_type::type 10136: __uc_type; 10136: 10136: const __uc_type __urngrange = __g.max() - __g.min(); 10136: const __uc_type __urange = __uc_type(__last - __first); 10136: 10136: if (__urngrange / __urange >= __urange) 10136: 10136: { 10136: _RandomAccessIterator __i = __first + 1; 10136: 10136: 10136: 10136: 10136: 10136: if ((__urange % 2) == 0) 10136: { 10136: __distr_type __d{0, 1}; 10136: std::iter_swap(__i++, __first + __d(__g)); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: while (__i != __last) 10136: { 10136: const __uc_type __swap_range = __uc_type(__i - __first) + 1; 10136: 10136: const pair<__uc_type, __uc_type> __pospos = 10136: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); 10136: 10136: std::iter_swap(__i++, __first + __pospos.first); 10136: std::iter_swap(__i++, __first + __pospos.second); 10136: } 10136: 10136: return; 10136: } 10136: 10136: __distr_type __d; 10136: 10136: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 10136: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: # 3874 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _Function 10136: for_each(_InputIterator __first, _InputIterator __last, _Function __f) 10136: { 10136: 10136: 10136: ; 10136: for (; __first != __last; ++__first) 10136: __f(*__first); 10136: return __f; 10136: } 10136: # 3895 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _InputIterator 10136: find(_InputIterator __first, _InputIterator __last, 10136: const _Tp& __val) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: return std::__find_if(__first, __last, 10136: __gnu_cxx::__ops::__iter_equals_val(__val)); 10136: } 10136: # 3919 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _InputIterator 10136: find_if(_InputIterator __first, _InputIterator __last, 10136: _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__find_if(__first, __last, 10136: __gnu_cxx::__ops::__pred_iter(__pred)); 10136: } 10136: # 3950 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _InputIterator 10136: find_first_of(_InputIterator __first1, _InputIterator __last1, 10136: _ForwardIterator __first2, _ForwardIterator __last2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: for (; __first1 != __last1; ++__first1) 10136: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 10136: if (*__first1 == *__iter) 10136: return __first1; 10136: return __last1; 10136: } 10136: # 3990 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _InputIterator 10136: find_first_of(_InputIterator __first1, _InputIterator __last1, 10136: _ForwardIterator __first2, _ForwardIterator __last2, 10136: _BinaryPredicate __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: for (; __first1 != __last1; ++__first1) 10136: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 10136: if (__comp(*__first1, *__iter)) 10136: return __first1; 10136: return __last1; 10136: } 10136: # 4022 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__adjacent_find(__first, __last, 10136: __gnu_cxx::__ops::__iter_equal_to_iter()); 10136: } 10136: # 4047 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__adjacent_find(__first, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 10136: } 10136: # 4072 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline typename iterator_traits<_InputIterator>::difference_type 10136: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__count_if(__first, __last, 10136: __gnu_cxx::__ops::__iter_equals_val(__value)); 10136: } 10136: # 4095 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline typename iterator_traits<_InputIterator>::difference_type 10136: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__count_if(__first, __last, 10136: __gnu_cxx::__ops::__pred_iter(__pred)); 10136: } 10136: # 4135 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator1 10136: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__search(__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_equal_to_iter()); 10136: } 10136: # 4174 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator1 10136: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 10136: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 10136: _BinaryPredicate __predicate) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__search(__first1, __last1, __first2, __last2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); 10136: } 10136: # 4209 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: search_n(_ForwardIterator __first, _ForwardIterator __last, 10136: _Integer __count, const _Tp& __val) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__search_n(__first, __last, __count, 10136: __gnu_cxx::__ops::__iter_equals_val(__val)); 10136: } 10136: # 4242 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: search_n(_ForwardIterator __first, _ForwardIterator __last, 10136: _Integer __count, const _Tp& __val, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__search_n(__first, __last, __count, 10136: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); 10136: } 10136: # 4290 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _OutputIterator 10136: transform(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, _UnaryOperation __unary_op) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first != __last; ++__first, (void)++__result) 10136: *__result = __unary_op(*__first); 10136: return __result; 10136: } 10136: # 4327 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _OutputIterator 10136: transform(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _OutputIterator __result, 10136: _BinaryOperation __binary_op) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) 10136: *__result = __binary_op(*__first1, *__first2); 10136: return __result; 10136: } 10136: # 4360 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: void 10136: replace(_ForwardIterator __first, _ForwardIterator __last, 10136: const _Tp& __old_value, const _Tp& __new_value) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first != __last; ++__first) 10136: if (*__first == __old_value) 10136: *__first = __new_value; 10136: } 10136: # 4392 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: void 10136: replace_if(_ForwardIterator __first, _ForwardIterator __last, 10136: _Predicate __pred, const _Tp& __new_value) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first != __last; ++__first) 10136: if (__pred(*__first)) 10136: *__first = __new_value; 10136: } 10136: # 4424 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: void 10136: generate(_ForwardIterator __first, _ForwardIterator __last, 10136: _Generator __gen) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: for (; __first != __last; ++__first) 10136: *__first = __gen(); 10136: } 10136: # 4455 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: _OutputIterator 10136: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: for (__decltype(__n + 0) __niter = __n; 10136: __niter > 0; --__niter, (void) ++__first) 10136: *__first = __gen(); 10136: return __first; 10136: } 10136: # 4491 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: unique_copy(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: if (__first == __last) 10136: return __result; 10136: return std::__unique_copy(__first, __last, __result, 10136: __gnu_cxx::__ops::__iter_equal_to_iter(), 10136: std::__iterator_category(__first), 10136: std::__iterator_category(__result)); 10136: } 10136: # 4531 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: unique_copy(_InputIterator __first, _InputIterator __last, 10136: _OutputIterator __result, 10136: _BinaryPredicate __binary_pred) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: if (__first == __last) 10136: return __result; 10136: return std::__unique_copy(__first, __last, __result, 10136: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), 10136: std::__iterator_category(__first), 10136: std::__iterator_category(__result)); 10136: } 10136: # 4564 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: ; 10136: 10136: if (__first != __last) 10136: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 10136: { 10136: 10136: _RandomAccessIterator __j = __first 10136: + std::rand() % ((__i - __first) + 1); 10136: if (__i != __j) 10136: std::iter_swap(__i, __j); 10136: } 10136: } 10136: # 4599 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: void 10136: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: 10136: _RandomNumberGenerator&& __rand) 10136: 10136: 10136: 10136: { 10136: 10136: 10136: 10136: ; 10136: 10136: if (__first == __last) 10136: return; 10136: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 10136: { 10136: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); 10136: if (__i != __j) 10136: std::iter_swap(__i, __j); 10136: } 10136: } 10136: # 4639 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _ForwardIterator 10136: partition(_ForwardIterator __first, _ForwardIterator __last, 10136: _Predicate __pred) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: 10136: return std::__partition(__first, __last, __pred, 10136: std::__iterator_category(__first)); 10136: } 10136: # 4672 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: partial_sort(_RandomAccessIterator __first, 10136: _RandomAccessIterator __middle, 10136: _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: std::__partial_sort(__first, __middle, __last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 4710 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: partial_sort(_RandomAccessIterator __first, 10136: _RandomAccessIterator __middle, 10136: _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: std::__partial_sort(__first, __middle, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: # 4746 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 10136: _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: if (__first == __last || __nth == __last) 10136: return; 10136: 10136: std::__introselect(__first, __nth, __last, 10136: std::__lg(__last - __first) * 2, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 4785 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 10136: _RandomAccessIterator __last, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: 10136: if (__first == __last || __nth == __last) 10136: return; 10136: 10136: std::__introselect(__first, __nth, __last, 10136: std::__lg(__last - __first) * 2, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: # 4822 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 4852 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: _OutputIterator 10136: __merge(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2) 10136: { 10136: if (__comp(__first2, __first1)) 10136: { 10136: *__result = *__first2; 10136: ++__first2; 10136: } 10136: else 10136: { 10136: *__result = *__first1; 10136: ++__first1; 10136: } 10136: ++__result; 10136: } 10136: return std::copy(__first2, __last2, 10136: std::copy(__first1, __last1, __result)); 10136: } 10136: # 4913 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: merge(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__merge(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 4963 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: merge(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__merge(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: inline void 10136: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: typedef typename iterator_traits<_RandomAccessIterator>::value_type 10136: _ValueType; 10136: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 10136: _DistanceType; 10136: 10136: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; 10136: _TmpBuf __buf(__first, __last); 10136: 10136: if (__buf.begin() == 0) 10136: std::__inplace_stable_sort(__first, __last, __comp); 10136: else 10136: std::__stable_sort_adaptive(__first, __last, __buf.begin(), 10136: _DistanceType(__buf.size()), __comp); 10136: } 10136: # 5027 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: std::__stable_sort(__first, __last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 5061 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline void 10136: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: std::__stable_sort(__first, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: _OutputIterator 10136: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2) 10136: { 10136: if (__comp(__first1, __first2)) 10136: { 10136: *__result = *__first1; 10136: ++__first1; 10136: } 10136: else if (__comp(__first2, __first1)) 10136: { 10136: *__result = *__first2; 10136: ++__first2; 10136: } 10136: else 10136: { 10136: *__result = *__first1; 10136: ++__first1; 10136: ++__first2; 10136: } 10136: ++__result; 10136: } 10136: return std::copy(__first2, __last2, 10136: std::copy(__first1, __last1, __result)); 10136: } 10136: # 5130 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__set_union(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 5180 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__set_union(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: _OutputIterator 10136: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2) 10136: if (__comp(__first1, __first2)) 10136: ++__first1; 10136: else if (__comp(__first2, __first1)) 10136: ++__first2; 10136: else 10136: { 10136: *__result = *__first1; 10136: ++__first1; 10136: ++__first2; 10136: ++__result; 10136: } 10136: return __result; 10136: } 10136: # 5251 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__set_intersection(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 5300 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__set_intersection(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: _OutputIterator 10136: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2) 10136: if (__comp(__first1, __first2)) 10136: { 10136: *__result = *__first1; 10136: ++__first1; 10136: ++__result; 10136: } 10136: else if (__comp(__first2, __first1)) 10136: ++__first2; 10136: else 10136: { 10136: ++__first1; 10136: ++__first2; 10136: } 10136: return std::copy(__first1, __last1, __result); 10136: } 10136: # 5373 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__set_difference(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 5424 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__set_difference(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: _OutputIterator 10136: __set_symmetric_difference(_InputIterator1 __first1, 10136: _InputIterator1 __last1, 10136: _InputIterator2 __first2, 10136: _InputIterator2 __last2, 10136: _OutputIterator __result, 10136: _Compare __comp) 10136: { 10136: while (__first1 != __last1 && __first2 != __last2) 10136: if (__comp(__first1, __first2)) 10136: { 10136: *__result = *__first1; 10136: ++__first1; 10136: ++__result; 10136: } 10136: else if (__comp(__first2, __first1)) 10136: { 10136: *__result = *__first2; 10136: ++__first2; 10136: ++__result; 10136: } 10136: else 10136: { 10136: ++__first1; 10136: ++__first2; 10136: } 10136: return std::copy(__first2, __last2, 10136: std::copy(__first1, __last1, __result)); 10136: } 10136: # 5503 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__set_symmetric_difference(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 5554 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: inline _OutputIterator 10136: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 10136: _InputIterator2 __first2, _InputIterator2 __last2, 10136: _OutputIterator __result, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: ; 10136: ; 10136: 10136: return std::__set_symmetric_difference(__first1, __last1, 10136: __first2, __last2, __result, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: constexpr 10136: _ForwardIterator 10136: __min_element(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { 10136: if (__first == __last) 10136: return __first; 10136: _ForwardIterator __result = __first; 10136: while (++__first != __last) 10136: if (__comp(__first, __result)) 10136: __result = __first; 10136: return __result; 10136: } 10136: # 5607 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: constexpr 10136: _ForwardIterator 10136: inline min_element(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__min_element(__first, __last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 5632 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: constexpr 10136: inline _ForwardIterator 10136: min_element(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__min_element(__first, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: template 10136: constexpr 10136: _ForwardIterator 10136: __max_element(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { 10136: if (__first == __last) return __first; 10136: _ForwardIterator __result = __first; 10136: while (++__first != __last) 10136: if (__comp(__result, __first)) 10136: __result = __first; 10136: return __result; 10136: } 10136: # 5671 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: constexpr 10136: inline _ForwardIterator 10136: max_element(_ForwardIterator __first, _ForwardIterator __last) 10136: { 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__max_element(__first, __last, 10136: __gnu_cxx::__ops::__iter_less_iter()); 10136: } 10136: # 5696 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: template 10136: constexpr 10136: inline _ForwardIterator 10136: max_element(_ForwardIterator __first, _ForwardIterator __last, 10136: _Compare __comp) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: ; 10136: ; 10136: 10136: return std::__max_element(__first, __last, 10136: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 10136: } 10136: 10136: 10136: 10136: template 10136: _RandomAccessIterator 10136: __sample(_InputIterator __first, _InputIterator __last, input_iterator_tag, 10136: _RandomAccessIterator __out, random_access_iterator_tag, 10136: _Size __n, _UniformRandomBitGenerator&& __g) 10136: { 10136: using __distrib_type = uniform_int_distribution<_Size>; 10136: using __param_type = typename __distrib_type::param_type; 10136: __distrib_type __d{}; 10136: _Size __sample_sz = 0; 10136: while (__first != __last && __sample_sz != __n) 10136: { 10136: __out[__sample_sz++] = *__first; 10136: ++__first; 10136: } 10136: for (auto __pop_sz = __sample_sz; __first != __last; 10136: ++__first, (void) ++__pop_sz) 10136: { 10136: const auto __k = __d(__g, __param_type{0, __pop_sz}); 10136: if (__k < __n) 10136: __out[__k] = *__first; 10136: } 10136: return __out + __sample_sz; 10136: } 10136: 10136: 10136: template 10136: _OutputIterator 10136: __sample(_ForwardIterator __first, _ForwardIterator __last, 10136: forward_iterator_tag, 10136: _OutputIterator __out, _Cat, 10136: _Size __n, _UniformRandomBitGenerator&& __g) 10136: { 10136: using __distrib_type = uniform_int_distribution<_Size>; 10136: using __param_type = typename __distrib_type::param_type; 10136: using _USize = make_unsigned_t<_Size>; 10136: using _Gen = remove_reference_t<_UniformRandomBitGenerator>; 10136: using __uc_type = common_type_t; 10136: 10136: __distrib_type __d{}; 10136: _Size __unsampled_sz = std::distance(__first, __last); 10136: __n = std::min(__n, __unsampled_sz); 10136: 10136: 10136: 10136: 10136: const __uc_type __urngrange = __g.max() - __g.min(); 10136: if (__urngrange / __uc_type(__unsampled_sz) >= __uc_type(__unsampled_sz)) 10136: 10136: 10136: { 10136: while (__n != 0 && __unsampled_sz >= 2) 10136: { 10136: const pair<_Size, _Size> __p = 10136: __gen_two_uniform_ints(__unsampled_sz, __unsampled_sz - 1, __g); 10136: 10136: --__unsampled_sz; 10136: if (__p.first < __n) 10136: { 10136: *__out++ = *__first; 10136: --__n; 10136: } 10136: 10136: ++__first; 10136: 10136: if (__n == 0) break; 10136: 10136: --__unsampled_sz; 10136: if (__p.second < __n) 10136: { 10136: *__out++ = *__first; 10136: --__n; 10136: } 10136: 10136: ++__first; 10136: } 10136: } 10136: 10136: 10136: 10136: for (; __n != 0; ++__first) 10136: if (__d(__g, __param_type{0, --__unsampled_sz}) < __n) 10136: { 10136: *__out++ = *__first; 10136: --__n; 10136: } 10136: return __out; 10136: } 10136: # 5839 "/usr/include/c++/8/bits/stl_algo.h" 3 10136: 10136: 10136: } 10136: # 63 "/usr/include/c++/8/algorithm" 2 3 10136: # 42 "../../include/tbb/concurrent_vector.h" 2 10136: # 71 "../../include/tbb/concurrent_vector.h" 10136: 10136: # 71 "../../include/tbb/concurrent_vector.h" 10136: namespace tbb { 10136: 10136: template > 10136: class concurrent_vector; 10136: 10136: 10136: namespace internal { 10136: 10136: template 10136: class vector_iterator; 10136: 10136: 10136: static void *const vector_allocation_error_flag = reinterpret_cast(size_t(63)); 10136: 10136: 10136: template 10136: void handle_unconstructed_elements(T* array, size_t n_of_elements){ 10136: std::memset( array, 0, n_of_elements * sizeof( T ) ); 10136: } 10136: 10136: 10136: 10136: class concurrent_vector_base_v3 { 10136: protected: 10136: 10136: 10136: typedef size_t segment_index_t; 10136: typedef size_t size_type; 10136: 10136: 10136: enum { 10136: 10136: default_initial_segments = 1, 10136: 10136: pointers_per_short_table = 3, 10136: pointers_per_long_table = sizeof(segment_index_t) * 8 10136: }; 10136: 10136: struct segment_not_used {}; 10136: struct segment_allocated {}; 10136: struct segment_allocation_failed {}; 10136: 10136: class segment_t; 10136: class segment_value_t { 10136: void* array; 10136: private: 10136: 10136: friend class segment_t; 10136: explicit segment_value_t(void* an_array):array(an_array) {} 10136: public: 10136: friend bool operator==(segment_value_t const& lhs, segment_not_used ) { return lhs.array == 0;} 10136: friend bool operator==(segment_value_t const& lhs, segment_allocated) { return lhs.array > internal::vector_allocation_error_flag;} 10136: friend bool operator==(segment_value_t const& lhs, segment_allocation_failed) { return lhs.array == internal::vector_allocation_error_flag;} 10136: template 10136: friend bool operator!=(segment_value_t const& lhs, argument_type arg) { return ! (lhs == arg);} 10136: 10136: template 10136: T* pointer() const { return static_cast(const_cast(array)); } 10136: }; 10136: 10136: friend void enforce_segment_allocated(segment_value_t const& s, internal::exception_id exception = eid_bad_last_alloc){ 10136: if(s != segment_allocated()){ 10136: internal::throw_exception(exception); 10136: } 10136: } 10136: 10136: 10136: class segment_t { 10136: atomic array; 10136: public: 10136: segment_t(){ store(segment_not_used());} 10136: 10136: 10136: 10136: segment_t(segment_t const& rhs ){ array.store(rhs.array.load());} 10136: 10136: void swap(segment_t & rhs ){ 10136: tbb::internal::swap(array, rhs.array); 10136: } 10136: 10136: segment_t& operator=(segment_t const& rhs ){ 10136: array.store(rhs.array.load()); 10136: return *this; 10136: } 10136: 10136: template 10136: segment_value_t load() const { return segment_value_t(array.load());} 10136: 10136: template 10136: void store(segment_not_used) { 10136: array.store(0); 10136: } 10136: 10136: template 10136: void store(segment_allocation_failed) { 10136: ((load() != segment_allocated())?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",166,"load() != segment_allocated()","transition from \"allocated\" to \"allocation failed\" state looks non-logical")); 10136: array.store(internal::vector_allocation_error_flag); 10136: } 10136: 10136: template 10136: void store(void* allocated_segment_pointer) noexcept(true) { 10136: ((segment_value_t(allocated_segment_pointer) == segment_allocated())?((void)0) : tbb::assertion_failure( 10136: "../../include/tbb/concurrent_vector.h" 10136: # 172 "../../include/tbb/concurrent_vector.h" 10136: , 10136: 173 10136: # 172 "../../include/tbb/concurrent_vector.h" 10136: ,"segment_value_t(allocated_segment_pointer) == segment_allocated()","other overloads of store should be used for marking segment as not_used or allocation_failed")) 10136: ; 10136: array.store(allocated_segment_pointer); 10136: } 10136: 10136: 10136: ~segment_t() { 10136: ((load() != segment_allocated())?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",179,"load() != segment_allocated()","should have been freed by clear")); 10136: } 10136: 10136: }; 10136: friend void swap(segment_t & , segment_t & ) noexcept(true); 10136: 10136: 10136: 10136: 10136: void* (*vector_allocator_ptr)(concurrent_vector_base_v3 &, size_t); 10136: 10136: 10136: atomic my_first_block; 10136: 10136: 10136: atomic my_early_size; 10136: 10136: 10136: atomic my_segment; 10136: 10136: 10136: segment_t my_storage[pointers_per_short_table]; 10136: 10136: 10136: 10136: concurrent_vector_base_v3() { 10136: # 213 "../../include/tbb/concurrent_vector.h" 10136: my_early_size.store(0); 10136: my_first_block.store(0); 10136: my_segment.store(my_storage); 10136: } 10136: 10136: ~concurrent_vector_base_v3(); 10136: 10136: 10136: 10136: 10136: 10136: static segment_index_t segment_index_of( size_type index ) { 10136: return segment_index_t( __TBB_Log2( index|1 ) ); 10136: } 10136: 10136: static segment_index_t segment_base( segment_index_t k ) { 10136: return (segment_index_t(1)< 10136: friend class vector_iterator; 10136: 10136: }; 10136: 10136: inline void swap(concurrent_vector_base_v3::segment_t & lhs, concurrent_vector_base_v3::segment_t & rhs) noexcept(true) { 10136: lhs.swap(rhs); 10136: } 10136: 10136: typedef concurrent_vector_base_v3 concurrent_vector_base; 10136: 10136: 10136: 10136: 10136: template 10136: class vector_iterator 10136: { 10136: 10136: Container* my_vector; 10136: 10136: 10136: size_t my_index; 10136: 10136: 10136: 10136: mutable Value* my_item; 10136: 10136: template 10136: friend vector_iterator operator+( ptrdiff_t offset, const vector_iterator& v ); 10136: 10136: template 10136: friend bool operator==( const vector_iterator& i, const vector_iterator& j ); 10136: 10136: template 10136: friend bool operator<( const vector_iterator& i, const vector_iterator& j ); 10136: 10136: template 10136: friend ptrdiff_t operator-( const vector_iterator& i, const vector_iterator& j ); 10136: 10136: template 10136: friend class internal::vector_iterator; 10136: 10136: 10136: template 10136: friend class tbb::concurrent_vector; 10136: 10136: 10136: 10136: 10136: vector_iterator( const Container& vector, size_t index, void *ptr = 0 ) : 10136: my_vector(const_cast(&vector)), 10136: my_index(index), 10136: my_item(static_cast(ptr)) 10136: {} 10136: 10136: public: 10136: 10136: vector_iterator() : my_vector( 10136: # 346 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 346 "../../include/tbb/concurrent_vector.h" 10136: ), my_index(~size_t(0)), my_item( 10136: # 346 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 346 "../../include/tbb/concurrent_vector.h" 10136: ) {} 10136: 10136: vector_iterator( const vector_iterator& other ) : 10136: my_vector(other.my_vector), 10136: my_index(other.my_index), 10136: my_item(other.my_item) 10136: {} 10136: 10136: vector_iterator operator+( ptrdiff_t offset ) const { 10136: return vector_iterator( *my_vector, my_index+offset ); 10136: } 10136: vector_iterator &operator+=( ptrdiff_t offset ) { 10136: my_index+=offset; 10136: my_item = 10136: # 359 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 359 "../../include/tbb/concurrent_vector.h" 10136: ; 10136: return *this; 10136: } 10136: vector_iterator operator-( ptrdiff_t offset ) const { 10136: return vector_iterator( *my_vector, my_index-offset ); 10136: } 10136: vector_iterator &operator-=( ptrdiff_t offset ) { 10136: my_index-=offset; 10136: my_item = 10136: # 367 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 367 "../../include/tbb/concurrent_vector.h" 10136: ; 10136: return *this; 10136: } 10136: Value& operator*() const { 10136: Value* item = my_item; 10136: if( !item ) { 10136: item = my_item = &my_vector->internal_subscript(my_index); 10136: } 10136: ((item==&my_vector->internal_subscript(my_index))?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",375,"item==&my_vector->internal_subscript(my_index)","corrupt cache")); 10136: return *item; 10136: } 10136: Value& operator[]( ptrdiff_t k ) const { 10136: return my_vector->internal_subscript(my_index+k); 10136: } 10136: Value* operator->() const {return &operator*();} 10136: 10136: 10136: vector_iterator& operator++() { 10136: size_t element_index = ++my_index; 10136: if( my_item ) { 10136: 10136: if( concurrent_vector_base::is_first_element_in_segment(element_index)) { 10136: 10136: 10136: my_item= 10136: # 391 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 391 "../../include/tbb/concurrent_vector.h" 10136: ; 10136: } else { 10136: ++my_item; 10136: } 10136: } 10136: return *this; 10136: } 10136: 10136: 10136: vector_iterator& operator--() { 10136: ((my_index>0)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",401,"my_index>0","operator--() applied to iterator already at beginning of concurrent_vector")); 10136: size_t element_index = my_index--; 10136: if( my_item ) { 10136: if(concurrent_vector_base::is_first_element_in_segment(element_index)) { 10136: 10136: 10136: my_item= 10136: # 407 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 407 "../../include/tbb/concurrent_vector.h" 10136: ; 10136: } else { 10136: --my_item; 10136: } 10136: } 10136: return *this; 10136: } 10136: 10136: 10136: vector_iterator operator++(int) { 10136: vector_iterator result = *this; 10136: operator++(); 10136: return result; 10136: } 10136: 10136: 10136: vector_iterator operator--(int) { 10136: vector_iterator result = *this; 10136: operator--(); 10136: return result; 10136: } 10136: 10136: 10136: 10136: typedef ptrdiff_t difference_type; 10136: typedef Value value_type; 10136: typedef Value* pointer; 10136: typedef Value& reference; 10136: typedef std::random_access_iterator_tag iterator_category; 10136: }; 10136: 10136: template 10136: vector_iterator operator+( ptrdiff_t offset, const vector_iterator& v ) { 10136: return vector_iterator( *v.my_vector, v.my_index+offset ); 10136: } 10136: 10136: template 10136: bool operator==( const vector_iterator& i, const vector_iterator& j ) { 10136: return i.my_index==j.my_index && i.my_vector == j.my_vector; 10136: } 10136: 10136: template 10136: bool operator!=( const vector_iterator& i, const vector_iterator& j ) { 10136: return !(i==j); 10136: } 10136: 10136: template 10136: bool operator<( const vector_iterator& i, const vector_iterator& j ) { 10136: return i.my_index 10136: bool operator>( const vector_iterator& i, const vector_iterator& j ) { 10136: return j 10136: bool operator>=( const vector_iterator& i, const vector_iterator& j ) { 10136: return !(i 10136: bool operator<=( const vector_iterator& i, const vector_iterator& j ) { 10136: return !(j 10136: ptrdiff_t operator-( const vector_iterator& i, const vector_iterator& j ) { 10136: return ptrdiff_t(i.my_index)-ptrdiff_t(j.my_index); 10136: } 10136: 10136: template 10136: class allocator_base { 10136: public: 10136: typedef typename A::template 10136: rebind::other allocator_type; 10136: allocator_type my_allocator; 10136: 10136: allocator_base(const allocator_type &a = allocator_type() ) : my_allocator(a) {} 10136: 10136: }; 10136: 10136: } 10136: # 554 "../../include/tbb/concurrent_vector.h" 10136: template 10136: class concurrent_vector: protected internal::allocator_base, 10136: private internal::concurrent_vector_base { 10136: private: 10136: template 10136: class generic_range_type: public blocked_range { 10136: public: 10136: typedef T value_type; 10136: typedef T& reference; 10136: typedef const T& const_reference; 10136: typedef I iterator; 10136: typedef ptrdiff_t difference_type; 10136: generic_range_type( I begin_, I end_, size_t grainsize_ = 1) : blocked_range(begin_,end_,grainsize_) {} 10136: template 10136: generic_range_type( const generic_range_type& r) : blocked_range(r.begin(),r.end(),r.grainsize()) {} 10136: generic_range_type( generic_range_type& r, split ) : blocked_range(r,split()) {} 10136: }; 10136: 10136: template 10136: friend class internal::vector_iterator; 10136: 10136: public: 10136: 10136: 10136: 10136: typedef internal::concurrent_vector_base_v3::size_type size_type; 10136: typedef typename internal::allocator_base::allocator_type allocator_type; 10136: 10136: typedef T value_type; 10136: typedef ptrdiff_t difference_type; 10136: typedef T& reference; 10136: typedef const T& const_reference; 10136: typedef T *pointer; 10136: typedef const T *const_pointer; 10136: 10136: typedef internal::vector_iterator iterator; 10136: typedef internal::vector_iterator const_iterator; 10136: 10136: 10136: 10136: typedef std::reverse_iterator reverse_iterator; 10136: typedef std::reverse_iterator const_reverse_iterator; 10136: # 605 "../../include/tbb/concurrent_vector.h" 10136: typedef generic_range_type range_type; 10136: typedef generic_range_type const_range_type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: explicit concurrent_vector(const allocator_type &a = allocator_type()) 10136: : internal::allocator_base(a), internal::concurrent_vector_base() 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: concurrent_vector(std::initializer_list init_list, const allocator_type &a = allocator_type()) 10136: : internal::allocator_base(a), internal::concurrent_vector_base() 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: try { 10136: internal_assign_iterators(init_list.begin(), init_list.end()); 10136: } catch(...) { 10136: segment_t *table = my_segment.load();; 10136: internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load()); 10136: throw; 10136: } 10136: 10136: } 10136: 10136: 10136: 10136: concurrent_vector( const concurrent_vector& vector, const allocator_type& a = allocator_type() ) 10136: : internal::allocator_base(a), internal::concurrent_vector_base() 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: try { 10136: internal_copy(vector, sizeof(T), ©_array); 10136: } catch(...) { 10136: segment_t *table = my_segment.load(); 10136: internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load()); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: concurrent_vector( concurrent_vector&& source) 10136: : internal::allocator_base(std::move(source)), internal::concurrent_vector_base() 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: concurrent_vector_base_v3::internal_swap(source); 10136: } 10136: 10136: concurrent_vector( concurrent_vector&& source, const allocator_type& a) 10136: : internal::allocator_base(a), internal::concurrent_vector_base() 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: 10136: 10136: if (a == source.my_allocator) { 10136: concurrent_vector_base_v3::internal_swap(source); 10136: } else { 10136: try { 10136: internal_copy(source, sizeof(T), &move_array); 10136: } catch(...) { 10136: segment_t *table = my_segment.load(); 10136: internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load()); 10136: throw; 10136: } 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: concurrent_vector( const concurrent_vector& vector, const allocator_type& a = allocator_type() ) 10136: : internal::allocator_base(a), internal::concurrent_vector_base() 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: try { 10136: internal_copy(vector.internal_vector_base(), sizeof(T), ©_array); 10136: } catch(...) { 10136: segment_t *table = my_segment.load(); 10136: internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load() ); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: explicit concurrent_vector(size_type n) 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: try { 10136: internal_resize( n, sizeof(T), max_size(), 10136: # 703 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 703 "../../include/tbb/concurrent_vector.h" 10136: , &destroy_array, &initialize_array ); 10136: } catch(...) { 10136: segment_t *table = my_segment.load(); 10136: internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load() ); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: concurrent_vector(size_type n, const_reference t, const allocator_type& a = allocator_type()) 10136: : internal::allocator_base(a) 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: try { 10136: internal_resize( n, sizeof(T), max_size(), static_cast(&t), &destroy_array, &initialize_array_by ); 10136: } catch(...) { 10136: segment_t *table = my_segment.load(); 10136: internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load() ); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: template 10136: concurrent_vector(I first, I last, const allocator_type &a = allocator_type()) 10136: : internal::allocator_base(a) 10136: { 10136: vector_allocator_ptr = &internal_allocator; 10136: try { 10136: internal_assign_range(first, last, static_cast::is_integer> *>(0) ); 10136: } catch(...) { 10136: segment_t *table = my_segment.load(); 10136: internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load() ); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: concurrent_vector& operator=( const concurrent_vector& vector ) { 10136: if( this != &vector ) 10136: internal_assign(vector, sizeof(T), &destroy_array, &assign_array, ©_array); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: concurrent_vector& operator=( concurrent_vector&& other ) { 10136: ((this != &other)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",751,"this != &other","Move assignment to itself is prohibited ")); 10136: typedef typename tbb::internal::allocator_traits::propagate_on_container_move_assignment pocma_t; 10136: if(pocma_t::value || this->my_allocator == other.my_allocator) { 10136: concurrent_vector trash (std::move(*this)); 10136: internal_swap(other); 10136: if (pocma_t::value) { 10136: this->my_allocator = std::move(other.my_allocator); 10136: } 10136: } else { 10136: internal_assign(other, sizeof(T), &destroy_array, &move_assign_array, &move_array); 10136: } 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: concurrent_vector& operator=( const concurrent_vector& vector ) { 10136: if( static_cast( this ) != static_cast( &vector ) ) 10136: internal_assign(vector.internal_vector_base(), 10136: sizeof(T), &destroy_array, &assign_array, ©_array); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: concurrent_vector& operator=( std::initializer_list init_list ) { 10136: internal_clear(&destroy_array); 10136: internal_assign_iterators(init_list.begin(), init_list.end()); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: iterator grow_by( size_type delta ) { 10136: return iterator(*this, delta ? internal_grow_by( delta, sizeof(T), &initialize_array, 10136: # 791 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 791 "../../include/tbb/concurrent_vector.h" 10136: ) : my_early_size.load()); 10136: } 10136: 10136: 10136: 10136: iterator grow_by( size_type delta, const_reference t ) { 10136: return iterator(*this, delta ? internal_grow_by( delta, sizeof(T), &initialize_array_by, static_cast(&t) ) : my_early_size.load()); 10136: } 10136: 10136: 10136: template 10136: iterator grow_by( I first, I last ) { 10136: typename std::iterator_traits::difference_type delta = std::distance(first, last); 10136: ((delta >= 0)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",804,"delta >= 0", 10136: # 804 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 804 "../../include/tbb/concurrent_vector.h" 10136: )); 10136: 10136: return iterator(*this, delta ? internal_grow_by(delta, sizeof(T), ©_range, static_cast(&first)) : my_early_size.load()); 10136: } 10136: 10136: 10136: 10136: iterator grow_by( std::initializer_list init_list ) { 10136: return grow_by( init_list.begin(), init_list.end() ); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: iterator grow_to_at_least( size_type n ) { 10136: size_type m=0; 10136: if( n ) { 10136: m = internal_grow_to_at_least_with_result( n, sizeof(T), &initialize_array, 10136: # 824 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 824 "../../include/tbb/concurrent_vector.h" 10136: ); 10136: if( m>n ) m=n; 10136: } 10136: return iterator(*this, m); 10136: }; 10136: 10136: 10136: 10136: iterator grow_to_at_least( size_type n, const_reference t ) { 10136: size_type m=0; 10136: if( n ) { 10136: m = internal_grow_to_at_least_with_result( n, sizeof(T), &initialize_array_by, &t); 10136: if( m>n ) m=n; 10136: } 10136: return iterator(*this, m); 10136: }; 10136: 10136: 10136: 10136: iterator push_back( const_reference item ) 10136: { 10136: push_back_helper prolog(*this); 10136: new(prolog.internal_push_back_result()) T(item); 10136: return prolog.return_iterator_and_dismiss(); 10136: } 10136: 10136: 10136: 10136: 10136: iterator push_back( T&& item ) 10136: { 10136: push_back_helper prolog(*this); 10136: new(prolog.internal_push_back_result()) T(std::move(item)); 10136: return prolog.return_iterator_and_dismiss(); 10136: } 10136: 10136: 10136: 10136: template 10136: iterator emplace_back( Args&&... args ) 10136: { 10136: push_back_helper prolog(*this); 10136: new(prolog.internal_push_back_result()) T(std::forward(args)...); 10136: return prolog.return_iterator_and_dismiss(); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: reference operator[]( size_type index ) { 10136: return internal_subscript(index); 10136: } 10136: 10136: 10136: const_reference operator[]( size_type index ) const { 10136: return internal_subscript(index); 10136: } 10136: 10136: 10136: reference at( size_type index ) { 10136: return internal_subscript_with_exceptions(index); 10136: } 10136: 10136: 10136: const_reference at( size_type index ) const { 10136: return internal_subscript_with_exceptions(index); 10136: } 10136: 10136: 10136: range_type range( size_t grainsize = 1 ) { 10136: return range_type( begin(), end(), grainsize ); 10136: } 10136: 10136: 10136: const_range_type range( size_t grainsize = 1 ) const { 10136: return const_range_type( begin(), end(), grainsize ); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: size_type size() const { 10136: size_type sz = my_early_size, cp = internal_capacity(); 10136: return cp < sz ? cp : sz; 10136: } 10136: 10136: 10136: bool empty() const {return !my_early_size;} 10136: 10136: 10136: size_type capacity() const {return internal_capacity();} 10136: 10136: 10136: 10136: 10136: void reserve( size_type n ) { 10136: if( n ) 10136: internal_reserve(n, sizeof(T), max_size()); 10136: } 10136: 10136: 10136: void resize( size_type n ) { 10136: internal_resize( n, sizeof(T), max_size(), 10136: # 928 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 928 "../../include/tbb/concurrent_vector.h" 10136: , &destroy_array, &initialize_array ); 10136: } 10136: 10136: 10136: void resize( size_type n, const_reference t ) { 10136: internal_resize( n, sizeof(T), max_size(), static_cast(&t), &destroy_array, &initialize_array_by ); 10136: } 10136: 10136: 10136: void shrink_to_fit(); 10136: 10136: 10136: size_type max_size() const {return (~size_type(0))/sizeof(T);} 10136: 10136: 10136: 10136: 10136: 10136: 10136: iterator begin() {return iterator(*this,0);} 10136: 10136: iterator end() {return iterator(*this,size());} 10136: 10136: const_iterator begin() const {return const_iterator(*this,0);} 10136: 10136: const_iterator end() const {return const_iterator(*this,size());} 10136: 10136: const_iterator cbegin() const {return const_iterator(*this,0);} 10136: 10136: const_iterator cend() const {return const_iterator(*this,size());} 10136: 10136: reverse_iterator rbegin() {return reverse_iterator(end());} 10136: 10136: reverse_iterator rend() {return reverse_iterator(begin());} 10136: 10136: const_reverse_iterator rbegin() const {return const_reverse_iterator(end());} 10136: 10136: const_reverse_iterator rend() const {return const_reverse_iterator(begin());} 10136: 10136: const_reverse_iterator crbegin() const {return const_reverse_iterator(end());} 10136: 10136: const_reverse_iterator crend() const {return const_reverse_iterator(begin());} 10136: 10136: reference front() { 10136: ((size()>0)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",972,"size()>0", 10136: # 972 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 972 "../../include/tbb/concurrent_vector.h" 10136: )); 10136: const segment_value_t& segment_value = my_segment[0].template load(); 10136: return (segment_value.template pointer())[0]; 10136: } 10136: 10136: const_reference front() const { 10136: ((size()>0)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",978,"size()>0", 10136: # 978 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 978 "../../include/tbb/concurrent_vector.h" 10136: )); 10136: const segment_value_t& segment_value = my_segment[0].template load(); 10136: return (segment_value.template pointer())[0]; 10136: } 10136: 10136: reference back() { 10136: ((size()>0)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",984,"size()>0", 10136: # 984 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 984 "../../include/tbb/concurrent_vector.h" 10136: )); 10136: return internal_subscript( size()-1 ); 10136: } 10136: 10136: const_reference back() const { 10136: ((size()>0)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",989,"size()>0", 10136: # 989 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 989 "../../include/tbb/concurrent_vector.h" 10136: )); 10136: return internal_subscript( size()-1 ); 10136: } 10136: 10136: allocator_type get_allocator() const { return this->my_allocator; } 10136: 10136: 10136: void assign(size_type n, const_reference t) { 10136: clear(); 10136: internal_resize( n, sizeof(T), max_size(), static_cast(&t), &destroy_array, &initialize_array_by ); 10136: } 10136: 10136: 10136: template 10136: void assign(I first, I last) { 10136: clear(); internal_assign_range( first, last, static_cast::is_integer> *>(0) ); 10136: } 10136: 10136: 10136: 10136: void assign(std::initializer_list init_list) { 10136: clear(); internal_assign_iterators( init_list.begin(), init_list.end()); 10136: } 10136: 10136: 10136: 10136: void swap(concurrent_vector &vector) { 10136: using std::swap; 10136: if( this != &vector ) { 10136: concurrent_vector_base_v3::internal_swap(static_cast(vector)); 10136: swap(this->my_allocator, vector.my_allocator); 10136: } 10136: } 10136: 10136: 10136: 10136: void clear() { 10136: internal_clear(&destroy_array); 10136: } 10136: 10136: 10136: ~concurrent_vector() { 10136: segment_t *table = my_segment.load(); 10136: internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load() ); 10136: 10136: } 10136: 10136: const internal::concurrent_vector_base_v3 &internal_vector_base() const { return *this; } 10136: private: 10136: 10136: static void *internal_allocator(internal::concurrent_vector_base_v3 &vb, size_t k) { 10136: return static_cast&>(vb).my_allocator.allocate(k); 10136: } 10136: 10136: void internal_free_segments(segment_t table[], segment_index_t k, segment_index_t first_block); 10136: 10136: 10136: T& internal_subscript( size_type index ) const; 10136: 10136: 10136: T& internal_subscript_with_exceptions( size_type index ) const; 10136: 10136: 10136: void internal_assign_n(size_type n, const_pointer p) { 10136: internal_resize( n, sizeof(T), max_size(), static_cast(p), &destroy_array, p? &initialize_array_by : &initialize_array ); 10136: } 10136: 10136: 10136: template class is_integer_tag; 10136: 10136: 10136: template 10136: void internal_assign_range(I first, I last, is_integer_tag *) { 10136: internal_assign_n(static_cast(first), &static_cast(last)); 10136: } 10136: 10136: template 10136: void internal_assign_range(I first, I last, is_integer_tag *) { 10136: internal_assign_iterators(first, last); 10136: } 10136: 10136: template 10136: void internal_assign_iterators(I first, I last); 10136: 10136: 10136: 10136: 10136: static void initialize_array( void* begin, const void*, size_type n ); 10136: 10136: 10136: static void initialize_array_by( void* begin, const void* src, size_type n ); 10136: 10136: 10136: static void copy_array( void* dst, const void* src, size_type n ); 10136: 10136: 10136: 10136: static void move_array_if_noexcept( void* dst, const void* src, size_type n ); 10136: 10136: 10136: 10136: 10136: static void move_array( void* dst, const void* src, size_type n ); 10136: 10136: 10136: static void move_assign_array( void* dst, const void* src, size_type n ); 10136: 10136: 10136: template 10136: static void copy_range( void* dst, const void* p_type_erased_iterator, size_type n ); 10136: 10136: 10136: static void assign_array( void* dst, const void* src, size_type n ); 10136: 10136: 10136: static void destroy_array( void* begin, size_type n ); 10136: 10136: 10136: class internal_loop_guide : internal::no_copy { 10136: public: 10136: const pointer array; 10136: const size_type n; 10136: size_type i; 10136: 10136: static const T* as_const_pointer(const void *ptr) { return static_cast(ptr); } 10136: static T* as_pointer(const void *src) { return static_cast(const_cast(src)); } 10136: 10136: internal_loop_guide(size_type ntrials, void *ptr) 10136: : array(as_pointer(ptr)), n(ntrials), i(0) {} 10136: void init() { for(; i < n; ++i) new( &array[i] ) T(); } 10136: void init(const void *src) { for(; i < n; ++i) new( &array[i] ) T(*as_const_pointer(src)); } 10136: void copy(const void *src) { for(; i < n; ++i) new( &array[i] ) T(as_const_pointer(src)[i]); } 10136: void assign(const void *src) { for(; i < n; ++i) array[i] = as_const_pointer(src)[i]; } 10136: 10136: void move_assign(const void *src) { for(; i < n; ++i) array[i] = std::move(as_pointer(src)[i]); } 10136: void move_construct(const void *src) { for(; i < n; ++i) new( &array[i] ) T( std::move(as_pointer(src)[i]) ); } 10136: 10136: 10136: void move_construct_if_noexcept(const void *src) { for(; i < n; ++i) new( &array[i] ) T( std::move_if_noexcept(as_pointer(src)[i]) ); } 10136: 10136: 10136: 10136: template void iterate(I &src) { for(; i < n; ++i, ++src) new( &array[i] ) T( *src ); } 10136: ~internal_loop_guide() { 10136: if(i < n) { 10136: internal::handle_unconstructed_elements(array+i, n-i); 10136: } 10136: } 10136: }; 10136: 10136: struct push_back_helper : internal::no_copy{ 10136: struct element_construction_guard : internal::no_copy{ 10136: pointer element; 10136: 10136: element_construction_guard(pointer an_element) : element (an_element){} 10136: void dismiss(){ element = 10136: # 1144 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 1144 "../../include/tbb/concurrent_vector.h" 10136: ; } 10136: ~element_construction_guard(){ 10136: if (element){ 10136: internal::handle_unconstructed_elements(element, 1); 10136: } 10136: } 10136: }; 10136: 10136: concurrent_vector & v; 10136: size_type k; 10136: element_construction_guard g; 10136: 10136: push_back_helper(concurrent_vector & vector) : 10136: v(vector), 10136: g (static_cast(v.internal_push_back(sizeof(T),k))) 10136: {} 10136: 10136: pointer internal_push_back_result(){ return g.element;} 10136: iterator return_iterator_and_dismiss(){ 10136: pointer ptr = g.element; 10136: g.dismiss(); 10136: return iterator(v, k, ptr); 10136: } 10136: }; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void concurrent_vector::shrink_to_fit() { 10136: internal_segments_table old; 10136: try { 10136: internal_array_op2 copy_or_move_array = 10136: 10136: &move_array_if_noexcept 10136: 10136: 10136: 10136: ; 10136: if( internal_compact( sizeof(T), &old, &destroy_array, copy_or_move_array ) ) 10136: internal_free_segments( old.table, pointers_per_long_table, old.first_block ); 10136: } catch(...) { 10136: if( old.first_block ) 10136: internal_free_segments( old.table, 1, old.first_block ); 10136: throw; 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: template 10136: void concurrent_vector::internal_free_segments(segment_t table[], segment_index_t k, segment_index_t first_block) { 10136: 10136: while( k > first_block ) { 10136: --k; 10136: segment_value_t segment_value = table[k].load(); 10136: table[k].store(segment_not_used()); 10136: if( segment_value == segment_allocated() ) 10136: this->my_allocator.deallocate( (segment_value.pointer()), segment_size(k) ); 10136: } 10136: segment_value_t segment_value = table[0].load(); 10136: if( segment_value == segment_allocated() ) { 10136: ((first_block > 0)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",1209,"first_block > 0", 10136: # 1209 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 1209 "../../include/tbb/concurrent_vector.h" 10136: )); 10136: while(k > 0) table[--k].store(segment_not_used()); 10136: this->my_allocator.deallocate( (segment_value.pointer()), segment_size(first_block) ); 10136: } 10136: } 10136: 10136: template 10136: T& concurrent_vector::internal_subscript( size_type index ) const { 10136: 10136: ((index < my_early_size)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",1218,"index < my_early_size","index out of bounds")); 10136: size_type j = index; 10136: segment_index_t k = segment_base_index_of( j ); 10136: ((my_segment.load() != my_storage || k < pointers_per_short_table)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",1221,"my_segment.load() != my_storage || k < pointers_per_short_table","index is being allocated")); 10136: 10136: 10136: 10136: 10136: segment_value_t segment_value = my_segment[k].template load(); 10136: ((segment_value != segment_allocation_failed())?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",1227,"segment_value != segment_allocation_failed()","the instance is broken by bad allocation. Use at() instead")); 10136: ((segment_value != segment_not_used())?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",1228,"segment_value != segment_not_used()","index is being allocated")); 10136: return (( segment_value.pointer()))[j]; 10136: } 10136: 10136: template 10136: T& concurrent_vector::internal_subscript_with_exceptions( size_type index ) const { 10136: if( index >= my_early_size ) 10136: internal::throw_exception(internal::eid_out_of_range); 10136: size_type j = index; 10136: segment_index_t k = segment_base_index_of( j ); 10136: 10136: if( my_segment.load() == my_storage && k >= pointers_per_short_table ) 10136: internal::throw_exception(internal::eid_segment_range_error); 10136: 10136: 10136: 10136: 10136: segment_value_t segment_value = my_segment[k].template load(); 10136: enforce_segment_allocated(segment_value, internal::eid_index_range_error); 10136: return (segment_value.pointer())[j]; 10136: } 10136: 10136: template template 10136: void concurrent_vector::internal_assign_iterators(I first, I last) { 10136: ((my_early_size == 0)?((void)0) : tbb::assertion_failure("../../include/tbb/concurrent_vector.h",1252,"my_early_size == 0", 10136: # 1252 "../../include/tbb/concurrent_vector.h" 3 4 10136: __null 10136: # 1252 "../../include/tbb/concurrent_vector.h" 10136: )); 10136: size_type n = std::distance(first, last); 10136: if( !n ) return; 10136: internal_reserve(n, sizeof(T), max_size()); 10136: my_early_size = n; 10136: segment_index_t k = 0; 10136: 10136: size_type sz = segment_size( my_first_block ); 10136: while( sz < n ) { 10136: internal_loop_guide loop(sz, my_segment[k].template load().template pointer()); 10136: loop.iterate(first); 10136: n -= sz; 10136: if( !k ) k = my_first_block; 10136: else { ++k; sz <<= 1; } 10136: } 10136: internal_loop_guide loop(n, my_segment[k].template load().template pointer()); 10136: loop.iterate(first); 10136: } 10136: 10136: template 10136: void concurrent_vector::initialize_array( void* begin, const void *, size_type n ) { 10136: internal_loop_guide loop(n, begin); loop.init(); 10136: } 10136: 10136: template 10136: void concurrent_vector::initialize_array_by( void* begin, const void *src, size_type n ) { 10136: internal_loop_guide loop(n, begin); loop.init(src); 10136: } 10136: 10136: template 10136: void concurrent_vector::copy_array( void* dst, const void* src, size_type n ) { 10136: internal_loop_guide loop(n, dst); loop.copy(src); 10136: } 10136: 10136: 10136: template 10136: void concurrent_vector::move_array( void* dst, const void* src, size_type n ) { 10136: internal_loop_guide loop(n, dst); loop.move_construct(src); 10136: } 10136: template 10136: void concurrent_vector::move_assign_array( void* dst, const void* src, size_type n ) { 10136: internal_loop_guide loop(n, dst); loop.move_assign(src); 10136: } 10136: 10136: 10136: 10136: template 10136: void concurrent_vector::move_array_if_noexcept( void* dst, const void* src, size_type n ) { 10136: internal_loop_guide loop(n, dst); loop.move_construct_if_noexcept(src); 10136: } 10136: 10136: 10136: template 10136: template 10136: void concurrent_vector::copy_range( void* dst, const void* p_type_erased_iterator, size_type n ){ 10136: I & iterator ((*const_cast(static_cast(p_type_erased_iterator)))); 10136: internal_loop_guide loop(n, dst); loop.iterate(iterator); 10136: } 10136: 10136: template 10136: void concurrent_vector::assign_array( void* dst, const void* src, size_type n ) { 10136: internal_loop_guide loop(n, dst); loop.assign(src); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void concurrent_vector::destroy_array( void* begin, size_type n ) { 10136: T* array = static_cast(begin); 10136: for( size_type j=n; j>0; --j ) 10136: array[j-1].~T(); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline bool operator==(const concurrent_vector &a, const concurrent_vector &b) { 10136: 10136: 10136: if(a.size() != b.size()) return false; 10136: typename concurrent_vector::const_iterator i(a.begin()); 10136: typename concurrent_vector::const_iterator j(b.begin()); 10136: for(; i != a.end(); ++i, ++j) 10136: if( !(*i == *j) ) return false; 10136: return true; 10136: } 10136: 10136: template 10136: inline bool operator!=(const concurrent_vector &a, const concurrent_vector &b) 10136: { return !(a == b); } 10136: 10136: template 10136: inline bool operator<(const concurrent_vector &a, const concurrent_vector &b) 10136: { return (std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end())); } 10136: 10136: template 10136: inline bool operator>(const concurrent_vector &a, const concurrent_vector &b) 10136: { return b < a; } 10136: 10136: template 10136: inline bool operator<=(const concurrent_vector &a, const concurrent_vector &b) 10136: { return !(b < a); } 10136: 10136: template 10136: inline bool operator>=(const concurrent_vector &a, const concurrent_vector &b) 10136: { return !(a < b); } 10136: 10136: template 10136: inline void swap(concurrent_vector &a, concurrent_vector &b) 10136: { a.swap( b ); } 10136: 10136: } 10136: # 26 "../../include/tbb/enumerable_thread_specific.h" 2 10136: # 1 "../../include/tbb/tbb_thread.h" 1 10136: # 41 "../../include/tbb/tbb_thread.h" 10136: namespace tbb { namespace internal { 10136: typedef pthread_t thread_id_type; 10136: }} 10136: 10136: 10136: 10136: # 1 "../../include/tbb/internal/_tbb_hash_compare_impl.h" 1 10136: # 27 "../../include/tbb/internal/_tbb_hash_compare_impl.h" 10136: namespace tbb { 10136: namespace interface5 { 10136: namespace internal { 10136: 10136: 10136: template 10136: class hash_compare 10136: { 10136: public: 10136: typedef Hasher hasher; 10136: typedef Key_equality key_equal; 10136: 10136: hash_compare() {} 10136: 10136: hash_compare(Hasher a_hasher) : my_hash_object(a_hasher) {} 10136: 10136: hash_compare(Hasher a_hasher, Key_equality a_keyeq) : my_hash_object(a_hasher), my_key_compare_object(a_keyeq) {} 10136: 10136: size_t operator()(const Key& key) const { 10136: return ((size_t)my_hash_object(key)); 10136: } 10136: 10136: bool operator()(const Key& key1, const Key& key2) const { 10136: 10136: return (!my_key_compare_object(key1, key2)); 10136: } 10136: 10136: Hasher my_hash_object; 10136: Key_equality my_key_compare_object; 10136: }; 10136: 10136: 10136: static const size_t hash_multiplier = tbb::internal::select_size_t_constant<2654435769U, 11400714819323198485ULL>::value; 10136: 10136: } 10136: 10136: 10136: template 10136: inline size_t tbb_hasher( const T& t ) { 10136: return static_cast( t ) * internal::hash_multiplier; 10136: } 10136: template 10136: inline size_t tbb_hasher( P* ptr ) { 10136: size_t const h = reinterpret_cast( ptr ); 10136: return (h >> 3) ^ h; 10136: } 10136: template 10136: inline size_t tbb_hasher( const std::basic_string& s ) { 10136: size_t h = 0; 10136: for( const E* c = s.c_str(); *c; ++c ) 10136: h = static_cast(*c) ^ (h * internal::hash_multiplier); 10136: return h; 10136: } 10136: template 10136: inline size_t tbb_hasher( const std::pair& p ) { 10136: return tbb_hasher(p.first) ^ tbb_hasher(p.second); 10136: } 10136: 10136: } 10136: using interface5::tbb_hasher; 10136: 10136: 10136: template 10136: class tbb_hash 10136: { 10136: public: 10136: tbb_hash() {} 10136: 10136: size_t operator()(const Key& key) const 10136: { 10136: return tbb_hasher(key); 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct tbb_hash_compare { 10136: static size_t hash( const Key& a ) { return tbb_hasher(a); } 10136: static bool equal( const Key& a, const Key& b ) { return a == b; } 10136: }; 10136: 10136: } 10136: # 48 "../../include/tbb/tbb_thread.h" 2 10136: # 1 "../../include/tbb/tick_count.h" 1 10136: # 49 "../../include/tbb/tbb_thread.h" 2 10136: # 63 "../../include/tbb/tbb_thread.h" 10136: namespace tbb { 10136: 10136: namespace internal { 10136: class tbb_thread_v3; 10136: } 10136: 10136: inline void swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ) noexcept(true); 10136: 10136: namespace internal { 10136: 10136: 10136: void* allocate_closure_v3( size_t size ); 10136: 10136: void free_closure_v3( void* ); 10136: 10136: struct thread_closure_base { 10136: void* operator new( size_t size ) {return allocate_closure_v3(size);} 10136: void operator delete( void* ptr ) {free_closure_v3(ptr);} 10136: }; 10136: 10136: template struct thread_closure_0: thread_closure_base { 10136: F function; 10136: 10136: static void* start_routine( void* c ) { 10136: thread_closure_0 *self = static_cast(c); 10136: self->function(); 10136: delete self; 10136: return 0; 10136: } 10136: thread_closure_0( const F& f ) : function(f) {} 10136: }; 10136: 10136: template struct thread_closure_1: thread_closure_base { 10136: F function; 10136: X arg1; 10136: 10136: static void* start_routine( void* c ) { 10136: thread_closure_1 *self = static_cast(c); 10136: self->function(self->arg1); 10136: delete self; 10136: return 0; 10136: } 10136: thread_closure_1( const F& f, const X& x ) : function(f), arg1(x) {} 10136: }; 10136: template struct thread_closure_2: thread_closure_base { 10136: F function; 10136: X arg1; 10136: Y arg2; 10136: 10136: static void* start_routine( void* c ) { 10136: thread_closure_2 *self = static_cast(c); 10136: self->function(self->arg1, self->arg2); 10136: delete self; 10136: return 0; 10136: } 10136: thread_closure_2( const F& f, const X& x, const Y& y ) : function(f), arg1(x), arg2(y) {} 10136: }; 10136: 10136: 10136: class tbb_thread_v3 { 10136: 10136: 10136: 10136: 10136: 10136: 10136: tbb_thread_v3(const tbb_thread_v3&); 10136: public: 10136: 10136: 10136: 10136: typedef pthread_t native_handle_type; 10136: 10136: 10136: class id; 10136: 10136: tbb_thread_v3() noexcept(true) : my_handle(0) 10136: 10136: 10136: 10136: {} 10136: 10136: 10136: template explicit tbb_thread_v3(F f) { 10136: typedef internal::thread_closure_0 closure_type; 10136: internal_start(closure_type::start_routine, new closure_type(f)); 10136: } 10136: 10136: template tbb_thread_v3(F f, X x) { 10136: typedef internal::thread_closure_1 closure_type; 10136: internal_start(closure_type::start_routine, new closure_type(f,x)); 10136: } 10136: 10136: template tbb_thread_v3(F f, X x, Y y) { 10136: typedef internal::thread_closure_2 closure_type; 10136: internal_start(closure_type::start_routine, new closure_type(f,x,y)); 10136: } 10136: 10136: 10136: tbb_thread_v3(tbb_thread_v3&& x) noexcept(true) 10136: : my_handle(x.my_handle) 10136: 10136: 10136: 10136: { 10136: x.internal_wipe(); 10136: } 10136: tbb_thread_v3& operator=(tbb_thread_v3&& x) noexcept(true) { 10136: internal_move(x); 10136: return *this; 10136: } 10136: private: 10136: tbb_thread_v3& operator=(const tbb_thread_v3& x); 10136: public: 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void swap( tbb_thread_v3& t ) noexcept(true) {tbb::swap( *this, t );} 10136: bool joinable() const noexcept(true) {return my_handle!=0; } 10136: 10136: void join(); 10136: 10136: void detach(); 10136: ~tbb_thread_v3() {if( joinable() ) detach();} 10136: inline id get_id() const noexcept(true); 10136: native_handle_type native_handle() { return my_handle; } 10136: # 204 "../../include/tbb/tbb_thread.h" 10136: static unsigned hardware_concurrency() noexcept(true); 10136: private: 10136: native_handle_type my_handle; 10136: 10136: 10136: 10136: 10136: void internal_wipe() noexcept(true) { 10136: my_handle = 0; 10136: 10136: 10136: 10136: } 10136: void internal_move(tbb_thread_v3& x) noexcept(true) { 10136: if (joinable()) detach(); 10136: my_handle = x.my_handle; 10136: 10136: 10136: 10136: x.internal_wipe(); 10136: } 10136: 10136: 10136: void internal_start( void* (*start_routine)( void* ), 10136: void* closure ); 10136: friend void move_v3( tbb_thread_v3& t1, tbb_thread_v3& t2 ); 10136: friend void tbb::swap( tbb_thread_v3& t1, tbb_thread_v3& t2 ) noexcept(true); 10136: }; 10136: 10136: class tbb_thread_v3::id { 10136: thread_id_type my_id; 10136: id( thread_id_type id_ ) : my_id(id_) {} 10136: 10136: friend class tbb_thread_v3; 10136: public: 10136: id() noexcept(true) : my_id(0) {} 10136: 10136: friend bool operator==( tbb_thread_v3::id x, tbb_thread_v3::id y ) noexcept(true); 10136: friend bool operator!=( tbb_thread_v3::id x, tbb_thread_v3::id y ) noexcept(true); 10136: friend bool operator<( tbb_thread_v3::id x, tbb_thread_v3::id y ) noexcept(true); 10136: friend bool operator<=( tbb_thread_v3::id x, tbb_thread_v3::id y ) noexcept(true); 10136: friend bool operator>( tbb_thread_v3::id x, tbb_thread_v3::id y ) noexcept(true); 10136: friend bool operator>=( tbb_thread_v3::id x, tbb_thread_v3::id y ) noexcept(true); 10136: 10136: template 10136: friend std::basic_ostream& 10136: operator<< (std::basic_ostream &out, 10136: tbb_thread_v3::id id) 10136: { 10136: out << id.my_id; 10136: return out; 10136: } 10136: friend tbb_thread_v3::id thread_get_id_v3(); 10136: 10136: friend inline size_t tbb_hasher( const tbb_thread_v3::id& id ) { 10136: static_assert(sizeof(id.my_id) <= sizeof(size_t),"Implementaion assumes that thread_id_type fits into machine word"); 10136: return tbb::tbb_hasher(id.my_id); 10136: } 10136: 10136: 10136: friend id atomic_compare_and_swap(id& location, const id& value, const id& comparand){ 10136: return as_atomic(location.my_id).compare_and_swap(value.my_id, comparand.my_id); 10136: } 10136: }; 10136: 10136: tbb_thread_v3::id tbb_thread_v3::get_id() const noexcept(true) { 10136: 10136: 10136: 10136: return id(my_handle); 10136: 10136: } 10136: 10136: void move_v3( tbb_thread_v3& t1, tbb_thread_v3& t2 ); 10136: tbb_thread_v3::id thread_get_id_v3(); 10136: void thread_yield_v3(); 10136: void thread_sleep_v3(const tick_count::interval_t &i); 10136: 10136: inline bool operator==(tbb_thread_v3::id x, tbb_thread_v3::id y) noexcept(true) 10136: { 10136: return x.my_id == y.my_id; 10136: } 10136: inline bool operator!=(tbb_thread_v3::id x, tbb_thread_v3::id y) noexcept(true) 10136: { 10136: return x.my_id != y.my_id; 10136: } 10136: inline bool operator<(tbb_thread_v3::id x, tbb_thread_v3::id y) noexcept(true) 10136: { 10136: return x.my_id < y.my_id; 10136: } 10136: inline bool operator<=(tbb_thread_v3::id x, tbb_thread_v3::id y) noexcept(true) 10136: { 10136: return x.my_id <= y.my_id; 10136: } 10136: inline bool operator>(tbb_thread_v3::id x, tbb_thread_v3::id y) noexcept(true) 10136: { 10136: return x.my_id > y.my_id; 10136: } 10136: inline bool operator>=(tbb_thread_v3::id x, tbb_thread_v3::id y) noexcept(true) 10136: { 10136: return x.my_id >= y.my_id; 10136: } 10136: 10136: } 10136: 10136: 10136: typedef internal::tbb_thread_v3 tbb_thread; 10136: 10136: using internal::operator==; 10136: using internal::operator!=; 10136: using internal::operator<; 10136: using internal::operator>; 10136: using internal::operator<=; 10136: using internal::operator>=; 10136: 10136: inline void move( tbb_thread& t1, tbb_thread& t2 ) { 10136: internal::move_v3(t1, t2); 10136: } 10136: 10136: inline void swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ) noexcept(true) { 10136: std::swap(t1.my_handle, t2.my_handle); 10136: 10136: 10136: 10136: } 10136: 10136: namespace this_tbb_thread { 10136: inline tbb_thread::id get_id() { return internal::thread_get_id_v3(); } 10136: 10136: inline void yield() { internal::thread_yield_v3(); } 10136: 10136: inline void sleep(const tick_count::interval_t &i) { 10136: internal::thread_sleep_v3(i); 10136: } 10136: } 10136: 10136: } 10136: # 27 "../../include/tbb/enumerable_thread_specific.h" 2 10136: # 45 "../../include/tbb/enumerable_thread_specific.h" 10136: namespace tbb { 10136: 10136: 10136: enum ets_key_usage_type { ets_key_per_instance, ets_no_key }; 10136: 10136: namespace interface6 { 10136: 10136: 10136: template 10136: class enumerable_thread_specific; 10136: 10136: 10136: namespace internal { 10136: 10136: using namespace tbb::internal; 10136: 10136: template 10136: class ets_base: tbb::internal::no_copy { 10136: protected: 10136: typedef tbb_thread::id key_type; 10136: 10136: 10136: 10136: struct slot; 10136: 10136: struct array { 10136: array* next; 10136: size_t lg_size; 10136: slot& at( size_t k ) { 10136: return ((slot*)(void*)(this+1))[k]; 10136: } 10136: size_t size() const {return size_t(1)<>(8*sizeof(size_t)-lg_size); 10136: } 10136: }; 10136: struct slot { 10136: key_type key; 10136: void* ptr; 10136: bool empty() const {return key == key_type();} 10136: bool match( key_type k ) const {return key == k;} 10136: bool claim( key_type k ) { 10136: 10136: return atomic_compare_and_swap(key, k, key_type()) == key_type(); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: atomic my_root; 10136: atomic my_count; 10136: virtual void* create_local() = 0; 10136: virtual void* create_array(size_t _size) = 0; 10136: virtual void free_array(void* ptr, size_t _size) = 0; 10136: array* allocate( size_t lg_size ) { 10136: size_t n = size_t(1)<(create_array( sizeof(array)+n*sizeof(slot) )); 10136: a->lg_size = lg_size; 10136: std::memset( a+1, 0, n*sizeof(slot) ); 10136: return a; 10136: } 10136: void free(array* a) { 10136: size_t n = size_t(1)<<(a->lg_size); 10136: free_array( (void *)a, size_t(sizeof(array)+n*sizeof(slot)) ); 10136: } 10136: 10136: ets_base() {my_root= 10136: # 116 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 116 "../../include/tbb/enumerable_thread_specific.h" 10136: ; my_count=0;} 10136: virtual ~ets_base(); 10136: void* table_lookup( bool& exists ); 10136: void table_clear(); 10136: 10136: 10136: void table_elementwise_copy( const ets_base& other, 10136: void*(*add_element)(ets_base&, void*) ) { 10136: ((!my_root)?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",124,"!my_root", 10136: # 124 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 124 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: ((!my_count)?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",125,"!my_count", 10136: # 125 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 125 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: if( !other.my_root ) return; 10136: array* root = my_root = allocate(other.my_root->lg_size); 10136: root->next = 10136: # 128 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 128 "../../include/tbb/enumerable_thread_specific.h" 10136: ; 10136: my_count = other.my_count; 10136: size_t mask = root->mask(); 10136: for( array* r=other.my_root; r; r=r->next ) { 10136: for( size_t i=0; isize(); ++i ) { 10136: slot& s1 = r->at(i); 10136: if( !s1.empty() ) { 10136: for( size_t j = root->start(tbb::tbb_hash()(s1.key)); ; j=(j+1)&mask ) { 10136: slot& s2 = root->at(j); 10136: if( s2.empty() ) { 10136: s2.ptr = add_element(*this, s1.ptr); 10136: s2.key = s1.key; 10136: break; 10136: } 10136: else if( s2.match(s1.key) ) 10136: break; 10136: } 10136: } 10136: } 10136: } 10136: } 10136: void table_swap( ets_base& other ) { 10136: ((this!=&other)?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",150,"this!=&other","Don't swap an instance with itself")); 10136: tbb::internal::swap(my_root, other.my_root); 10136: tbb::internal::swap(my_count, other.my_count); 10136: } 10136: }; 10136: 10136: template 10136: ets_base::~ets_base() { 10136: ((!my_root)?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",158,"!my_root", 10136: # 158 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 158 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: } 10136: 10136: template 10136: void ets_base::table_clear() { 10136: while( array* r = my_root ) { 10136: my_root = r->next; 10136: free(r); 10136: } 10136: my_count = 0; 10136: } 10136: 10136: template 10136: void* ets_base::table_lookup( bool& exists ) { 10136: const key_type k = tbb::this_tbb_thread::get_id(); 10136: 10136: ((k != key_type())?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",174,"k != key_type()", 10136: # 174 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 174 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: void* found; 10136: size_t h = tbb::tbb_hash()(k); 10136: for( array* r=my_root; r; r=r->next ) { 10136: call_itt_notify(acquired,r); 10136: size_t mask=r->mask(); 10136: for(size_t i = r->start(h); ;i=(i+1)&mask) { 10136: slot& s = r->at(i); 10136: if( s.empty() ) break; 10136: if( s.match(k) ) { 10136: if( r==my_root ) { 10136: 10136: exists = true; 10136: return s.ptr; 10136: } else { 10136: 10136: exists = true; 10136: found = s.ptr; 10136: goto insert; 10136: } 10136: } 10136: } 10136: } 10136: 10136: 10136: 10136: exists = false; 10136: found = create_local(); 10136: { 10136: size_t c = ++my_count; 10136: array* r = my_root; 10136: call_itt_notify(acquired,r); 10136: if( !r || c>r->size()/2 ) { 10136: size_t s = r ? r->lg_size : 2; 10136: while( c>size_t(1)<<(s-1) ) ++s; 10136: array* a = allocate(s); 10136: for(;;) { 10136: a->next = r; 10136: call_itt_notify(releasing,a); 10136: array* new_r = my_root.compare_and_swap(a,r); 10136: if( new_r==r ) break; 10136: call_itt_notify(acquired, new_r); 10136: if( new_r->lg_size>=s ) { 10136: 10136: free(a); 10136: break; 10136: } 10136: r = new_r; 10136: } 10136: } 10136: } 10136: insert: 10136: 10136: 10136: 10136: array* ir = my_root; 10136: call_itt_notify(acquired, ir); 10136: size_t mask = ir->mask(); 10136: for(size_t i = ir->start(h);;i=(i+1)&mask) { 10136: slot& s = ir->at(i); 10136: if( s.empty() ) { 10136: if( s.claim(k) ) { 10136: s.ptr = found; 10136: return found; 10136: } 10136: } 10136: } 10136: } 10136: 10136: 10136: template <> 10136: class ets_base: protected ets_base { 10136: typedef ets_base super; 10136: # 262 "../../include/tbb/enumerable_thread_specific.h" 10136: typedef pthread_key_t tls_key_t; 10136: void create_key() { pthread_key_create(&my_key, 10136: # 263 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 263 "../../include/tbb/enumerable_thread_specific.h" 10136: ); } 10136: void destroy_key() { pthread_key_delete(my_key); } 10136: void set_tls( void * value ) const { pthread_setspecific(my_key, value); } 10136: void* get_tls() const { return pthread_getspecific(my_key); } 10136: 10136: tls_key_t my_key; 10136: virtual void* create_local() override = 0; 10136: virtual void* create_array(size_t _size) override = 0; 10136: virtual void free_array(void* ptr, size_t _size) override = 0; 10136: protected: 10136: ets_base() {create_key();} 10136: ~ets_base() {destroy_key();} 10136: void* table_lookup( bool& exists ) { 10136: void* found = get_tls(); 10136: if( found ) { 10136: exists=true; 10136: } else { 10136: found = super::table_lookup(exists); 10136: set_tls(found); 10136: } 10136: return found; 10136: } 10136: void table_clear() { 10136: destroy_key(); 10136: create_key(); 10136: super::table_clear(); 10136: } 10136: void table_swap( ets_base& other ) { 10136: using std::swap; 10136: ((this!=&other)?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",292,"this!=&other","Don't swap an instance with itself")); 10136: swap(my_key, other.my_key); 10136: super::table_swap(other); 10136: } 10136: }; 10136: 10136: 10136: template< typename Container, typename Value > 10136: class enumerable_thread_specific_iterator 10136: 10136: 10136: 10136: 10136: { 10136: 10136: 10136: Container *my_container; 10136: typename Container::size_type my_index; 10136: mutable Value *my_value; 10136: 10136: template 10136: friend enumerable_thread_specific_iterator 10136: operator+( ptrdiff_t offset, const enumerable_thread_specific_iterator& v ); 10136: 10136: template 10136: friend bool operator==( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ); 10136: 10136: template 10136: friend bool operator<( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ); 10136: 10136: template 10136: friend ptrdiff_t operator-( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ); 10136: 10136: template 10136: friend class enumerable_thread_specific_iterator; 10136: 10136: public: 10136: 10136: enumerable_thread_specific_iterator( const Container &container, typename Container::size_type index ) : 10136: my_container(&const_cast(container)), my_index(index), my_value( 10136: # 334 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 334 "../../include/tbb/enumerable_thread_specific.h" 10136: ) {} 10136: 10136: 10136: enumerable_thread_specific_iterator() : my_container( 10136: # 337 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 337 "../../include/tbb/enumerable_thread_specific.h" 10136: ), my_index(0), my_value( 10136: # 337 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 337 "../../include/tbb/enumerable_thread_specific.h" 10136: ) {} 10136: 10136: template 10136: enumerable_thread_specific_iterator( const enumerable_thread_specific_iterator& other ) : 10136: my_container( other.my_container ), my_index( other.my_index), my_value( const_cast(other.my_value) ) {} 10136: 10136: enumerable_thread_specific_iterator operator+( ptrdiff_t offset ) const { 10136: return enumerable_thread_specific_iterator(*my_container, my_index + offset); 10136: } 10136: 10136: enumerable_thread_specific_iterator &operator+=( ptrdiff_t offset ) { 10136: my_index += offset; 10136: my_value = 10136: # 349 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 349 "../../include/tbb/enumerable_thread_specific.h" 10136: ; 10136: return *this; 10136: } 10136: 10136: enumerable_thread_specific_iterator operator-( ptrdiff_t offset ) const { 10136: return enumerable_thread_specific_iterator( *my_container, my_index-offset ); 10136: } 10136: 10136: enumerable_thread_specific_iterator &operator-=( ptrdiff_t offset ) { 10136: my_index -= offset; 10136: my_value = 10136: # 359 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 359 "../../include/tbb/enumerable_thread_specific.h" 10136: ; 10136: return *this; 10136: } 10136: 10136: Value& operator*() const { 10136: Value* value = my_value; 10136: if( !value ) { 10136: value = my_value = (*my_container)[my_index].value(); 10136: } 10136: ((value==(*my_container)[my_index].value())?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",368,"value==(*my_container)[my_index].value()","corrupt cache")); 10136: return *value; 10136: } 10136: 10136: Value& operator[]( ptrdiff_t k ) const { 10136: return (*my_container)[my_index + k].value; 10136: } 10136: 10136: Value* operator->() const {return &operator*();} 10136: 10136: enumerable_thread_specific_iterator& operator++() { 10136: ++my_index; 10136: my_value = 10136: # 380 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 380 "../../include/tbb/enumerable_thread_specific.h" 10136: ; 10136: return *this; 10136: } 10136: 10136: enumerable_thread_specific_iterator& operator--() { 10136: --my_index; 10136: my_value = 10136: # 386 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 386 "../../include/tbb/enumerable_thread_specific.h" 10136: ; 10136: return *this; 10136: } 10136: 10136: 10136: enumerable_thread_specific_iterator operator++(int) { 10136: enumerable_thread_specific_iterator result = *this; 10136: ++my_index; 10136: my_value = 10136: # 394 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 394 "../../include/tbb/enumerable_thread_specific.h" 10136: ; 10136: return result; 10136: } 10136: 10136: 10136: enumerable_thread_specific_iterator operator--(int) { 10136: enumerable_thread_specific_iterator result = *this; 10136: --my_index; 10136: my_value = 10136: # 402 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 402 "../../include/tbb/enumerable_thread_specific.h" 10136: ; 10136: return result; 10136: } 10136: 10136: 10136: typedef ptrdiff_t difference_type; 10136: typedef Value value_type; 10136: typedef Value* pointer; 10136: typedef Value& reference; 10136: typedef std::random_access_iterator_tag iterator_category; 10136: }; 10136: 10136: template 10136: enumerable_thread_specific_iterator 10136: operator+( ptrdiff_t offset, const enumerable_thread_specific_iterator& v ) { 10136: return enumerable_thread_specific_iterator( v.my_container, v.my_index + offset ); 10136: } 10136: 10136: template 10136: bool operator==( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ) { 10136: return i.my_index==j.my_index && i.my_container == j.my_container; 10136: } 10136: 10136: template 10136: bool operator!=( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ) { 10136: return !(i==j); 10136: } 10136: 10136: template 10136: bool operator<( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ) { 10136: return i.my_index 10136: bool operator>( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ) { 10136: return j 10136: bool operator>=( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ) { 10136: return !(i 10136: bool operator<=( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ) { 10136: return !(j 10136: ptrdiff_t operator-( const enumerable_thread_specific_iterator& i, 10136: const enumerable_thread_specific_iterator& j ) { 10136: return i.my_index-j.my_index; 10136: } 10136: 10136: template 10136: class segmented_iterator 10136: 10136: 10136: 10136: { 10136: template 10136: friend bool operator==(const segmented_iterator& i, const segmented_iterator& j); 10136: 10136: template 10136: friend bool operator!=(const segmented_iterator& i, const segmented_iterator& j); 10136: 10136: template 10136: friend class segmented_iterator; 10136: 10136: public: 10136: 10136: segmented_iterator() {my_segcont = 10136: # 479 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 479 "../../include/tbb/enumerable_thread_specific.h" 10136: ;} 10136: 10136: segmented_iterator( const SegmentedContainer& _segmented_container ) : 10136: my_segcont(const_cast(&_segmented_container)), 10136: outer_iter(my_segcont->end()) { } 10136: 10136: ~segmented_iterator() {} 10136: 10136: typedef typename SegmentedContainer::iterator outer_iterator; 10136: typedef typename SegmentedContainer::value_type InnerContainer; 10136: typedef typename InnerContainer::iterator inner_iterator; 10136: 10136: 10136: typedef ptrdiff_t difference_type; 10136: typedef Value value_type; 10136: typedef typename SegmentedContainer::size_type size_type; 10136: typedef Value* pointer; 10136: typedef Value& reference; 10136: typedef std::input_iterator_tag iterator_category; 10136: 10136: 10136: template 10136: segmented_iterator(const segmented_iterator& other) : 10136: my_segcont(other.my_segcont), 10136: outer_iter(other.outer_iter), 10136: 10136: inner_iter(other.inner_iter) 10136: {} 10136: 10136: 10136: template 10136: segmented_iterator& operator=( const segmented_iterator& other) { 10136: if(this != &other) { 10136: my_segcont = other.my_segcont; 10136: outer_iter = other.outer_iter; 10136: if(outer_iter != my_segcont->end()) inner_iter = other.inner_iter; 10136: } 10136: return *this; 10136: } 10136: 10136: 10136: 10136: 10136: segmented_iterator& operator=(const outer_iterator& new_outer_iter) { 10136: ((my_segcont != 10136: # 523 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 523 "../../include/tbb/enumerable_thread_specific.h" 10136: )?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",523,"my_segcont != __null", 10136: # 523 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 523 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: 10136: for(outer_iter = new_outer_iter ;outer_iter!=my_segcont->end(); ++outer_iter) { 10136: if( !outer_iter->empty() ) { 10136: inner_iter = outer_iter->begin(); 10136: break; 10136: } 10136: } 10136: return *this; 10136: } 10136: 10136: 10136: segmented_iterator& operator++() { 10136: advance_me(); 10136: return *this; 10136: } 10136: 10136: 10136: segmented_iterator operator++(int) { 10136: segmented_iterator tmp = *this; 10136: operator++(); 10136: return tmp; 10136: } 10136: 10136: bool operator==(const outer_iterator& other_outer) const { 10136: ((my_segcont != 10136: # 548 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 548 "../../include/tbb/enumerable_thread_specific.h" 10136: )?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",548,"my_segcont != __null", 10136: # 548 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 548 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: return (outer_iter == other_outer && 10136: (outer_iter == my_segcont->end() || inner_iter == outer_iter->begin())); 10136: } 10136: 10136: bool operator!=(const outer_iterator& other_outer) const { 10136: return !operator==(other_outer); 10136: 10136: } 10136: 10136: 10136: reference operator*() const { 10136: ((my_segcont != 10136: # 560 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 560 "../../include/tbb/enumerable_thread_specific.h" 10136: )?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",560,"my_segcont != __null", 10136: # 560 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 560 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: ((outer_iter != my_segcont->end())?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",561,"outer_iter != my_segcont->end()","Dereferencing a pointer at end of container")); 10136: ((inner_iter != outer_iter->end())?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",562,"inner_iter != outer_iter->end()", 10136: # 562 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 562 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: return *inner_iter; 10136: } 10136: 10136: 10136: pointer operator->() const { return &operator*();} 10136: 10136: private: 10136: SegmentedContainer* my_segcont; 10136: outer_iterator outer_iter; 10136: inner_iterator inner_iter; 10136: 10136: void advance_me() { 10136: ((my_segcont != 10136: # 575 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 575 "../../include/tbb/enumerable_thread_specific.h" 10136: )?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",575,"my_segcont != __null", 10136: # 575 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 575 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: ((outer_iter != my_segcont->end())?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",576,"outer_iter != my_segcont->end()", 10136: # 576 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 576 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: ((inner_iter != outer_iter->end())?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",577,"inner_iter != outer_iter->end()", 10136: # 577 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 577 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: ++inner_iter; 10136: while(inner_iter == outer_iter->end() && ++outer_iter != my_segcont->end()) { 10136: inner_iter = outer_iter->begin(); 10136: } 10136: } 10136: }; 10136: 10136: template 10136: bool operator==( const segmented_iterator& i, 10136: const segmented_iterator& j ) { 10136: if(i.my_segcont != j.my_segcont) return false; 10136: if(i.my_segcont == 10136: # 589 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 589 "../../include/tbb/enumerable_thread_specific.h" 10136: ) return true; 10136: if(i.outer_iter != j.outer_iter) return false; 10136: if(i.outer_iter == i.my_segcont->end()) return true; 10136: return i.inner_iter == j.inner_iter; 10136: } 10136: 10136: 10136: template 10136: bool operator!=( const segmented_iterator& i, 10136: const segmented_iterator& j ) { 10136: return !(i==j); 10136: } 10136: 10136: template 10136: struct construct_by_default: tbb::internal::no_assign { 10136: void construct(void*where) {new(where) T();} 10136: construct_by_default( int ) {} 10136: }; 10136: 10136: template 10136: struct construct_by_exemplar: tbb::internal::no_assign { 10136: const T exemplar; 10136: void construct(void*where) {new(where) T(exemplar);} 10136: construct_by_exemplar( const T& t ) : exemplar(t) {} 10136: 10136: construct_by_exemplar( T&& t ) : exemplar(std::move(t)) {} 10136: 10136: }; 10136: 10136: template 10136: struct construct_by_finit: tbb::internal::no_assign { 10136: Finit f; 10136: void construct(void* where) {new(where) T(f());} 10136: construct_by_finit( const Finit& f_ ) : f(f_) {} 10136: 10136: construct_by_finit( Finit&& f_ ) : f(std::move(f_)) {} 10136: 10136: }; 10136: 10136: 10136: template 10136: struct construct_by_args: tbb::internal::no_assign { 10136: internal::stored_pack pack; 10136: void construct(void* where) { 10136: internal::call( [where](const typename strip

::type&... args ){ 10136: new(where) T(args...); 10136: }, pack ); 10136: } 10136: construct_by_args( P&& ... args ) : pack(std::forward

(args)...) {} 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: class callback_base { 10136: public: 10136: 10136: virtual callback_base* clone() const = 0; 10136: 10136: virtual void destroy() = 0; 10136: 10136: virtual ~callback_base() { } 10136: 10136: virtual void construct(void* where) = 0; 10136: }; 10136: 10136: template 10136: class callback_leaf: public callback_base, Constructor { 10136: 10136: template callback_leaf( P&& ... params ) : Constructor(std::forward

(params)...) {} 10136: 10136: 10136: 10136: 10136: typedef typename tbb::tbb_allocator my_allocator_type; 10136: 10136: callback_base* clone() const override { 10136: return make(*this); 10136: } 10136: 10136: void destroy() override { 10136: my_allocator_type().destroy(this); 10136: my_allocator_type().deallocate(this,1); 10136: } 10136: 10136: void construct(void* where) override { 10136: Constructor::construct(where); 10136: } 10136: public: 10136: 10136: template 10136: static callback_base* make( P&& ... params ) { 10136: void* where = my_allocator_type().allocate(1); 10136: return new(where) callback_leaf( std::forward

(params)... ); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: }; 10136: # 703 "../../include/tbb/enumerable_thread_specific.h" 10136: template 10136: struct ets_element { 10136: tbb::aligned_space my_space; 10136: bool is_built; 10136: ets_element() { is_built = false; } 10136: U* value() { return my_space.begin(); } 10136: U* value_committed() { is_built = true; return my_space.begin(); } 10136: ~ets_element() { 10136: if(is_built) { 10136: my_space.begin()->~U(); 10136: is_built = false; 10136: } 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: template struct is_compatible_ets { static const bool value = false; }; 10136: template 10136: struct is_compatible_ets< T, enumerable_thread_specific > { static const bool value = internal::is_same_type::value; }; 10136: 10136: 10136: 10136: template 10136: class is_callable_no_args { 10136: private: 10136: typedef char yes[1]; 10136: typedef char no [2]; 10136: 10136: template static yes& decide( decltype(declval()())* ); 10136: template static no& decide(...); 10136: public: 10136: static const bool value = (sizeof(decide( 10136: # 736 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 736 "../../include/tbb/enumerable_thread_specific.h" 10136: )) == sizeof(yes)); 10136: }; 10136: 10136: 10136: } 10136: # 763 "../../include/tbb/enumerable_thread_specific.h" 10136: template , 10136: ets_key_usage_type ETS_key_type=ets_no_key > 10136: class enumerable_thread_specific: internal::ets_base { 10136: 10136: template friend class enumerable_thread_specific; 10136: 10136: typedef internal::padded< internal::ets_element > padded_element; 10136: 10136: 10136: template 10136: class generic_range_type: public blocked_range { 10136: public: 10136: typedef T value_type; 10136: typedef T& reference; 10136: typedef const T& const_reference; 10136: typedef I iterator; 10136: typedef ptrdiff_t difference_type; 10136: generic_range_type( I begin_, I end_, size_t grainsize_ = 1) : blocked_range(begin_,end_,grainsize_) {} 10136: template 10136: generic_range_type( const generic_range_type& r) : blocked_range(r.begin(),r.end(),r.grainsize()) {} 10136: generic_range_type( generic_range_type& r, split ) : blocked_range(r,split()) {} 10136: }; 10136: 10136: typedef typename Allocator::template rebind< padded_element >::other padded_allocator_type; 10136: typedef tbb::concurrent_vector< padded_element, padded_allocator_type > internal_collection_type; 10136: 10136: internal::callback_base *my_construct_callback; 10136: 10136: internal_collection_type my_locals; 10136: 10136: 10136: 10136: void* create_local() override { 10136: padded_element& lref = *my_locals.grow_by(1); 10136: my_construct_callback->construct(lref.value()); 10136: return lref.value_committed(); 10136: } 10136: 10136: static void* create_local_by_copy( internal::ets_base& base, void* p ) { 10136: enumerable_thread_specific& ets = static_cast(base); 10136: padded_element& lref = *ets.my_locals.grow_by(1); 10136: new(lref.value()) T(*static_cast(p)); 10136: return lref.value_committed(); 10136: } 10136: 10136: 10136: static void* create_local_by_move( internal::ets_base& base, void* p ) { 10136: enumerable_thread_specific& ets = static_cast(base); 10136: padded_element& lref = *ets.my_locals.grow_by(1); 10136: new(lref.value()) T(std::move(*static_cast(p))); 10136: return lref.value_committed(); 10136: } 10136: 10136: 10136: typedef typename Allocator::template rebind< uintptr_t >::other array_allocator_type; 10136: 10136: 10136: void* create_array(size_t _size) override { 10136: size_t nelements = (_size + sizeof(uintptr_t) -1) / sizeof(uintptr_t); 10136: return array_allocator_type().allocate(nelements); 10136: } 10136: 10136: void free_array( void* _ptr, size_t _size) override { 10136: size_t nelements = (_size + sizeof(uintptr_t) -1) / sizeof(uintptr_t); 10136: array_allocator_type().deallocate( reinterpret_cast(_ptr),nelements); 10136: } 10136: 10136: public: 10136: 10136: 10136: typedef Allocator allocator_type; 10136: typedef T value_type; 10136: typedef T& reference; 10136: typedef const T& const_reference; 10136: typedef T* pointer; 10136: typedef const T* const_pointer; 10136: typedef typename internal_collection_type::size_type size_type; 10136: typedef typename internal_collection_type::difference_type difference_type; 10136: 10136: 10136: typedef typename internal::enumerable_thread_specific_iterator< internal_collection_type, value_type > iterator; 10136: typedef typename internal::enumerable_thread_specific_iterator< internal_collection_type, const value_type > const_iterator; 10136: 10136: 10136: typedef generic_range_type< iterator > range_type; 10136: typedef generic_range_type< const_iterator > const_range_type; 10136: 10136: 10136: enumerable_thread_specific() : my_construct_callback( 10136: internal::callback_leaf >::make( 0) 10136: ){} 10136: 10136: 10136: template ::type>::value>::type 10136: 10136: > 10136: explicit enumerable_thread_specific( Finit finit ) : my_construct_callback( 10136: internal::callback_leaf >::make( tbb::internal::move(finit) ) 10136: ){} 10136: 10136: 10136: explicit enumerable_thread_specific( const T& exemplar ) : my_construct_callback( 10136: internal::callback_leaf >::make( exemplar ) 10136: ){} 10136: 10136: 10136: explicit enumerable_thread_specific( T&& exemplar ) : my_construct_callback( 10136: internal::callback_leaf >::make( std::move(exemplar) ) 10136: ){} 10136: 10136: 10136: template ::type>::value 10136: && !internal::is_compatible_ets::type>::value 10136: && !internal::is_same_type::type>::value 10136: >::type> 10136: enumerable_thread_specific( P1&& arg1, P&& ... args ) : my_construct_callback( 10136: internal::callback_leaf >::make( std::forward(arg1), std::forward

(args)... ) 10136: ){} 10136: 10136: 10136: 10136: ~enumerable_thread_specific() { 10136: if(my_construct_callback) my_construct_callback->destroy(); 10136: 10136: this->internal::ets_base::table_clear(); 10136: } 10136: 10136: 10136: reference local() { 10136: bool exists; 10136: return local(exists); 10136: } 10136: 10136: 10136: reference local(bool& exists) { 10136: void* ptr = this->table_lookup(exists); 10136: return *(T*)ptr; 10136: } 10136: 10136: 10136: size_type size() const { return my_locals.size(); } 10136: 10136: 10136: bool empty() const { return my_locals.empty(); } 10136: 10136: 10136: iterator begin() { return iterator( my_locals, 0 ); } 10136: 10136: iterator end() { return iterator(my_locals, my_locals.size() ); } 10136: 10136: 10136: const_iterator begin() const { return const_iterator(my_locals, 0); } 10136: 10136: 10136: const_iterator end() const { return const_iterator(my_locals, my_locals.size()); } 10136: 10136: 10136: range_type range( size_t grainsize=1 ) { return range_type( begin(), end(), grainsize ); } 10136: 10136: 10136: const_range_type range( size_t grainsize=1 ) const { return const_range_type( begin(), end(), grainsize ); } 10136: 10136: 10136: void clear() { 10136: my_locals.clear(); 10136: this->table_clear(); 10136: 10136: } 10136: 10136: private: 10136: 10136: template 10136: void internal_copy(const enumerable_thread_specific& other) { 10136: 10136: 10136: static_assert((internal::is_compatible_ets::type>::value),"is_compatible_ets fails"); 10136: 10136: 10136: my_construct_callback = other.my_construct_callback->clone(); 10136: ((my_locals.size()==0)?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",946,"my_locals.size()==0", 10136: # 946 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 946 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: my_locals.reserve(other.size()); 10136: this->table_elementwise_copy( other, create_local_by_copy ); 10136: } 10136: 10136: void internal_swap(enumerable_thread_specific& other) { 10136: using std::swap; 10136: ((this!=&other)?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",953,"this!=&other", 10136: # 953 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 953 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: swap(my_construct_callback, other.my_construct_callback); 10136: 10136: 10136: swap(my_locals, other.my_locals); 10136: this->internal::ets_base::table_swap(other); 10136: } 10136: 10136: 10136: template 10136: void internal_move(enumerable_thread_specific&& other) { 10136: 10136: 10136: static_assert((internal::is_compatible_ets::type>::value),"is_compatible_ets fails"); 10136: 10136: my_construct_callback = other.my_construct_callback; 10136: other.my_construct_callback = 10136: # 969 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 969 "../../include/tbb/enumerable_thread_specific.h" 10136: ; 10136: ((my_locals.size()==0)?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",970,"my_locals.size()==0", 10136: # 970 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 970 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: my_locals.reserve(other.size()); 10136: this->table_elementwise_copy( other, create_local_by_move ); 10136: } 10136: 10136: 10136: public: 10136: 10136: enumerable_thread_specific( const enumerable_thread_specific& other ) 10136: : internal::ets_base() 10136: { 10136: internal_copy(other); 10136: } 10136: 10136: template 10136: enumerable_thread_specific( const enumerable_thread_specific& other ) 10136: { 10136: internal_copy(other); 10136: } 10136: 10136: 10136: enumerable_thread_specific( enumerable_thread_specific&& other ) : my_construct_callback() 10136: { 10136: internal_swap(other); 10136: } 10136: 10136: template 10136: enumerable_thread_specific( enumerable_thread_specific&& other ) : my_construct_callback() 10136: { 10136: internal_move(std::move(other)); 10136: } 10136: 10136: 10136: enumerable_thread_specific& operator=( const enumerable_thread_specific& other ) 10136: { 10136: if( this != &other ) { 10136: this->clear(); 10136: my_construct_callback->destroy(); 10136: internal_copy( other ); 10136: } 10136: return *this; 10136: } 10136: 10136: template 10136: enumerable_thread_specific& operator=( const enumerable_thread_specific& other ) 10136: { 10136: ((static_cast(this)!=static_cast(&other))?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",1016,"static_cast(this)!=static_cast(&other)", 10136: # 1016 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 1016 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: this->clear(); 10136: my_construct_callback->destroy(); 10136: internal_copy(other); 10136: return *this; 10136: } 10136: 10136: 10136: enumerable_thread_specific& operator=( enumerable_thread_specific&& other ) 10136: { 10136: if( this != &other ) 10136: internal_swap(other); 10136: return *this; 10136: } 10136: 10136: template 10136: enumerable_thread_specific& operator=( enumerable_thread_specific&& other ) 10136: { 10136: ((static_cast(this)!=static_cast(&other))?((void)0) : tbb::assertion_failure("../../include/tbb/enumerable_thread_specific.h",1034,"static_cast(this)!=static_cast(&other)", 10136: # 1034 "../../include/tbb/enumerable_thread_specific.h" 3 4 10136: __null 10136: # 1034 "../../include/tbb/enumerable_thread_specific.h" 10136: )); 10136: this->clear(); 10136: my_construct_callback->destroy(); 10136: internal_move(std::move(other)); 10136: return *this; 10136: } 10136: 10136: 10136: 10136: template 10136: T combine(combine_func_t f_combine) { 10136: if(begin() == end()) { 10136: internal::ets_element location; 10136: my_construct_callback->construct(location.value()); 10136: return *location.value_committed(); 10136: } 10136: const_iterator ci = begin(); 10136: T my_result = *ci; 10136: while(++ci != end()) 10136: my_result = f_combine( my_result, *ci ); 10136: return my_result; 10136: } 10136: 10136: 10136: template 10136: void combine_each(combine_func_t f_combine) { 10136: for(iterator ci = begin(); ci != end(); ++ci) { 10136: f_combine( *ci ); 10136: } 10136: } 10136: 10136: }; 10136: 10136: template< typename Container > 10136: class flattened2d { 10136: 10136: 10136: typedef typename Container::value_type conval_type; 10136: 10136: public: 10136: 10136: 10136: typedef typename conval_type::size_type size_type; 10136: typedef typename conval_type::difference_type difference_type; 10136: typedef typename conval_type::allocator_type allocator_type; 10136: typedef typename conval_type::value_type value_type; 10136: typedef typename conval_type::reference reference; 10136: typedef typename conval_type::const_reference const_reference; 10136: typedef typename conval_type::pointer pointer; 10136: typedef typename conval_type::const_pointer const_pointer; 10136: 10136: typedef typename internal::segmented_iterator iterator; 10136: typedef typename internal::segmented_iterator const_iterator; 10136: 10136: flattened2d( const Container &c, typename Container::const_iterator b, typename Container::const_iterator e ) : 10136: my_container(const_cast(&c)), my_begin(b), my_end(e) { } 10136: 10136: explicit flattened2d( const Container &c ) : 10136: my_container(const_cast(&c)), my_begin(c.begin()), my_end(c.end()) { } 10136: 10136: iterator begin() { return iterator(*my_container) = my_begin; } 10136: iterator end() { return iterator(*my_container) = my_end; } 10136: const_iterator begin() const { return const_iterator(*my_container) = my_begin; } 10136: const_iterator end() const { return const_iterator(*my_container) = my_end; } 10136: 10136: size_type size() const { 10136: size_type tot_size = 0; 10136: for(typename Container::const_iterator i = my_begin; i != my_end; ++i) { 10136: tot_size += i->size(); 10136: } 10136: return tot_size; 10136: } 10136: 10136: private: 10136: 10136: Container *my_container; 10136: typename Container::const_iterator my_begin; 10136: typename Container::const_iterator my_end; 10136: 10136: }; 10136: 10136: template 10136: flattened2d flatten2d(const Container &c, const typename Container::const_iterator b, const typename Container::const_iterator e) { 10136: return flattened2d(c, b, e); 10136: } 10136: 10136: template 10136: flattened2d flatten2d(const Container &c) { 10136: return flattened2d(c); 10136: } 10136: 10136: } 10136: 10136: namespace internal { 10136: using interface6::internal::segmented_iterator; 10136: } 10136: 10136: using interface6::enumerable_thread_specific; 10136: using interface6::flattened2d; 10136: using interface6::flatten2d; 10136: 10136: } 10136: # 25 "../../include/tbb/combinable.h" 2 10136: 10136: 10136: namespace tbb { 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class combinable { 10136: 10136: private: 10136: typedef typename tbb::cache_aligned_allocator my_alloc; 10136: typedef typename tbb::enumerable_thread_specific my_ets_type; 10136: my_ets_type my_ets; 10136: 10136: public: 10136: 10136: combinable() { } 10136: 10136: template 10136: explicit combinable( finit _finit) : my_ets(_finit) { } 10136: 10136: 10136: ~combinable() { } 10136: 10136: combinable( const combinable& other) : my_ets(other.my_ets) { } 10136: 10136: 10136: combinable( combinable&& other) : my_ets( std::move(other.my_ets)) { } 10136: 10136: 10136: combinable & operator=( const combinable & other) { 10136: my_ets = other.my_ets; 10136: return *this; 10136: } 10136: 10136: 10136: combinable & operator=( combinable && other) { 10136: my_ets=std::move(other.my_ets); 10136: return *this; 10136: } 10136: 10136: 10136: void clear() { my_ets.clear(); } 10136: 10136: T& local() { return my_ets.local(); } 10136: 10136: T& local(bool & exists) { return my_ets.local(exists); } 10136: 10136: 10136: template 10136: T combine(combine_func_t f_combine) { return my_ets.combine(f_combine); } 10136: 10136: 10136: template 10136: void combine_each(combine_func_t f_combine) { my_ets.combine_each(f_combine); } 10136: 10136: }; 10136: } 10136: # 34 "../../src/test/harness_concurrency_tracker.h" 2 10136: 10136: # 1 "/usr/include/c++/8/functional" 1 3 10136: # 46 "/usr/include/c++/8/functional" 3 10136: 10136: # 47 "/usr/include/c++/8/functional" 3 10136: # 59 "/usr/include/c++/8/functional" 3 10136: # 1 "/usr/include/c++/8/bits/std_function.h" 1 3 10136: # 33 "/usr/include/c++/8/bits/std_function.h" 3 10136: 10136: # 34 "/usr/include/c++/8/bits/std_function.h" 3 10136: # 47 "/usr/include/c++/8/bits/std_function.h" 3 10136: 10136: # 47 "/usr/include/c++/8/bits/std_function.h" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: class bad_function_call : public std::exception 10136: { 10136: public: 10136: virtual ~bad_function_call() noexcept; 10136: 10136: const char* what() const noexcept; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct __is_location_invariant 10136: : is_trivially_copyable<_Tp>::type 10136: { }; 10136: 10136: class _Undefined_class; 10136: 10136: union _Nocopy_types 10136: { 10136: void* _M_object; 10136: const void* _M_const_object; 10136: void (*_M_function_pointer)(); 10136: void (_Undefined_class::*_M_member_pointer)(); 10136: }; 10136: 10136: union [[gnu::may_alias]] _Any_data 10136: { 10136: void* _M_access() { return &_M_pod_data[0]; } 10136: const void* _M_access() const { return &_M_pod_data[0]; } 10136: 10136: template 10136: _Tp& 10136: _M_access() 10136: { return *static_cast<_Tp*>(_M_access()); } 10136: 10136: template 10136: const _Tp& 10136: _M_access() const 10136: { return *static_cast(_M_access()); } 10136: 10136: _Nocopy_types _M_unused; 10136: char _M_pod_data[sizeof(_Nocopy_types)]; 10136: }; 10136: 10136: enum _Manager_operation 10136: { 10136: __get_type_info, 10136: __get_functor_ptr, 10136: __clone_functor, 10136: __destroy_functor 10136: }; 10136: 10136: 10136: 10136: template 10136: struct _Simple_type_wrapper 10136: { 10136: _Simple_type_wrapper(_Tp __value) : __value(__value) { } 10136: 10136: _Tp __value; 10136: }; 10136: 10136: template 10136: struct __is_location_invariant<_Simple_type_wrapper<_Tp> > 10136: : __is_location_invariant<_Tp> 10136: { }; 10136: 10136: template 10136: class function; 10136: 10136: 10136: class _Function_base 10136: { 10136: public: 10136: static const std::size_t _M_max_size = sizeof(_Nocopy_types); 10136: static const std::size_t _M_max_align = __alignof__(_Nocopy_types); 10136: 10136: template 10136: class _Base_manager 10136: { 10136: protected: 10136: static const bool __stored_locally = 10136: (__is_location_invariant<_Functor>::value 10136: && sizeof(_Functor) <= _M_max_size 10136: && __alignof__(_Functor) <= _M_max_align 10136: && (_M_max_align % __alignof__(_Functor) == 0)); 10136: 10136: typedef integral_constant _Local_storage; 10136: 10136: 10136: static _Functor* 10136: _M_get_pointer(const _Any_data& __source) 10136: { 10136: const _Functor* __ptr = 10136: __stored_locally? std::__addressof(__source._M_access<_Functor>()) 10136: : __source._M_access<_Functor*>(); 10136: return const_cast<_Functor*>(__ptr); 10136: } 10136: 10136: 10136: 10136: static void 10136: _M_clone(_Any_data& __dest, const _Any_data& __source, true_type) 10136: { 10136: ::new (__dest._M_access()) _Functor(__source._M_access<_Functor>()); 10136: } 10136: 10136: 10136: 10136: static void 10136: _M_clone(_Any_data& __dest, const _Any_data& __source, false_type) 10136: { 10136: __dest._M_access<_Functor*>() = 10136: new _Functor(*__source._M_access<_Functor*>()); 10136: } 10136: 10136: 10136: 10136: static void 10136: _M_destroy(_Any_data& __victim, true_type) 10136: { 10136: __victim._M_access<_Functor>().~_Functor(); 10136: } 10136: 10136: 10136: static void 10136: _M_destroy(_Any_data& __victim, false_type) 10136: { 10136: delete __victim._M_access<_Functor*>(); 10136: } 10136: 10136: public: 10136: static bool 10136: _M_manager(_Any_data& __dest, const _Any_data& __source, 10136: _Manager_operation __op) 10136: { 10136: switch (__op) 10136: { 10136: 10136: case __get_type_info: 10136: __dest._M_access() = &typeid(_Functor); 10136: break; 10136: 10136: case __get_functor_ptr: 10136: __dest._M_access<_Functor*>() = _M_get_pointer(__source); 10136: break; 10136: 10136: case __clone_functor: 10136: _M_clone(__dest, __source, _Local_storage()); 10136: break; 10136: 10136: case __destroy_functor: 10136: _M_destroy(__dest, _Local_storage()); 10136: break; 10136: } 10136: return false; 10136: } 10136: 10136: static void 10136: _M_init_functor(_Any_data& __functor, _Functor&& __f) 10136: { _M_init_functor(__functor, std::move(__f), _Local_storage()); } 10136: 10136: template 10136: static bool 10136: _M_not_empty_function(const function<_Signature>& __f) 10136: { return static_cast(__f); } 10136: 10136: template 10136: static bool 10136: _M_not_empty_function(_Tp* __fp) 10136: { return __fp != nullptr; } 10136: 10136: template 10136: static bool 10136: _M_not_empty_function(_Tp _Class::* __mp) 10136: { return __mp != nullptr; } 10136: 10136: template 10136: static bool 10136: _M_not_empty_function(const _Tp&) 10136: { return true; } 10136: 10136: private: 10136: static void 10136: _M_init_functor(_Any_data& __functor, _Functor&& __f, true_type) 10136: { ::new (__functor._M_access()) _Functor(std::move(__f)); } 10136: 10136: static void 10136: _M_init_functor(_Any_data& __functor, _Functor&& __f, false_type) 10136: { __functor._M_access<_Functor*>() = new _Functor(std::move(__f)); } 10136: }; 10136: 10136: _Function_base() : _M_manager(nullptr) { } 10136: 10136: ~_Function_base() 10136: { 10136: if (_M_manager) 10136: _M_manager(_M_functor, _M_functor, __destroy_functor); 10136: } 10136: 10136: bool _M_empty() const { return !_M_manager; } 10136: 10136: typedef bool (*_Manager_type)(_Any_data&, const _Any_data&, 10136: _Manager_operation); 10136: 10136: _Any_data _M_functor; 10136: _Manager_type _M_manager; 10136: }; 10136: 10136: template 10136: class _Function_handler; 10136: 10136: template 10136: class _Function_handler<_Res(_ArgTypes...), _Functor> 10136: : public _Function_base::_Base_manager<_Functor> 10136: { 10136: typedef _Function_base::_Base_manager<_Functor> _Base; 10136: 10136: public: 10136: static _Res 10136: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 10136: { 10136: return (*_Base::_M_get_pointer(__functor))( 10136: std::forward<_ArgTypes>(__args)...); 10136: } 10136: }; 10136: 10136: template 10136: class _Function_handler 10136: : public _Function_base::_Base_manager<_Functor> 10136: { 10136: typedef _Function_base::_Base_manager<_Functor> _Base; 10136: 10136: public: 10136: static void 10136: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 10136: { 10136: (*_Base::_M_get_pointer(__functor))( 10136: std::forward<_ArgTypes>(__args)...); 10136: } 10136: }; 10136: 10136: template 10136: class _Function_handler<_Res(_ArgTypes...), _Member _Class::*> 10136: : public _Function_handler 10136: { 10136: typedef _Function_handler 10136: _Base; 10136: 10136: public: 10136: static _Res 10136: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 10136: { 10136: return std::__invoke(_Base::_M_get_pointer(__functor)->__value, 10136: std::forward<_ArgTypes>(__args)...); 10136: } 10136: }; 10136: 10136: template 10136: class _Function_handler 10136: : public _Function_base::_Base_manager< 10136: _Simple_type_wrapper< _Member _Class::* > > 10136: { 10136: typedef _Member _Class::* _Functor; 10136: typedef _Simple_type_wrapper<_Functor> _Wrapper; 10136: typedef _Function_base::_Base_manager<_Wrapper> _Base; 10136: 10136: public: 10136: static bool 10136: _M_manager(_Any_data& __dest, const _Any_data& __source, 10136: _Manager_operation __op) 10136: { 10136: switch (__op) 10136: { 10136: 10136: case __get_type_info: 10136: __dest._M_access() = &typeid(_Functor); 10136: break; 10136: 10136: case __get_functor_ptr: 10136: __dest._M_access<_Functor*>() = 10136: &_Base::_M_get_pointer(__source)->__value; 10136: break; 10136: 10136: default: 10136: _Base::_M_manager(__dest, __source, __op); 10136: } 10136: return false; 10136: } 10136: 10136: static void 10136: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 10136: { 10136: std::__invoke(_Base::_M_get_pointer(__functor)->__value, 10136: std::forward<_ArgTypes>(__args)...); 10136: } 10136: }; 10136: 10136: template 10136: using __check_func_return_type 10136: = __or_, is_same<_From, _To>, is_convertible<_From, _To>>; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class function<_Res(_ArgTypes...)> 10136: : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, 10136: private _Function_base 10136: { 10136: template::type> 10136: struct _Callable : __check_func_return_type<_Res2, _Res> { }; 10136: 10136: 10136: 10136: template 10136: struct _Callable : false_type { }; 10136: 10136: template 10136: using _Requires = typename enable_if<_Cond::value, _Tp>::type; 10136: 10136: public: 10136: typedef _Res result_type; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: function() noexcept 10136: : _Function_base() { } 10136: 10136: 10136: 10136: 10136: 10136: function(nullptr_t) noexcept 10136: : _Function_base() { } 10136: # 413 "/usr/include/c++/8/bits/std_function.h" 3 10136: function(const function& __x); 10136: # 422 "/usr/include/c++/8/bits/std_function.h" 3 10136: function(function&& __x) noexcept : _Function_base() 10136: { 10136: __x.swap(*this); 10136: } 10136: # 443 "/usr/include/c++/8/bits/std_function.h" 3 10136: template>, void>, 10136: typename = _Requires<_Callable<_Functor>, void>> 10136: function(_Functor); 10136: # 460 "/usr/include/c++/8/bits/std_function.h" 3 10136: function& 10136: operator=(const function& __x) 10136: { 10136: function(__x).swap(*this); 10136: return *this; 10136: } 10136: # 478 "/usr/include/c++/8/bits/std_function.h" 3 10136: function& 10136: operator=(function&& __x) noexcept 10136: { 10136: function(std::move(__x)).swap(*this); 10136: return *this; 10136: } 10136: # 492 "/usr/include/c++/8/bits/std_function.h" 3 10136: function& 10136: operator=(nullptr_t) noexcept 10136: { 10136: if (_M_manager) 10136: { 10136: _M_manager(_M_functor, _M_functor, __destroy_functor); 10136: _M_manager = nullptr; 10136: _M_invoker = nullptr; 10136: } 10136: return *this; 10136: } 10136: # 520 "/usr/include/c++/8/bits/std_function.h" 3 10136: template 10136: _Requires<_Callable::type>, function&> 10136: operator=(_Functor&& __f) 10136: { 10136: function(std::forward<_Functor>(__f)).swap(*this); 10136: return *this; 10136: } 10136: 10136: 10136: template 10136: function& 10136: operator=(reference_wrapper<_Functor> __f) noexcept 10136: { 10136: function(__f).swap(*this); 10136: return *this; 10136: } 10136: # 546 "/usr/include/c++/8/bits/std_function.h" 3 10136: void swap(function& __x) noexcept 10136: { 10136: std::swap(_M_functor, __x._M_functor); 10136: std::swap(_M_manager, __x._M_manager); 10136: std::swap(_M_invoker, __x._M_invoker); 10136: } 10136: # 563 "/usr/include/c++/8/bits/std_function.h" 3 10136: explicit operator bool() const noexcept 10136: { return !_M_empty(); } 10136: # 576 "/usr/include/c++/8/bits/std_function.h" 3 10136: _Res operator()(_ArgTypes... __args) const; 10136: # 589 "/usr/include/c++/8/bits/std_function.h" 3 10136: const type_info& target_type() const noexcept; 10136: # 602 "/usr/include/c++/8/bits/std_function.h" 3 10136: template _Functor* target() noexcept; 10136: 10136: template const _Functor* target() const noexcept; 10136: 10136: 10136: 10136: private: 10136: using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...); 10136: _Invoker_type _M_invoker; 10136: }; 10136: # 651 "/usr/include/c++/8/bits/std_function.h" 3 10136: template 10136: function<_Res(_ArgTypes...)>:: 10136: function(const function& __x) 10136: : _Function_base() 10136: { 10136: if (static_cast(__x)) 10136: { 10136: __x._M_manager(_M_functor, __x._M_functor, __clone_functor); 10136: _M_invoker = __x._M_invoker; 10136: _M_manager = __x._M_manager; 10136: } 10136: } 10136: 10136: template 10136: template 10136: function<_Res(_ArgTypes...)>:: 10136: function(_Functor __f) 10136: : _Function_base() 10136: { 10136: typedef _Function_handler<_Res(_ArgTypes...), _Functor> _My_handler; 10136: 10136: if (_My_handler::_M_not_empty_function(__f)) 10136: { 10136: _My_handler::_M_init_functor(_M_functor, std::move(__f)); 10136: _M_invoker = &_My_handler::_M_invoke; 10136: _M_manager = &_My_handler::_M_manager; 10136: } 10136: } 10136: 10136: template 10136: _Res 10136: function<_Res(_ArgTypes...)>:: 10136: operator()(_ArgTypes... __args) const 10136: { 10136: if (_M_empty()) 10136: __throw_bad_function_call(); 10136: return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...); 10136: } 10136: 10136: 10136: template 10136: const type_info& 10136: function<_Res(_ArgTypes...)>:: 10136: target_type() const noexcept 10136: { 10136: if (_M_manager) 10136: { 10136: _Any_data __typeinfo_result; 10136: _M_manager(__typeinfo_result, _M_functor, __get_type_info); 10136: return *__typeinfo_result._M_access(); 10136: } 10136: else 10136: return typeid(void); 10136: } 10136: 10136: template 10136: template 10136: _Functor* 10136: function<_Res(_ArgTypes...)>:: 10136: target() noexcept 10136: { 10136: const function* __const_this = this; 10136: const _Functor* __func = __const_this->template target<_Functor>(); 10136: return const_cast<_Functor*>(__func); 10136: } 10136: 10136: template 10136: template 10136: const _Functor* 10136: function<_Res(_ArgTypes...)>:: 10136: target() const noexcept 10136: { 10136: if (typeid(_Functor) == target_type() && _M_manager) 10136: { 10136: _Any_data __ptr; 10136: _M_manager(__ptr, _M_functor, __get_functor_ptr); 10136: return __ptr._M_access(); 10136: } 10136: else 10136: return nullptr; 10136: } 10136: # 743 "/usr/include/c++/8/bits/std_function.h" 3 10136: template 10136: inline bool 10136: operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept 10136: { return !static_cast(__f); } 10136: 10136: 10136: template 10136: inline bool 10136: operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept 10136: { return !static_cast(__f); } 10136: # 761 "/usr/include/c++/8/bits/std_function.h" 3 10136: template 10136: inline bool 10136: operator!=(const function<_Res(_Args...)>& __f, nullptr_t) noexcept 10136: { return static_cast(__f); } 10136: 10136: 10136: template 10136: inline bool 10136: operator!=(nullptr_t, const function<_Res(_Args...)>& __f) noexcept 10136: { return static_cast(__f); } 10136: # 782 "/usr/include/c++/8/bits/std_function.h" 3 10136: template 10136: inline void 10136: swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y) noexcept 10136: { __x.swap(__y); } 10136: 10136: 10136: } 10136: # 60 "/usr/include/c++/8/functional" 2 3 10136: # 68 "/usr/include/c++/8/functional" 3 10136: namespace std __attribute__ ((__visibility__ ("default"))) 10136: { 10136: 10136: # 86 "/usr/include/c++/8/functional" 3 10136: template::value> 10136: class _Mem_fn_base 10136: : public _Mem_fn_traits<_MemFunPtr>::__maybe_type 10136: { 10136: using _Traits = _Mem_fn_traits<_MemFunPtr>; 10136: 10136: using _Arity = typename _Traits::__arity; 10136: using _Varargs = typename _Traits::__vararg; 10136: 10136: template 10136: friend struct _Bind_check_arity; 10136: 10136: _MemFunPtr _M_pmf; 10136: 10136: public: 10136: 10136: using result_type = typename _Traits::__result_type; 10136: 10136: explicit constexpr 10136: _Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { } 10136: 10136: template 10136: auto 10136: operator()(_Args&&... __args) const 10136: noexcept(noexcept( 10136: std::__invoke(_M_pmf, std::forward<_Args>(__args)...))) 10136: -> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...)) 10136: { return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); } 10136: }; 10136: 10136: 10136: template 10136: class _Mem_fn_base<_MemObjPtr, false> 10136: { 10136: using _Arity = integral_constant; 10136: using _Varargs = false_type; 10136: 10136: template 10136: friend struct _Bind_check_arity; 10136: 10136: _MemObjPtr _M_pm; 10136: 10136: public: 10136: explicit constexpr 10136: _Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { } 10136: 10136: template 10136: auto 10136: operator()(_Tp&& __obj) const 10136: noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))) 10136: -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj))) 10136: { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); } 10136: }; 10136: 10136: template 10136: struct _Mem_fn; 10136: 10136: template 10136: struct _Mem_fn<_Res _Class::*> 10136: : _Mem_fn_base<_Res _Class::*> 10136: { 10136: using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base; 10136: }; 10136: # 158 "/usr/include/c++/8/functional" 3 10136: template 10136: inline _Mem_fn<_Tp _Class::*> 10136: mem_fn(_Tp _Class::* __pm) noexcept 10136: { 10136: return _Mem_fn<_Tp _Class::*>(__pm); 10136: } 10136: # 173 "/usr/include/c++/8/functional" 3 10136: template 10136: struct is_bind_expression 10136: : public false_type { }; 10136: # 184 "/usr/include/c++/8/functional" 3 10136: template 10136: struct is_placeholder 10136: : public integral_constant 10136: { }; 10136: # 199 "/usr/include/c++/8/functional" 3 10136: template struct _Placeholder { }; 10136: 10136: 10136: 10136: 10136: 10136: namespace placeholders 10136: { 10136: 10136: 10136: 10136: 10136: extern const _Placeholder<1> _1; 10136: extern const _Placeholder<2> _2; 10136: extern const _Placeholder<3> _3; 10136: extern const _Placeholder<4> _4; 10136: extern const _Placeholder<5> _5; 10136: extern const _Placeholder<6> _6; 10136: extern const _Placeholder<7> _7; 10136: extern const _Placeholder<8> _8; 10136: extern const _Placeholder<9> _9; 10136: extern const _Placeholder<10> _10; 10136: extern const _Placeholder<11> _11; 10136: extern const _Placeholder<12> _12; 10136: extern const _Placeholder<13> _13; 10136: extern const _Placeholder<14> _14; 10136: extern const _Placeholder<15> _15; 10136: extern const _Placeholder<16> _16; 10136: extern const _Placeholder<17> _17; 10136: extern const _Placeholder<18> _18; 10136: extern const _Placeholder<19> _19; 10136: extern const _Placeholder<20> _20; 10136: extern const _Placeholder<21> _21; 10136: extern const _Placeholder<22> _22; 10136: extern const _Placeholder<23> _23; 10136: extern const _Placeholder<24> _24; 10136: extern const _Placeholder<25> _25; 10136: extern const _Placeholder<26> _26; 10136: extern const _Placeholder<27> _27; 10136: extern const _Placeholder<28> _28; 10136: extern const _Placeholder<29> _29; 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_placeholder<_Placeholder<_Num> > 10136: : public integral_constant 10136: { }; 10136: 10136: template 10136: struct is_placeholder > 10136: : public integral_constant 10136: { }; 10136: 10136: 10136: 10136: template 10136: using _Safe_tuple_element_t 10136: = typename enable_if<(__i < tuple_size<_Tuple>::value), 10136: tuple_element<__i, _Tuple>>::type::type; 10136: # 275 "/usr/include/c++/8/functional" 3 10136: template::value, 10136: bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> 10136: class _Mu; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class _Mu, false, false> 10136: { 10136: public: 10136: 10136: 10136: 10136: 10136: template 10136: _Tp& 10136: operator()(_CVRef& __arg, _Tuple&) const volatile 10136: { return __arg.get(); } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class _Mu<_Arg, true, false> 10136: { 10136: public: 10136: template 10136: auto 10136: operator()(_CVArg& __arg, 10136: tuple<_Args...>& __tuple) const volatile 10136: -> decltype(__arg(declval<_Args>()...)) 10136: { 10136: 10136: typedef typename _Build_index_tuple::__type 10136: _Indexes; 10136: return this->__call(__arg, __tuple, _Indexes()); 10136: } 10136: 10136: private: 10136: 10136: 10136: template 10136: auto 10136: __call(_CVArg& __arg, tuple<_Args...>& __tuple, 10136: const _Index_tuple<_Indexes...>&) const volatile 10136: -> decltype(__arg(declval<_Args>()...)) 10136: { 10136: return __arg(std::get<_Indexes>(std::move(__tuple))...); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class _Mu<_Arg, false, true> 10136: { 10136: public: 10136: template 10136: _Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&& 10136: operator()(const volatile _Arg&, _Tuple& __tuple) const volatile 10136: { 10136: return 10136: ::std::get<(is_placeholder<_Arg>::value - 1)>(std::move(__tuple)); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: class _Mu<_Arg, false, false> 10136: { 10136: public: 10136: template 10136: _CVArg&& 10136: operator()(_CVArg&& __arg, _Tuple&) const volatile 10136: { return std::forward<_CVArg>(__arg); } 10136: }; 10136: 10136: 10136: template 10136: inline auto 10136: __volget(volatile tuple<_Tp...>& __tuple) 10136: -> __tuple_element_t<_Ind, tuple<_Tp...>> volatile& 10136: { return std::get<_Ind>(const_cast&>(__tuple)); } 10136: 10136: 10136: template 10136: inline auto 10136: __volget(const volatile tuple<_Tp...>& __tuple) 10136: -> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile& 10136: { return std::get<_Ind>(const_cast&>(__tuple)); } 10136: 10136: 10136: template 10136: struct _Bind; 10136: 10136: template 10136: class _Bind<_Functor(_Bound_args...)> 10136: : public _Weak_result_type<_Functor> 10136: { 10136: typedef typename _Build_index_tuple::__type 10136: _Bound_indexes; 10136: 10136: _Functor _M_f; 10136: tuple<_Bound_args...> _M_bound_args; 10136: 10136: 10136: template 10136: _Result 10136: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) 10136: { 10136: return std::__invoke(_M_f, 10136: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... 10136: ); 10136: } 10136: 10136: 10136: template 10136: _Result 10136: __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const 10136: { 10136: return std::__invoke(_M_f, 10136: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... 10136: ); 10136: } 10136: 10136: 10136: template 10136: _Result 10136: __call_v(tuple<_Args...>&& __args, 10136: _Index_tuple<_Indexes...>) volatile 10136: { 10136: return std::__invoke(_M_f, 10136: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... 10136: ); 10136: } 10136: 10136: 10136: template 10136: _Result 10136: __call_c_v(tuple<_Args...>&& __args, 10136: _Index_tuple<_Indexes...>) const volatile 10136: { 10136: return std::__invoke(_M_f, 10136: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... 10136: ); 10136: } 10136: 10136: template 10136: using _Mu_type = decltype( 10136: _Mu::type>()( 10136: std::declval<_BoundArg&>(), std::declval<_CallArgs&>()) ); 10136: 10136: template 10136: using _Res_type_impl 10136: = typename result_of< _Fn&(_Mu_type<_BArgs, _CallArgs>&&...) >::type; 10136: 10136: template 10136: using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>; 10136: 10136: template 10136: using __dependent = typename 10136: enable_if::value+1), _Functor>::type; 10136: 10136: template class __cv_quals> 10136: using _Res_type_cv = _Res_type_impl< 10136: typename __cv_quals<__dependent<_CallArgs>>::type, 10136: _CallArgs, 10136: typename __cv_quals<_Bound_args>::type...>; 10136: 10136: public: 10136: template 10136: explicit _Bind(const _Functor& __f, _Args&&... __args) 10136: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) 10136: { } 10136: 10136: template 10136: explicit _Bind(_Functor&& __f, _Args&&... __args) 10136: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) 10136: { } 10136: 10136: _Bind(const _Bind&) = default; 10136: 10136: _Bind(_Bind&& __b) 10136: : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) 10136: { } 10136: 10136: 10136: template>> 10136: _Result 10136: operator()(_Args&&... __args) 10136: { 10136: return this->__call<_Result>( 10136: std::forward_as_tuple(std::forward<_Args>(__args)...), 10136: _Bound_indexes()); 10136: } 10136: 10136: 10136: template, add_const>> 10136: _Result 10136: operator()(_Args&&... __args) const 10136: { 10136: return this->__call_c<_Result>( 10136: std::forward_as_tuple(std::forward<_Args>(__args)...), 10136: _Bound_indexes()); 10136: } 10136: # 505 "/usr/include/c++/8/functional" 3 10136: template, add_volatile>> 10136: 10136: _Result 10136: operator()(_Args&&... __args) volatile 10136: { 10136: return this->__call_v<_Result>( 10136: std::forward_as_tuple(std::forward<_Args>(__args)...), 10136: _Bound_indexes()); 10136: } 10136: 10136: 10136: template, add_cv>> 10136: 10136: _Result 10136: operator()(_Args&&... __args) const volatile 10136: { 10136: return this->__call_c_v<_Result>( 10136: std::forward_as_tuple(std::forward<_Args>(__args)...), 10136: _Bound_indexes()); 10136: } 10136: }; 10136: 10136: 10136: template 10136: struct _Bind_result; 10136: 10136: template 10136: class _Bind_result<_Result, _Functor(_Bound_args...)> 10136: { 10136: typedef typename _Build_index_tuple::__type 10136: _Bound_indexes; 10136: 10136: _Functor _M_f; 10136: tuple<_Bound_args...> _M_bound_args; 10136: 10136: 10136: template 10136: using __enable_if_void 10136: = typename enable_if{}>::type; 10136: 10136: template 10136: using __disable_if_void 10136: = typename enable_if{}, _Result>::type; 10136: 10136: 10136: template 10136: __disable_if_void<_Res> 10136: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) 10136: { 10136: return std::__invoke(_M_f, _Mu<_Bound_args>() 10136: (std::get<_Indexes>(_M_bound_args), __args)...); 10136: } 10136: 10136: 10136: template 10136: __enable_if_void<_Res> 10136: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) 10136: { 10136: std::__invoke(_M_f, _Mu<_Bound_args>() 10136: (std::get<_Indexes>(_M_bound_args), __args)...); 10136: } 10136: 10136: 10136: template 10136: __disable_if_void<_Res> 10136: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const 10136: { 10136: return std::__invoke(_M_f, _Mu<_Bound_args>() 10136: (std::get<_Indexes>(_M_bound_args), __args)...); 10136: } 10136: 10136: 10136: template 10136: __enable_if_void<_Res> 10136: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const 10136: { 10136: std::__invoke(_M_f, _Mu<_Bound_args>() 10136: (std::get<_Indexes>(_M_bound_args), __args)...); 10136: } 10136: 10136: 10136: template 10136: __disable_if_void<_Res> 10136: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile 10136: { 10136: return std::__invoke(_M_f, _Mu<_Bound_args>() 10136: (__volget<_Indexes>(_M_bound_args), __args)...); 10136: } 10136: 10136: 10136: template 10136: __enable_if_void<_Res> 10136: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile 10136: { 10136: std::__invoke(_M_f, _Mu<_Bound_args>() 10136: (__volget<_Indexes>(_M_bound_args), __args)...); 10136: } 10136: 10136: 10136: template 10136: __disable_if_void<_Res> 10136: __call(tuple<_Args...>&& __args, 10136: _Index_tuple<_Indexes...>) const volatile 10136: { 10136: return std::__invoke(_M_f, _Mu<_Bound_args>() 10136: (__volget<_Indexes>(_M_bound_args), __args)...); 10136: } 10136: 10136: 10136: template 10136: __enable_if_void<_Res> 10136: __call(tuple<_Args...>&& __args, 10136: _Index_tuple<_Indexes...>) const volatile 10136: { 10136: std::__invoke(_M_f, _Mu<_Bound_args>() 10136: (__volget<_Indexes>(_M_bound_args), __args)...); 10136: } 10136: 10136: public: 10136: typedef _Result result_type; 10136: 10136: template 10136: explicit _Bind_result(const _Functor& __f, _Args&&... __args) 10136: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) 10136: { } 10136: 10136: template 10136: explicit _Bind_result(_Functor&& __f, _Args&&... __args) 10136: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) 10136: { } 10136: 10136: _Bind_result(const _Bind_result&) = default; 10136: 10136: _Bind_result(_Bind_result&& __b) 10136: : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) 10136: { } 10136: 10136: 10136: template 10136: result_type 10136: operator()(_Args&&... __args) 10136: { 10136: return this->__call<_Result>( 10136: std::forward_as_tuple(std::forward<_Args>(__args)...), 10136: _Bound_indexes()); 10136: } 10136: 10136: 10136: template 10136: result_type 10136: operator()(_Args&&... __args) const 10136: { 10136: return this->__call<_Result>( 10136: std::forward_as_tuple(std::forward<_Args>(__args)...), 10136: _Bound_indexes()); 10136: } 10136: 10136: 10136: template 10136: 10136: result_type 10136: operator()(_Args&&... __args) volatile 10136: { 10136: return this->__call<_Result>( 10136: std::forward_as_tuple(std::forward<_Args>(__args)...), 10136: _Bound_indexes()); 10136: } 10136: 10136: 10136: template 10136: 10136: result_type 10136: operator()(_Args&&... __args) const volatile 10136: { 10136: return this->__call<_Result>( 10136: std::forward_as_tuple(std::forward<_Args>(__args)...), 10136: _Bound_indexes()); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_bind_expression<_Bind<_Signature> > 10136: : public true_type { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_bind_expression > 10136: : public true_type { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_bind_expression > 10136: : public true_type { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_bind_expression> 10136: : public true_type { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_bind_expression<_Bind_result<_Result, _Signature>> 10136: : public true_type { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_bind_expression> 10136: : public true_type { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_bind_expression> 10136: : public true_type { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: struct is_bind_expression> 10136: : public true_type { }; 10136: 10136: template 10136: struct _Bind_check_arity { }; 10136: 10136: template 10136: struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...> 10136: { 10136: static_assert(sizeof...(_BoundArgs) == sizeof...(_Args), 10136: "Wrong number of arguments for function"); 10136: }; 10136: 10136: template 10136: struct _Bind_check_arity<_Ret (*)(_Args......), _BoundArgs...> 10136: { 10136: static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args), 10136: "Wrong number of arguments for function"); 10136: }; 10136: 10136: template 10136: struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...> 10136: { 10136: using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity; 10136: using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs; 10136: static_assert(_Varargs::value 10136: ? sizeof...(_BoundArgs) >= _Arity::value + 1 10136: : sizeof...(_BoundArgs) == _Arity::value + 1, 10136: "Wrong number of arguments for pointer-to-member"); 10136: }; 10136: 10136: 10136: 10136: 10136: template::type> 10136: using __is_socketlike = __or_, is_enum<_Tp2>>; 10136: 10136: template 10136: struct _Bind_helper 10136: : _Bind_check_arity::type, _BoundArgs...> 10136: { 10136: typedef typename decay<_Func>::type __func_type; 10136: typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type; 10136: }; 10136: 10136: 10136: 10136: 10136: template 10136: struct _Bind_helper 10136: { }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline typename 10136: _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type 10136: bind(_Func&& __f, _BoundArgs&&... __args) 10136: { 10136: typedef _Bind_helper __helper_type; 10136: return typename __helper_type::type(std::forward<_Func>(__f), 10136: std::forward<_BoundArgs>(__args)...); 10136: } 10136: 10136: template 10136: struct _Bindres_helper 10136: : _Bind_check_arity::type, _BoundArgs...> 10136: { 10136: typedef typename decay<_Func>::type __functor_type; 10136: typedef _Bind_result<_Result, 10136: __functor_type(typename decay<_BoundArgs>::type...)> 10136: type; 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: inline 10136: typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type 10136: bind(_Func&& __f, _BoundArgs&&... __args) 10136: { 10136: typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type; 10136: return typename __helper_type::type(std::forward<_Func>(__f), 10136: std::forward<_BoundArgs>(__args)...); 10136: } 10136: 10136: 10136: 10136: template 10136: class _Not_fn 10136: { 10136: template 10136: using __inv_res_t = typename __invoke_result<_Fn2, _Args...>::type; 10136: 10136: template 10136: static decltype(!std::declval<_Tp>()) 10136: _S_not() noexcept(noexcept(!std::declval<_Tp>())); 10136: 10136: public: 10136: template 10136: _Not_fn(_Fn2&& __fn, int) 10136: : _M_fn(std::forward<_Fn2>(__fn)) { } 10136: 10136: _Not_fn(const _Not_fn& __fn) = default; 10136: _Not_fn(_Not_fn&& __fn) = default; 10136: ~_Not_fn() = default; 10136: # 872 "/usr/include/c++/8/functional" 3 10136: template decltype(_S_not<__inv_res_t<_Fn &, _Args...>>()) operator()(_Args&&... __args) & noexcept(noexcept(_S_not<__inv_res_t<_Fn &, _Args...>>())) { return !std::__invoke(std::forward< _Fn & >(_M_fn), std::forward<_Args>(__args)...); } 10136: template decltype(_S_not<__inv_res_t<_Fn const &, _Args...>>()) operator()(_Args&&... __args) const & noexcept(noexcept(_S_not<__inv_res_t<_Fn const &, _Args...>>())) { return !std::__invoke(std::forward< _Fn const & >(_M_fn), std::forward<_Args>(__args)...); } 10136: template decltype(_S_not<__inv_res_t<_Fn &&, _Args...>>()) operator()(_Args&&... __args) && noexcept(noexcept(_S_not<__inv_res_t<_Fn &&, _Args...>>())) { return !std::__invoke(std::forward< _Fn && >(_M_fn), std::forward<_Args>(__args)...); } 10136: template decltype(_S_not<__inv_res_t<_Fn const &&, _Args...>>()) operator()(_Args&&... __args) const && noexcept(noexcept(_S_not<__inv_res_t<_Fn const &&, _Args...>>())) { return !std::__invoke(std::forward< _Fn const && >(_M_fn), std::forward<_Args>(__args)...); } 10136: 10136: 10136: private: 10136: _Fn _M_fn; 10136: }; 10136: 10136: template 10136: struct __is_byte_like : false_type { }; 10136: 10136: template 10136: struct __is_byte_like<_Tp, equal_to<_Tp>> 10136: : __bool_constant::value> { }; 10136: 10136: template 10136: struct __is_byte_like<_Tp, equal_to> 10136: : __bool_constant::value> { }; 10136: # 1192 "/usr/include/c++/8/functional" 3 10136: 10136: } 10136: # 36 "../../src/test/harness_concurrency_tracker.h" 2 10136: 10136: 10136: 10136: 10136: # 39 "../../src/test/harness_concurrency_tracker.h" 10136: namespace Harness { 10136: 10136: static tbb::atomic ctInstantParallelism; 10136: static tbb::atomic ctPeakParallelism; 10136: static tbb::internal::tls ctNested; 10136: 10136: class ConcurrencyTracker { 10136: bool m_Outer; 10136: 10136: static void Started () { 10136: unsigned p = ++ctInstantParallelism; 10136: unsigned q = ctPeakParallelism; 10136: while( q

0)?(void)0:ReportError("../../src/test/harness_concurrency_tracker.h",57,"ctInstantParallelism > 0","Mismatched call to ConcurrencyTracker::Stopped()")); 10136: --ctInstantParallelism; 10136: } 10136: public: 10136: ConcurrencyTracker() : m_Outer(false) { 10136: uintptr_t nested = ctNested; 10136: ((nested == 0 || nested == 1)?(void)0:ReportError("../../src/test/harness_concurrency_tracker.h",63,"nested == 0 || nested == 1", 10136: # 63 "../../src/test/harness_concurrency_tracker.h" 3 4 10136: __null 10136: # 63 "../../src/test/harness_concurrency_tracker.h" 10136: )); 10136: if ( !ctNested ) { 10136: Started(); 10136: m_Outer = true; 10136: ctNested = 1; 10136: } 10136: } 10136: ~ConcurrencyTracker() { 10136: if ( m_Outer ) { 10136: Stopped(); 10136: ctNested = 0; 10136: } 10136: } 10136: 10136: static unsigned PeakParallelism() { return ctPeakParallelism; } 10136: static unsigned InstantParallelism() { return ctInstantParallelism; } 10136: 10136: static void Reset() { 10136: ((ctInstantParallelism == 0)?(void)0:ReportError("../../src/test/harness_concurrency_tracker.h",81,"ctInstantParallelism == 0","Reset cannot be called when concurrency tracking is underway")); 10136: ctInstantParallelism = ctPeakParallelism = 0; 10136: } 10136: }; 10136: 10136: 10136: struct ExactConcurrencyLevel : NoCopy { 10136: typedef tbb::combinable Combinable; 10136: private: 10136: Harness::SpinBarrier *myBarrier; 10136: 10136: Combinable *myUniqueThreads; 10136: mutable tbb::atomic myActiveBodyCnt; 10136: 10136: mutable bool myReachedMax; 10136: 10136: const double myTimeout; 10136: const size_t myConcLevel; 10136: const bool myCrashOnFail; 10136: 10136: static tbb::mutex global_mutex; 10136: 10136: ExactConcurrencyLevel(double timeout, size_t concLevel, Combinable *uniq, bool crashOnFail) : 10136: myBarrier( 10136: # 104 "../../src/test/harness_concurrency_tracker.h" 3 4 10136: __null 10136: # 104 "../../src/test/harness_concurrency_tracker.h" 10136: ), myUniqueThreads(uniq), myReachedMax(false), 10136: myTimeout(timeout), myConcLevel(concLevel), myCrashOnFail(crashOnFail) { 10136: myActiveBodyCnt = 0; 10136: } 10136: bool run() { 10136: const int LOOP_ITERS = 100; 10136: tbb::combinable uniq; 10136: Harness::SpinBarrier barrier((unsigned)myConcLevel, true); 10136: if (myTimeout != 0.) 10136: myBarrier = &barrier; 10136: if (!myUniqueThreads) 10136: myUniqueThreads = &uniq; 10136: tbb::parallel_for((size_t)0, myConcLevel*LOOP_ITERS, *this, tbb::simple_partitioner()); 10136: return myReachedMax; 10136: } 10136: public: 10136: void operator()(size_t) const { 10136: size_t v = ++myActiveBodyCnt; 10136: ((v <= myConcLevel)?(void)0:ReportError("../../src/test/harness_concurrency_tracker.h",122,"v <= myConcLevel","Number of active bodies is too high.")); 10136: if (v == myConcLevel) 10136: myReachedMax = true; 10136: 10136: if (myBarrier && !myBarrier->timed_wait_noerror(myTimeout)) 10136: ((!myCrashOnFail)?(void)0:ReportError("../../src/test/harness_concurrency_tracker.h",127,"!myCrashOnFail","Timeout was detected.")); 10136: 10136: myUniqueThreads->local() = 1; 10136: for (int i=0; i<100; i++) 10136: __TBB_machine_pause(1); 10136: --myActiveBodyCnt; 10136: } 10136: 10136: enum Mode { 10136: None, 10136: 10136: 10136: Serialize 10136: }; 10136: 10136: 10136: 10136: static void check(size_t concLevel, Mode m = None) { 10136: ExactConcurrencyLevel o(30., concLevel, 10136: # 145 "../../src/test/harness_concurrency_tracker.h" 3 4 10136: __null 10136: # 145 "../../src/test/harness_concurrency_tracker.h" 10136: , true); 10136: 10136: tbb::mutex::scoped_lock lock; 10136: if (m == Serialize) 10136: lock.acquire(global_mutex); 10136: bool ok = o.run(); 10136: ((ok)?(void)0:ReportError("../../src/test/harness_concurrency_tracker.h",151,"ok", 10136: # 151 "../../src/test/harness_concurrency_tracker.h" 3 4 10136: __null 10136: # 151 "../../src/test/harness_concurrency_tracker.h" 10136: )); 10136: } 10136: 10136: static bool isEqual(size_t concLevel) { 10136: ExactConcurrencyLevel o(3., concLevel, 10136: # 155 "../../src/test/harness_concurrency_tracker.h" 3 4 10136: __null 10136: # 155 "../../src/test/harness_concurrency_tracker.h" 10136: , false); 10136: return o.run(); 10136: } 10136: 10136: static void checkLessOrEqual(size_t concLevel, tbb::combinable *unique) { 10136: ExactConcurrencyLevel o(0., concLevel, unique, true); 10136: 10136: o.run(); 10136: const size_t num = unique->combine(std::plus()); 10136: ((num<=concLevel)?(void)0:ReportError("../../src/test/harness_concurrency_tracker.h",164,"num<=concLevel","Too many workers observed.")); 10136: } 10136: }; 10136: 10136: tbb::mutex ExactConcurrencyLevel::global_mutex; 10136: 10136: 10136: 10136: } 10136: # 29 "../../src/test/harness_eh.h" 2 10136: 10136: int g_NumThreads = 0; 10136: Harness::tid_t g_Master = 0; 10136: const char * g_Orig_Wakeup_Msg = "Missed wakeup or machine is overloaded?"; 10136: const char * g_Wakeup_Msg = g_Orig_Wakeup_Msg; 10136: 10136: tbb::atomic g_CurExecuted, 10136: g_ExecutedAtLastCatch, 10136: g_ExecutedAtFirstCatch, 10136: g_ExceptionsThrown, 10136: g_MasterExecutedThrow, 10136: g_NonMasterExecutedThrow, 10136: g_PipelinesStarted; 10136: volatile bool g_ExceptionCaught = false, 10136: g_UnknownException = false; 10136: 10136: 10136: 10136: 10136: 10136: 10136: volatile bool g_ThrowException = true, 10136: 10136: 10136: g_Flog = false, 10136: g_MasterExecuted = false, 10136: g_NonMasterExecuted = false; 10136: 10136: bool g_ExceptionInMaster = false; 10136: bool g_SolitaryException = false; 10136: bool g_NestedPipelines = false; 10136: 10136: 10136: tbb::atomic g_NumExceptionsCaught; 10136: # 90 "../../src/test/harness_eh.h" 10136: inline void ResetEhGlobals ( bool throwException = true, bool flog = false ) { 10136: Harness::ConcurrencyTracker::Reset(); 10136: g_CurExecuted = g_ExecutedAtLastCatch = g_ExecutedAtFirstCatch = 0; 10136: g_ExceptionCaught = false; 10136: g_UnknownException = false; 10136: g_NestedPipelines = false; 10136: g_ThrowException = throwException; 10136: g_MasterExecutedThrow = 0; 10136: g_NonMasterExecutedThrow = 0; 10136: g_Flog = flog; 10136: g_MasterExecuted = false; 10136: g_NonMasterExecuted = false; 10136: 10136: 10136: 10136: 10136: g_ExceptionsThrown = g_NumExceptionsCaught = g_PipelinesStarted = 0; 10136: } 10136: 10136: 10136: class test_exception : public std::exception { 10136: const char* my_description; 10136: public: 10136: test_exception ( const char* description ) : my_description(description) {} 10136: 10136: const char* what() const throw() override { return my_description; } 10136: }; 10136: 10136: class solitary_test_exception : public test_exception { 10136: public: 10136: solitary_test_exception ( const char* description ) : test_exception(description) {} 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: typedef test_exception PropagatedException; 10136: # 142 "../../src/test/harness_eh.h" 10136: static void ThrowTestException ( intptr_t threshold ) { 10136: bool inMaster = (Harness::CurrentTid() == g_Master); 10136: if ( !g_ThrowException || 10136: (!g_Flog && 10136: (g_ExceptionInMaster ^ inMaster)) ) { 10136: 10136: return; 10136: } 10136: while ( Existed() < threshold ) 10136: sched_yield(); 10136: if ( !g_SolitaryException ) { 10136: ++g_ExceptionsThrown; 10136: if(inMaster) ++g_MasterExecutedThrow; else ++g_NonMasterExecutedThrow; 10136: throw test_exception("Test exception"); 10136: } 10136: 10136: if(g_NestedPipelines) { 10136: 10136: 10136: if(g_PipelinesStarted >= 3) { 10136: if ( g_ExceptionsThrown.compare_and_swap(1, 0) == 0 ) { 10136: if(inMaster) ++g_MasterExecutedThrow; else ++g_NonMasterExecutedThrow; 10136: throw solitary_test_exception("Test exception"); 10136: } 10136: } 10136: } 10136: else { 10136: if ( g_ExceptionsThrown.compare_and_swap(1, 0) == 0 ) { 10136: if(inMaster) ++g_MasterExecutedThrow; else ++g_NonMasterExecutedThrow; 10136: throw solitary_test_exception("Test exception"); 10136: } 10136: } 10136: } 10136: # 235 "../../src/test/harness_eh.h" 10136: const int c_Timeout = 1000000; 10136: 10136: void WaitUntilConcurrencyPeaks ( int expected_peak ) { 10136: if ( g_Flog ) 10136: return; 10136: int n = 0; 10136: retry: 10136: while ( ++n < c_Timeout && (int)Harness::ConcurrencyTracker::PeakParallelism() < expected_peak ) 10136: sched_yield(); 10136: 10136: 10136: 10136: ((n < c_Timeout)?(void)0:ReportWarning("../../src/test/harness_eh.h",247,"n < c_Timeout",g_Wakeup_Msg)); 10136: 10136: if ( n == c_Timeout ) { 10136: tbb::task &r = *new( tbb::task::allocate_root() ) tbb::empty_task(); 10136: r.spawn(r); 10136: n = 0; 10136: goto retry; 10136: } 10136: } 10136: 10136: inline void WaitUntilConcurrencyPeaks () { WaitUntilConcurrencyPeaks(g_NumThreads); } 10136: 10136: inline bool IsMaster() { 10136: return Harness::CurrentTid() == g_Master; 10136: } 10136: 10136: inline bool IsThrowingThread() { 10136: return g_ExceptionInMaster ^ IsMaster() ? true : false; 10136: } 10136: 10136: class CancellatorTask : public tbb::task { 10136: static volatile bool s_Ready; 10136: tbb::task_group_context &m_groupToCancel; 10136: intptr_t m_cancellationThreshold; 10136: 10136: tbb::task* execute () override { 10136: Harness::ConcurrencyTracker ct; 10136: s_Ready = true; 10136: while ( g_CurExecuted < m_cancellationThreshold ) 10136: sched_yield(); 10136: m_groupToCancel.cancel_group_execution(); 10136: g_ExecutedAtLastCatch = g_CurExecuted; 10136: return 10136: # 279 "../../src/test/harness_eh.h" 3 4 10136: __null 10136: # 279 "../../src/test/harness_eh.h" 10136: ; 10136: } 10136: public: 10136: CancellatorTask ( tbb::task_group_context& ctx, intptr_t threshold ) 10136: : m_groupToCancel(ctx), m_cancellationThreshold(threshold) 10136: { 10136: s_Ready = false; 10136: } 10136: 10136: static void Reset () { s_Ready = false; } 10136: 10136: static bool WaitUntilReady () { 10136: const intptr_t limit = 10000000; 10136: intptr_t n = 0; 10136: do { 10136: sched_yield(); 10136: } while( !s_Ready && ++n < limit ); 10136: 10136: ((s_Ready || n == limit)?(void)0:ReportError("../../src/test/harness_eh.h",297,"s_Ready || n == limit", 10136: # 297 "../../src/test/harness_eh.h" 3 4 10136: __null 10136: # 297 "../../src/test/harness_eh.h" 10136: )); 10136: return s_Ready; 10136: } 10136: }; 10136: 10136: volatile bool CancellatorTask::s_Ready = false; 10136: 10136: template 10136: void RunCancellationTest ( intptr_t threshold = 1 ) 10136: { 10136: tbb::task_group_context ctx; 10136: tbb::empty_task &r = *new( tbb::task::allocate_root(ctx) ) tbb::empty_task; 10136: r.set_ref_count(3); 10136: r.spawn( *new( r.allocate_child() ) CancellatorTaskT(ctx, threshold) ); 10136: sched_yield(); 10136: r.spawn( *new( r.allocate_child() ) LauncherTaskT(ctx) ); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: r.wait_for_all(); 10136: } catch(...) { ((false)?(void)0:ReportError("../../src/test/harness_eh.h",315,"false","Cancelling tasks must not cause any exceptions")); (void)(l_ExceptionCaughtAtCurrentLevel && unknownException); }; 10136: r.destroy(r); 10136: } 10136: # 55 "../../src/test/test_eh_algorithms.cpp" 2 10136: # 86 "../../src/test/test_eh_algorithms.cpp" 10136: inline void ResetGlobals ( bool throwException = true, bool flog = false ) { 10136: ResetEhGlobals( throwException, flog ); 10136: g_FedTasksCount = 0; 10136: g_OuterParCalls = 0; 10136: g_NestedPipelines = false; 10136: g_TGCCancelled = 0; 10136: } 10136: 10136: 10136: 10136: 10136: typedef size_t count_type; 10136: typedef tbb::blocked_range range_type; 10136: 10136: inline intptr_t CountSubranges(range_type r) { 10136: if(!r.is_divisible()) return intptr_t(1); 10136: range_type r2(r,tbb::split()); 10136: return CountSubranges(r) + CountSubranges(r2); 10136: } 10136: 10136: inline intptr_t NumSubranges ( intptr_t length, intptr_t grain ) { 10136: return CountSubranges(range_type(0,length,grain)); 10136: } 10136: 10136: template 10136: intptr_t TestNumSubrangesCalculation ( intptr_t length, intptr_t grain, intptr_t inner_length, intptr_t inner_grain ) { 10136: ResetGlobals(); 10136: g_ThrowException = false; 10136: intptr_t outerCalls = NumSubranges(length, grain), 10136: innerCalls = NumSubranges(inner_length, inner_grain), 10136: maxExecuted = outerCalls * (innerCalls + 1); 10136: tbb::parallel_for( range_type(0, length, grain), Body() ); 10136: ((g_CurExecuted == maxExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",118,"g_CurExecuted == maxExecuted","Wrong estimation of bodies invocation count")); 10136: return maxExecuted; 10136: } 10136: 10136: class NoThrowParForBody { 10136: public: 10136: void operator()( const range_type& r ) const { 10136: volatile count_type x = 0; 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled() ) ++g_TGCCancelled; 10136: count_type end = r.end(); 10136: for( count_type i=r.begin(); i 10136: class SimpleParReduceBody: NoAssign { 10136: ParForBody m_Body; 10136: public: 10136: void operator()( const range_type& r ) const { m_Body(r); } 10136: SimpleParReduceBody() {} 10136: SimpleParReduceBody( SimpleParReduceBody& left, tbb::split ) : m_Body(left.m_Body) {} 10136: void join( SimpleParReduceBody& ) {} 10136: }; 10136: 10136: 10136: 10136: template 10136: void TestParallelLoopAux() { 10136: Partitioner partitioner; 10136: for( int i=0; i<2; ++i ) { 10136: ResetGlobals(); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: if( i==0 ) 10136: tbb::parallel_for( range_type(0, 100000, 100), ParForBody(), partitioner ); 10136: else { 10136: SimpleParReduceBody rb; 10136: tbb::parallel_reduce( range_type(0, 100000, 100), rb, partitioner ); 10136: } 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 173, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 173, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<173>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 173, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",173,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: # 188 "../../src/test/test_eh_algorithms.cpp" 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",188,"g_TGCCancelled <= g_NumThreads","Too many tasks ran after exception thrown")); 10136: if( g_TGCCancelled > g_NumThreads) !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 189, __FUNCTION__)->trace( "Too many tasks ran after exception thrown (%d vs. %d)\n", 10136: (int)g_TGCCancelled, (int)g_NumThreads); 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",191,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: if ( g_SolitaryException ) { 10136: ((g_NumExceptionsCaught == 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",193,"g_NumExceptionsCaught == 1","No try_blocks in any body expected in this test")); 10136: ((g_NumExceptionsCaught == (g_ExceptionInMaster ? g_MasterExecutedThrow : g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",195,"g_NumExceptionsCaught == (g_ExceptionInMaster ? g_MasterExecutedThrow : g_NonMasterExecutedThrow)","Not all throws were caught")) 10136: ; 10136: ((g_ExecutedAtFirstCatch == g_ExecutedAtLastCatch)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",196,"g_ExecutedAtFirstCatch == g_ExecutedAtLastCatch","Too many exceptions occurred")); 10136: } 10136: else { 10136: ((g_NumExceptionsCaught >= 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",199,"g_NumExceptionsCaught >= 1","No try blocks in any body expected in this test")); 10136: } 10136: } 10136: } 10136: 10136: 10136: 10136: template 10136: void TestParallelLoop() { 10136: 10136: TestParallelLoopAux(); 10136: TestParallelLoopAux(); 10136: 10136: 10136: 10136: 10136: 10136: 10136: } 10136: 10136: class SimpleParForBody: NoAssign { 10136: public: 10136: void operator()( const range_type& r ) const { 10136: Harness::ConcurrencyTracker ct; 10136: volatile long x = 0; 10136: ++g_CurExecuted; 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled() ) ++g_TGCCancelled; 10136: for( count_type i = r.begin(); i != r.end(); ++i ) 10136: x += 0; 10136: WaitUntilConcurrencyPeaks(); 10136: ThrowTestException(1); 10136: } 10136: }; 10136: 10136: void Test1() { 10136: 10136: TestParallelLoop(); 10136: } 10136: 10136: class OuterParForBody: NoAssign { 10136: public: 10136: void operator()( const range_type& ) const { 10136: Harness::ConcurrencyTracker ct; 10136: ++g_OuterParCalls; 10136: tbb::parallel_for( tbb::blocked_range(0, (100000 / 100), (100 / 10)), SimpleParForBody() ); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: void Test2 () { 10136: TestParallelLoop(); 10136: } 10136: 10136: class OuterParForBodyWithIsolatedCtx { 10136: public: 10136: void operator()( const range_type& ) const { 10136: tbb::task_group_context ctx(tbb::task_group_context::isolated); 10136: ++g_OuterParCalls; 10136: tbb::parallel_for( tbb::blocked_range(0, (100000 / 100), (100 / 10)), SimpleParForBody(), tbb::simple_partitioner(), ctx ); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void Test3 () { 10136: ResetGlobals(); 10136: typedef OuterParForBodyWithIsolatedCtx body_type; 10136: intptr_t innerCalls = NumSubranges((100000 / 100), (100 / 10)), 10136: 10136: 10136: 10136: 10136: 10136: minExecuted = (g_NumThreads - 1) * innerCalls; 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_for( range_type(0, 100, 10), body_type() ); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 285, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 285, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<285>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 285, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",285,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: minExecuted = (g_OuterParCalls - 1) * innerCalls; 10136: # 301 "../../src/test/test_eh_algorithms.cpp" 10136: bool okayNoExceptionsCaught = (g_ExceptionInMaster && !g_MasterExecuted) || (!g_ExceptionInMaster && !g_NonMasterExecuted); 10136: if ( g_SolitaryException ) { 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",303,"g_TGCCancelled <= g_NumThreads","Too many tasks survived exception")); 10136: ((g_CurExecuted > minExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",304,"g_CurExecuted > minExecuted","Too few tasks survived exception")); 10136: ((g_CurExecuted <= minExecuted + (g_ExecutedAtLastCatch + g_NumThreads))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",305,"g_CurExecuted <= minExecuted + (g_ExecutedAtLastCatch + g_NumThreads)","Too many tasks survived exception")); 10136: ((g_NumExceptionsCaught == 1 || okayNoExceptionsCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",306,"g_NumExceptionsCaught == 1 || okayNoExceptionsCaught","No try_blocks in any body expected in this test")); 10136: } 10136: else { 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",309,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: ((g_NumExceptionsCaught >= 1 || okayNoExceptionsCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",310,"g_NumExceptionsCaught >= 1 || okayNoExceptionsCaught","No try_blocks in any body expected in this test")); 10136: } 10136: } 10136: 10136: class OuterParForExceptionSafeBody { 10136: public: 10136: void operator()( const range_type& ) const { 10136: tbb::task_group_context ctx(tbb::task_group_context::isolated); 10136: ++g_OuterParCalls; 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_for( tbb::blocked_range(0, (100000 / 100), (100 / 10)), SimpleParForBody(), tbb::simple_partitioner(), ctx ); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",321,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",321,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",321,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 321, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",321,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 321, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",321,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<321>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 321, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown);; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: void Test4 () { 10136: ResetGlobals( true, true ); 10136: intptr_t innerCalls = NumSubranges((100000 / 100), (100 / 10)), 10136: outerCalls = NumSubranges(100, 10); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_for( range_type(0, 100, 10), OuterParForExceptionSafeBody() ); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",335,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",335,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",335,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 335, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",335,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 335, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",335,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<335>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 335, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown);; 10136: 10136: 10136: 10136: 10136: intptr_t minExecuted = (outerCalls - g_NumExceptionsCaught) * innerCalls; 10136: bool okayNoExceptionsCaught = (g_ExceptionInMaster && !g_MasterExecuted) || (!g_ExceptionInMaster && !g_NonMasterExecuted); 10136: if ( g_SolitaryException ) { 10136: 10136: 10136: 10136: ((g_NumExceptionsCaught == 1 || okayNoExceptionsCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",346,"g_NumExceptionsCaught == 1 || okayNoExceptionsCaught","No exception registered")); 10136: ((g_CurExecuted >= minExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",347,"g_CurExecuted >= minExecuted","Too few tasks executed")); 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",348,"g_TGCCancelled <= g_NumThreads","Too many tasks survived exception")); 10136: 10136: 10136: 10136: 10136: ((g_CurExecuted <= minExecuted + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",353,"g_CurExecuted <= minExecuted + g_NumThreads","Too many tasks survived exception")); 10136: if(g_CurExecuted > minExecuted + g_NumThreads) !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 354, __FUNCTION__)->trace("Unusual number of tasks executed after signal (%d vs. %d)\n", 10136: (int)g_CurExecuted, minExecuted + g_NumThreads); 10136: } 10136: else { 10136: (((g_NumExceptionsCaught >= 1 && g_NumExceptionsCaught <= outerCalls) || okayNoExceptionsCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",358,"(g_NumExceptionsCaught >= 1 && g_NumExceptionsCaught <= outerCalls) || okayNoExceptionsCaught","Unexpected actual number of exceptions")); 10136: ((g_CurExecuted >= minExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",359,"g_CurExecuted >= minExecuted","Too few executed tasks reported")); 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",360,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived multiple exceptions")); 10136: if(g_CurExecuted > g_ExecutedAtLastCatch + g_NumThreads) !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 361, __FUNCTION__)->trace("Unusual number of tasks executed after signal (%d vs. %d)\n", 10136: (int)g_CurExecuted, g_ExecutedAtLastCatch + g_NumThreads); 10136: ((g_CurExecuted <= outerCalls * (1 + g_NumThreads))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",363,"g_CurExecuted <= outerCalls * (1 + g_NumThreads)","Too many tasks survived exception")); 10136: } 10136: } 10136: 10136: 10136: 10136: class ParForBodyToCancel { 10136: public: 10136: void operator()( const range_type& ) const { 10136: ++g_CurExecuted; 10136: CancellatorTask::WaitUntilReady(); 10136: } 10136: }; 10136: 10136: template 10136: class ParForLauncherTask : public tbb::task { 10136: tbb::task_group_context &my_ctx; 10136: 10136: tbb::task* execute () override { 10136: tbb::parallel_for( range_type(0, 100000, 100), B(), tbb::simple_partitioner(), my_ctx ); 10136: return 10136: # 383 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 383 "../../src/test/test_eh_algorithms.cpp" 10136: ; 10136: } 10136: public: 10136: ParForLauncherTask ( tbb::task_group_context& ctx ) : my_ctx(ctx) {} 10136: }; 10136: 10136: 10136: void TestCancelation1 () { 10136: ResetGlobals( false ); 10136: RunCancellationTest, CancellatorTask>( NumSubranges(100000, 100) / 4 ); 10136: } 10136: 10136: class CancellatorTask2 : public tbb::task { 10136: tbb::task_group_context &m_GroupToCancel; 10136: 10136: tbb::task* execute () override { 10136: Harness::ConcurrencyTracker ct; 10136: WaitUntilConcurrencyPeaks(); 10136: m_GroupToCancel.cancel_group_execution(); 10136: g_ExecutedAtLastCatch = g_CurExecuted; 10136: return 10136: # 403 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 403 "../../src/test/test_eh_algorithms.cpp" 10136: ; 10136: } 10136: public: 10136: CancellatorTask2 ( tbb::task_group_context& ctx, intptr_t ) : m_GroupToCancel(ctx) {} 10136: }; 10136: 10136: class ParForBodyToCancel2 { 10136: public: 10136: void operator()( const range_type& ) const { 10136: ++g_CurExecuted; 10136: Harness::ConcurrencyTracker ct; 10136: 10136: while( !tbb::task::self().is_cancelled() ) 10136: sched_yield(); 10136: } 10136: }; 10136: 10136: 10136: 10136: void TestCancelation2 () { 10136: ResetGlobals(); 10136: RunCancellationTest, CancellatorTask2>(); 10136: ((g_ExecutedAtLastCatch < g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",425,"g_ExecutedAtLastCatch < g_NumThreads","Somehow worker tasks started their execution before the cancellator task")); 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",426,"g_TGCCancelled <= g_NumThreads","Too many tasks survived cancellation")); 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",427,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Some tasks were executed after cancellation")); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: class Worker { 10136: static const int max_nesting = 3; 10136: static const int reduce_range = 1024; 10136: static const int reduce_grain = 256; 10136: public: 10136: int DoWork (int level); 10136: int Validate (int start_level) { 10136: int expected = 1; 10136: for(int i=start_level+1; i& r ) { 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled() ) ++g_TGCCancelled; 10136: for (size_t i = r.begin (); i != r.end (); ++i) { 10136: m_Result += m_SharedWorker->DoWork (m_NestingLevel); 10136: } 10136: } 10136: void join (const RecursiveParReduceBodyWithSharedWorker & x) { 10136: m_Result += x.m_Result; 10136: } 10136: int result () { return m_Result; } 10136: }; 10136: 10136: int Worker::DoWork ( int level ) { 10136: ++level; 10136: if ( level < max_nesting ) { 10136: RecursiveParReduceBodyWithSharedWorker rt (this, level); 10136: tbb::parallel_reduce (tbb::blocked_range(0, reduce_range, reduce_grain), rt); 10136: return rt.result(); 10136: } 10136: else 10136: return 1; 10136: } 10136: 10136: 10136: void TestCancelation3 () { 10136: Worker w; 10136: int result = w.DoWork (0); 10136: int expected = w.Validate(0); 10136: ((result == expected)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",494,"result == expected","Wrong calculation result")); 10136: } 10136: 10136: struct StatsCounters { 10136: tbb::atomic my_total_created; 10136: tbb::atomic my_total_deleted; 10136: StatsCounters() { 10136: my_total_created = 0; 10136: my_total_deleted = 0; 10136: } 10136: }; 10136: 10136: class ParReduceBody { 10136: StatsCounters* my_stats; 10136: size_t my_id; 10136: bool my_exception; 10136: 10136: public: 10136: ParReduceBody( StatsCounters& s_, bool e_ ) : my_stats(&s_), my_exception(e_) { 10136: my_id = my_stats->my_total_created++; 10136: } 10136: 10136: ParReduceBody( const ParReduceBody& lhs ) { 10136: my_stats = lhs.my_stats; 10136: my_id = my_stats->my_total_created++; 10136: } 10136: 10136: ParReduceBody( ParReduceBody& lhs, tbb::split ) { 10136: my_stats = lhs.my_stats; 10136: my_id = my_stats->my_total_created++; 10136: } 10136: 10136: ~ParReduceBody(){ ++my_stats->my_total_deleted; } 10136: 10136: void operator()( const tbb::blocked_range& ) const { 10136: 10136: if( my_id >= 12 ) { 10136: if( my_exception ) 10136: ThrowTestException(1); 10136: else 10136: tbb::task::self().cancel_group_execution(); 10136: } 10136: } 10136: 10136: void join( ParReduceBody& ) {} 10136: }; 10136: 10136: void TestCancelation4() { 10136: StatsCounters statsObj; 10136: try { 10136: tbb::task_group_context tgc1, tgc2; 10136: ParReduceBody body_for_cancellation(statsObj, false), body_for_exception(statsObj, true); 10136: tbb::parallel_reduce( tbb::blocked_range(0,100000000,100), body_for_cancellation, tbb::simple_partitioner(), tgc1 ); 10136: tbb::parallel_reduce( tbb::blocked_range(0,100000000,100), body_for_exception, tbb::simple_partitioner(), tgc2 ); 10136: } catch(...) {} 10136: ((statsObj.my_total_created==statsObj.my_total_deleted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",549,"statsObj.my_total_created==statsObj.my_total_deleted","Not all parallel_reduce body objects created were reclaimed")); 10136: } 10136: 10136: void RunParForAndReduceTests () { 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 553, __FUNCTION__)->trace( "parallel for and reduce tests\n" ); 10136: tbb::task_scheduler_init init (g_NumThreads); 10136: g_Master = Harness::CurrentTid(); 10136: 10136: 10136: Test0(); 10136: Test1(); 10136: Test2(); 10136: Test3(); 10136: Test4(); 10136: 10136: TestCancelation1(); 10136: TestCancelation2(); 10136: TestCancelation3(); 10136: TestCancelation4(); 10136: } 10136: # 585 "../../src/test/test_eh_algorithms.cpp" 10136: void Feed ( tbb::parallel_do_feeder &feeder, size_t val ) { 10136: if (g_FedTasksCount < 50) { 10136: ++g_FedTasksCount; 10136: feeder.add(val); 10136: } 10136: } 10136: 10136: # 1 "../../src/test/harness_iterator.h" 1 10136: # 29 "../../src/test/harness_iterator.h" 10136: namespace Harness { 10136: 10136: template 10136: class InputIterator { 10136: public: 10136: typedef std::input_iterator_tag iterator_category; 10136: typedef T value_type; 10136: typedef typename std::allocator::difference_type difference_type; 10136: typedef typename std::allocator::pointer pointer; 10136: typedef typename std::allocator::reference reference; 10136: 10136: explicit InputIterator ( T * ptr ) : my_ptr(ptr), my_shared_epoch(new Epoch), my_current_epoch(0) {} 10136: 10136: InputIterator( const InputIterator& it ) { 10136: ((it.my_current_epoch == it.my_shared_epoch->epoch)?(void)0:ReportError("../../src/test/harness_iterator.h",43,"it.my_current_epoch == it.my_shared_epoch->epoch","Copying an invalidated iterator")); 10136: my_ptr = it.my_ptr; 10136: my_shared_epoch = it.my_shared_epoch; 10136: my_current_epoch = it.my_current_epoch; 10136: ++my_shared_epoch->refcounter; 10136: } 10136: 10136: InputIterator& operator= ( const InputIterator& it ) { 10136: ((it.my_current_epoch == it.my_shared_epoch->epoch)?(void)0:ReportError("../../src/test/harness_iterator.h",51,"it.my_current_epoch == it.my_shared_epoch->epoch","Assigning an invalidated iterator")); 10136: my_ptr = it.my_ptr; 10136: my_current_epoch = it.my_current_epoch; 10136: if(my_shared_epoch == it.my_shared_epoch) 10136: return *this; 10136: destroy(); 10136: my_shared_epoch = it.my_shared_epoch; 10136: ++my_shared_epoch->refcounter; 10136: return *this; 10136: } 10136: 10136: T& operator* () const { 10136: ((my_shared_epoch->epoch == my_current_epoch)?(void)0:ReportError("../../src/test/harness_iterator.h",63,"my_shared_epoch->epoch == my_current_epoch","Dereferencing an invalidated input iterator")); 10136: return *my_ptr; 10136: } 10136: 10136: InputIterator& operator++ () { 10136: ((my_shared_epoch->epoch == my_current_epoch)?(void)0:ReportError("../../src/test/harness_iterator.h",68,"my_shared_epoch->epoch == my_current_epoch","Incrementing an invalidated input iterator")); 10136: ++my_ptr; 10136: ++my_current_epoch; 10136: ++my_shared_epoch->epoch; 10136: return *this; 10136: } 10136: 10136: bool operator== ( const InputIterator& it ) const { 10136: ((my_shared_epoch->epoch == my_current_epoch)?(void)0:ReportError("../../src/test/harness_iterator.h",76,"my_shared_epoch->epoch == my_current_epoch","Comparing an invalidated input iterator")); 10136: ((it.my_shared_epoch->epoch == it.my_current_epoch)?(void)0:ReportError("../../src/test/harness_iterator.h",77,"it.my_shared_epoch->epoch == it.my_current_epoch","Comparing with an invalidated input iterator")); 10136: return my_ptr == it.my_ptr; 10136: } 10136: 10136: ~InputIterator() { 10136: destroy(); 10136: } 10136: private: 10136: void destroy() { 10136: if(0 == --my_shared_epoch->refcounter) { 10136: delete my_shared_epoch; 10136: } 10136: } 10136: struct Epoch { 10136: typedef tbb::atomic Counter; 10136: Epoch() { epoch = 0; refcounter = 1; } 10136: Counter epoch; 10136: Counter refcounter; 10136: }; 10136: 10136: T * my_ptr; 10136: Epoch *my_shared_epoch; 10136: size_t my_current_epoch; 10136: }; 10136: 10136: template 10136: class ForwardIterator { 10136: T * my_ptr; 10136: public: 10136: typedef std::forward_iterator_tag iterator_category; 10136: typedef T value_type; 10136: typedef typename std::allocator::difference_type difference_type; 10136: typedef typename std::allocator::pointer pointer; 10136: typedef typename std::allocator::reference reference; 10136: 10136: explicit ForwardIterator ( T * ptr ) : my_ptr(ptr){} 10136: 10136: ForwardIterator ( const ForwardIterator& r ) : my_ptr(r.my_ptr){} 10136: T& operator* () const { return *my_ptr; } 10136: ForwardIterator& operator++ () { ++my_ptr; return *this; } 10136: bool operator== ( const ForwardIterator& r ) const { return my_ptr == r.my_ptr; } 10136: }; 10136: 10136: template 10136: class RandomIterator { 10136: T * my_ptr; 10136: public: 10136: typedef std::random_access_iterator_tag iterator_category; 10136: typedef T value_type; 10136: typedef typename std::allocator::pointer pointer; 10136: typedef typename std::allocator::reference reference; 10136: typedef typename std::allocator::difference_type difference_type; 10136: 10136: explicit RandomIterator ( T * ptr ) : my_ptr(ptr){} 10136: RandomIterator ( const RandomIterator& r ) : my_ptr(r.my_ptr){} 10136: T& operator* () const { return *my_ptr; } 10136: RandomIterator& operator++ () { ++my_ptr; return *this; } 10136: bool operator== ( const RandomIterator& r ) const { return my_ptr == r.my_ptr; } 10136: bool operator!= ( const RandomIterator& r ) const { return my_ptr != r.my_ptr; } 10136: difference_type operator- (const RandomIterator &r) const {return my_ptr - r.my_ptr;} 10136: RandomIterator operator+ (difference_type n) const {return RandomIterator(my_ptr + n);} 10136: bool operator< (const RandomIterator &r) const {return my_ptr < r.my_ptr;} 10136: }; 10136: 10136: template 10136: class ConstRandomIterator { 10136: const T * my_ptr; 10136: public: 10136: typedef std::random_access_iterator_tag iterator_category; 10136: typedef const T value_type; 10136: typedef typename std::allocator::const_pointer pointer; 10136: typedef typename std::allocator::const_reference reference; 10136: typedef typename std::allocator::difference_type difference_type; 10136: 10136: explicit ConstRandomIterator ( const T * ptr ) : my_ptr(ptr){} 10136: ConstRandomIterator ( const ConstRandomIterator& r ) : my_ptr(r.my_ptr){} 10136: const T& operator* () const { return *my_ptr; } 10136: ConstRandomIterator& operator++ () { ++my_ptr; return *this; } 10136: bool operator== ( const ConstRandomIterator& r ) const { return my_ptr == r.my_ptr; } 10136: bool operator!= ( const ConstRandomIterator& r ) const { return my_ptr != r.my_ptr; } 10136: difference_type operator- (const ConstRandomIterator &r) const {return my_ptr - r.my_ptr;} 10136: ConstRandomIterator operator+ (difference_type n) const {return ConstRandomIterator(my_ptr + n);} 10136: bool operator< (const ConstRandomIterator &r) const {return my_ptr < r.my_ptr;} 10136: }; 10136: 10136: } 10136: # 593 "../../src/test/test_eh_algorithms.cpp" 2 10136: 10136: 10136: 10136: 10136: class SimpleParDoBody { 10136: public: 10136: void operator() ( size_t &value ) const { 10136: ++g_CurExecuted; 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled() ) ++g_TGCCancelled; 10136: Harness::ConcurrencyTracker ct; 10136: value += 1000; 10136: WaitUntilConcurrencyPeaks(); 10136: ThrowTestException(1); 10136: } 10136: }; 10136: 10136: 10136: class SimpleParDoBodyWithFeeder : SimpleParDoBody { 10136: public: 10136: void operator() ( size_t &value, tbb::parallel_do_feeder &feeder ) const { 10136: Feed(feeder, 0); 10136: SimpleParDoBody::operator()(value); 10136: } 10136: }; 10136: 10136: 10136: template 10136: void Test1_parallel_do () { 10136: ResetGlobals(); 10136: size_t test_vector[1000 + 1]; for (int i =0; i < 1000; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[1000]); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_do(begin, end, simple_body() ); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 627, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 627, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<627>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 627, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",627,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",628,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",629,"g_TGCCancelled <= g_NumThreads","Too many tasks survived cancellation")); 10136: ((g_NumExceptionsCaught == 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",630,"g_NumExceptionsCaught == 1","No try_blocks in any body expected in this test")); 10136: if ( !g_SolitaryException ) 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",632,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: 10136: } 10136: 10136: template 10136: class OuterParDoBody { 10136: public: 10136: void operator()( size_t& ) const { 10136: ++g_OuterParCalls; 10136: size_t test_vector[100 + 1]; for (int i =0; i < 100; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[100]); 10136: tbb::parallel_do(begin, end, SimpleParDoBody()); 10136: } 10136: }; 10136: 10136: template 10136: class OuterParDoBodyWithFeeder : OuterParDoBody { 10136: public: 10136: void operator()( size_t& value, tbb::parallel_do_feeder& feeder ) const { 10136: Feed(feeder, 0); 10136: OuterParDoBody::operator()(value); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void Test2_parallel_do () { 10136: ResetGlobals(); 10136: size_t test_vector[1000 + 1]; for (int i =0; i < 1000; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[1000]); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_do(begin, end, outer_body() ); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 666, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 666, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<666>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 666, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",666,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",668,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",669,"g_TGCCancelled <= g_NumThreads","Too many tasks survived cancellation")); 10136: ((g_NumExceptionsCaught == 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",670,"g_NumExceptionsCaught == 1","No try_blocks in any body expected in this test")); 10136: if ( !g_SolitaryException ) 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",672,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: } 10136: 10136: template 10136: class OuterParDoBodyWithIsolatedCtx { 10136: public: 10136: void operator()( size_t& ) const { 10136: tbb::task_group_context ctx(tbb::task_group_context::isolated); 10136: ++g_OuterParCalls; 10136: size_t test_vector[100 + 1]; for (int i =0; i < 100; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[100]); 10136: tbb::parallel_do(begin, end, SimpleParDoBody(), ctx); 10136: } 10136: }; 10136: 10136: template 10136: class OuterParDoBodyWithIsolatedCtxWithFeeder : OuterParDoBodyWithIsolatedCtx { 10136: public: 10136: void operator()( size_t& value, tbb::parallel_do_feeder &feeder ) const { 10136: Feed(feeder, 0); 10136: OuterParDoBodyWithIsolatedCtx::operator()(value); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void Test3_parallel_do () { 10136: ResetGlobals(); 10136: size_t test_vector[50 + 1]; for (int i =0; i < 50; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[50]); 10136: intptr_t innerCalls = 100, 10136: 10136: minExecuted = (g_NumThreads - 1) * innerCalls; 10136: g_Master = Harness::CurrentTid(); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_do(begin, end, outer_body()); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 711, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 711, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<711>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 711, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",711,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: 10136: minExecuted = (g_OuterParCalls - 1) * innerCalls; 10136: 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",715,"g_TGCCancelled <= g_NumThreads","Too many tasks survived exception")); 10136: if(g_TGCCancelled > g_NumThreads) !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 716, __FUNCTION__)->trace("Extra thread(s) executed after cancel (%d vs. %d)\n", 10136: (int)g_TGCCancelled, (int)g_NumThreads); 10136: if ( g_SolitaryException ) { 10136: ((g_CurExecuted > minExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",719,"g_CurExecuted > minExecuted","Too few tasks survived exception")); 10136: ((g_CurExecuted <= minExecuted + (g_ExecutedAtLastCatch + g_NumThreads))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",720,"g_CurExecuted <= minExecuted + (g_ExecutedAtLastCatch + g_NumThreads)","Too many tasks survived exception")); 10136: } 10136: ((g_NumExceptionsCaught == 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",722,"g_NumExceptionsCaught == 1","No try_blocks in any body expected in this test")); 10136: if ( !g_SolitaryException ) 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",724,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: } 10136: 10136: template 10136: class OuterParDoWithEhBody { 10136: public: 10136: void operator()( size_t& ) const { 10136: tbb::task_group_context ctx(tbb::task_group_context::isolated); 10136: ++g_OuterParCalls; 10136: size_t test_vector[100 + 1]; for (int i =0; i < 100; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[100]); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_do(begin, end, SimpleParDoBody(), ctx); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",736,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",736,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",736,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 736, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",736,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 736, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",736,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<736>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 736, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown);; 10136: } 10136: }; 10136: 10136: template 10136: class OuterParDoWithEhBodyWithFeeder : NoAssign, OuterParDoWithEhBody { 10136: public: 10136: void operator()( size_t &value, tbb::parallel_do_feeder &feeder ) const { 10136: Feed(feeder, 0); 10136: OuterParDoWithEhBody::operator()(value); 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: template 10136: void Test4_parallel_do () { 10136: ResetGlobals( true, true ); 10136: size_t test_vector[50 + 1]; for (int i =0; i < 50; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[50]); 10136: g_Master = Harness::CurrentTid(); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_do(begin, end, outer_body_with_eh()); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",760,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",760,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",760,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 760, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",760,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 760, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",760,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<760>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 760, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown);; 10136: ((!l_ExceptionCaughtAtCurrentLevel)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",761,"!l_ExceptionCaughtAtCurrentLevel","All exceptions must have been handled in the parallel_do body")); 10136: intptr_t innerCalls = 100, 10136: outerCalls = 50 + g_FedTasksCount, 10136: maxExecuted = outerCalls * innerCalls, 10136: minExecuted = 0; 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",766,"g_TGCCancelled <= g_NumThreads","Too many tasks survived exception")); 10136: if ( g_SolitaryException ) { 10136: minExecuted = maxExecuted - innerCalls; 10136: ((g_NumExceptionsCaught == 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",769,"g_NumExceptionsCaught == 1","No exception registered")); 10136: ((g_CurExecuted >= minExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",770,"g_CurExecuted >= minExecuted","Too few tasks executed")); 10136: 10136: 10136: 10136: ((g_CurExecuted < maxExecuted || g_TGCCancelled)?(void)0:ReportWarning("../../src/test/test_eh_algorithms.cpp",774,"g_CurExecuted < maxExecuted || g_TGCCancelled","All tasks survived exception. Oversubscription?")); 10136: } 10136: else { 10136: minExecuted = g_NumExceptionsCaught; 10136: ((g_NumExceptionsCaught > 1 && g_NumExceptionsCaught <= outerCalls)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",778,"g_NumExceptionsCaught > 1 && g_NumExceptionsCaught <= outerCalls","Unexpected actual number of exceptions")); 10136: ((g_CurExecuted >= minExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",779,"g_CurExecuted >= minExecuted","Too many executed tasks reported")); 10136: ((g_CurExecuted < g_ExecutedAtLastCatch + g_NumThreads + outerCalls)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",780,"g_CurExecuted < g_ExecutedAtLastCatch + g_NumThreads + outerCalls","Too many tasks survived multiple exceptions")); 10136: ((g_CurExecuted <= outerCalls * (1 + g_NumThreads))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",781,"g_CurExecuted <= outerCalls * (1 + g_NumThreads)","Too many tasks survived exception")); 10136: } 10136: } 10136: 10136: 10136: class ParDoBodyWithThrowingFeederTasks { 10136: public: 10136: 10136: void operator() ( size_t &value, tbb::parallel_do_feeder &feeder ) const { 10136: ++g_CurExecuted; 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled() ) ++g_TGCCancelled; 10136: Feed(feeder, 1); 10136: if (value == 1) 10136: ThrowTestException(1); 10136: } 10136: }; 10136: 10136: 10136: template 10136: void Test5_parallel_do () { 10136: ResetGlobals(); 10136: size_t test_vector[1000 + 1]; for (int i =0; i < 1000; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[1000]); 10136: g_Master = Harness::CurrentTid(); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: tbb::parallel_do(begin, end, ParDoBodyWithThrowingFeederTasks()); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",808,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",808,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",808,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 808, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",808,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 808, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",808,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<808>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 808, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown);; 10136: if (g_SolitaryException) { 10136: 10136: 10136: ((l_ExceptionCaughtAtCurrentLevel || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow) || (g_ExceptionInMaster && !g_MasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",815,"l_ExceptionCaughtAtCurrentLevel || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow) || (g_ExceptionInMaster && !g_MasterExecutedThrow)","At least one exception should occur")) 10136: 10136: 10136: ; 10136: if(!g_ExceptionCaught) { 10136: if(g_ExceptionInMaster) 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 818, __FUNCTION__)->trace("PDo exception not thrown; non-masters handled all throwing values.\n"); 10136: else 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 820, __FUNCTION__)->trace("PDo exception not thrown; master handled all throwing values.\n"); 10136: } 10136: } 10136: } 10136: 10136: 10136: 10136: class ParDoBodyToCancel { 10136: public: 10136: void operator()( size_t& ) const { 10136: ++g_CurExecuted; 10136: CancellatorTask::WaitUntilReady(); 10136: } 10136: }; 10136: 10136: class ParDoBodyToCancelWithFeeder : ParDoBodyToCancel { 10136: public: 10136: void operator()( size_t& value, tbb::parallel_do_feeder &feeder ) const { 10136: Feed(feeder, 0); 10136: ParDoBodyToCancel::operator()(value); 10136: } 10136: }; 10136: 10136: template 10136: class ParDoWorkerTask : public tbb::task { 10136: tbb::task_group_context &my_ctx; 10136: 10136: tbb::task* execute () override { 10136: size_t test_vector[100 + 1]; for (int i =0; i < 100; i++) test_vector[i] = i; Iterator begin(&test_vector[0]); Iterator end(&test_vector[100]); 10136: tbb::parallel_do( begin, end, B(), my_ctx ); 10136: return 10136: # 850 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 850 "../../src/test/test_eh_algorithms.cpp" 10136: ; 10136: } 10136: public: 10136: ParDoWorkerTask ( tbb::task_group_context& ctx ) : my_ctx(ctx) {} 10136: }; 10136: 10136: 10136: template 10136: void TestCancelation1_parallel_do () { 10136: ResetGlobals( false ); 10136: intptr_t threshold = 10; 10136: tbb::task_group_context ctx; 10136: ctx.reset(); 10136: tbb::empty_task &r = *new( tbb::task::allocate_root() ) tbb::empty_task; 10136: r.set_ref_count(3); 10136: r.spawn( *new( r.allocate_child() ) CancellatorTask(ctx, threshold) ); 10136: sched_yield(); 10136: r.spawn( *new( r.allocate_child() ) ParDoWorkerTask(ctx) ); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: r.wait_for_all(); 10136: } catch(...) { ((false)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",870,"false","Cancelling tasks must not cause any exceptions")); (void)(l_ExceptionCaughtAtCurrentLevel && unknownException); }; 10136: ((g_CurExecuted < g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",871,"g_CurExecuted < g_ExecutedAtLastCatch + g_NumThreads","Too many tasks were executed after cancellation")); 10136: r.destroy(r); 10136: } 10136: 10136: class ParDoBodyToCancel2 { 10136: public: 10136: void operator()( size_t& ) const { 10136: ++g_CurExecuted; 10136: Harness::ConcurrencyTracker ct; 10136: 10136: while( !tbb::task::self().is_cancelled() ) 10136: sched_yield(); 10136: } 10136: }; 10136: 10136: class ParDoBodyToCancel2WithFeeder : ParDoBodyToCancel2 { 10136: public: 10136: void operator()( size_t& value, tbb::parallel_do_feeder &feeder ) const { 10136: Feed(feeder, 0); 10136: ParDoBodyToCancel2::operator()(value); 10136: } 10136: }; 10136: 10136: 10136: 10136: template 10136: void TestCancelation2_parallel_do () { 10136: ResetGlobals(); 10136: RunCancellationTest, CancellatorTask2>(); 10136: } 10136: # 914 "../../src/test/test_eh_algorithms.cpp" 10136: void RunParDoTests() { 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 915, __FUNCTION__)->trace( "parallel do tests\n" ); 10136: tbb::task_scheduler_init init (g_NumThreads); 10136: g_Master = Harness::CurrentTid(); 10136: 10136: Test1_parallel_do, SimpleParDoBody>(); Test1_parallel_do, SimpleParDoBodyWithFeeder>(); Test1_parallel_do, SimpleParDoBody>(); Test1_parallel_do, SimpleParDoBodyWithFeeder>(); 10136: Test2_parallel_do, OuterParDoBody > >(); Test2_parallel_do, OuterParDoBodyWithFeeder > >(); Test2_parallel_do, OuterParDoBody > >(); Test2_parallel_do, OuterParDoBodyWithFeeder > >(); 10136: Test3_parallel_do, OuterParDoBodyWithIsolatedCtx > >(); Test3_parallel_do, OuterParDoBodyWithIsolatedCtxWithFeeder > >(); Test3_parallel_do, OuterParDoBodyWithIsolatedCtx > >(); Test3_parallel_do, OuterParDoBodyWithIsolatedCtxWithFeeder > >(); 10136: Test4_parallel_do, OuterParDoWithEhBody > >(); Test4_parallel_do, OuterParDoWithEhBodyWithFeeder > >(); Test4_parallel_do, OuterParDoWithEhBody > >(); Test4_parallel_do, OuterParDoWithEhBodyWithFeeder > >(); 10136: Test5_parallel_do >(); 10136: Test5_parallel_do >(); 10136: 10136: TestCancelation1_parallel_do, ParDoBodyToCancel>(); TestCancelation1_parallel_do, ParDoBodyToCancelWithFeeder>(); TestCancelation1_parallel_do, ParDoBodyToCancel>(); TestCancelation1_parallel_do, ParDoBodyToCancelWithFeeder>(); 10136: TestCancelation2_parallel_do, ParDoBodyToCancel2>(); TestCancelation2_parallel_do, ParDoBodyToCancel2WithFeeder>(); TestCancelation2_parallel_do, ParDoBodyToCancel2>(); TestCancelation2_parallel_do, ParDoBodyToCancel2WithFeeder>(); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: const size_t c_DataEndTag = size_t(~0); 10136: 10136: int g_NumTokens = 0; 10136: 10136: 10136: 10136: class InputFilter: public tbb::filter { 10136: tbb::atomic m_Item; 10136: size_t m_Buffer[100 + 1]; 10136: public: 10136: InputFilter() : tbb::filter(parallel) { 10136: m_Item = 0; 10136: for (size_t i = 0; i < 100; ++i ) 10136: m_Buffer[i] = 1; 10136: m_Buffer[100] = c_DataEndTag; 10136: } 10136: 10136: void* operator()( void* ) override { 10136: size_t item = m_Item.fetch_and_increment(); 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled() ) ++g_TGCCancelled; 10136: if(item == 1) { 10136: ++g_PipelinesStarted; 10136: } 10136: if ( item >= 100 ) 10136: return 10136: # 961 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 961 "../../src/test/test_eh_algorithms.cpp" 10136: ; 10136: m_Buffer[item] = 1; 10136: return &m_Buffer[item]; 10136: } 10136: 10136: size_t* buffer() { return m_Buffer; } 10136: }; 10136: 10136: 10136: class NoThrowFilter : public tbb::filter { 10136: size_t m_Value; 10136: public: 10136: enum operation { 10136: addition, 10136: subtraction, 10136: multiplication 10136: } m_Operation; 10136: 10136: NoThrowFilter(operation _operation, size_t value, bool is_parallel) 10136: : filter(is_parallel? tbb::filter::parallel : tbb::filter::serial_in_order), 10136: m_Value(value), m_Operation(_operation) 10136: {} 10136: void* operator()(void* item) override { 10136: size_t &value = *(size_t*)item; 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled() ) ++g_TGCCancelled; 10136: ((value != c_DataEndTag)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",988,"value != c_DataEndTag","terminator element is being processed")); 10136: switch (m_Operation){ 10136: case addition: 10136: value += m_Value; 10136: break; 10136: case subtraction: 10136: value -= m_Value; 10136: break; 10136: case multiplication: 10136: value *= m_Value; 10136: break; 10136: default: 10136: ((0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1000,"0","Wrong operation parameter passed to NoThrowFilter")); 10136: } 10136: return item; 10136: } 10136: }; 10136: 10136: 10136: void Test0_pipeline () { 10136: ResetGlobals(); 10136: 10136: InputFilter inputFilter; 10136: NoThrowFilter filter1(NoThrowFilter::addition, 99, false); 10136: NoThrowFilter filter2(NoThrowFilter::subtraction, 90, true); 10136: NoThrowFilter filter3(NoThrowFilter::multiplication, 5, false); 10136: 10136: tbb::pipeline p; 10136: p.add_filter(inputFilter); 10136: p.add_filter(filter1); 10136: p.add_filter(filter2); 10136: p.add_filter(filter3); 10136: p.run(8); 10136: for (size_t i = 0; i < 100; ++i) 10136: ((inputFilter.buffer()[i] == 50)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1022,"inputFilter.buffer()[i] == 50","pipeline didn't process items properly")); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: class SimpleFilter : public tbb::filter { 10136: bool m_canThrow; 10136: public: 10136: SimpleFilter (tbb::filter::mode _mode, bool canThrow ) : filter (_mode), m_canThrow(canThrow) {} 10136: void* operator()(void* item) override { 10136: ++g_CurExecuted; 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled() ) ++g_TGCCancelled; 10136: if ( m_canThrow ) { 10136: if ( !is_serial() ) { 10136: Harness::ConcurrencyTracker ct; 10136: WaitUntilConcurrencyPeaks( min(g_NumTokens, g_NumThreads) ); 10136: } 10136: ThrowTestException(1); 10136: } 10136: return item; 10136: } 10136: }; 10136: 10136: 10136: struct FilterSet { 10136: tbb::filter::mode mode1, 10136: mode2; 10136: bool throw1, 10136: throw2; 10136: 10136: FilterSet( tbb::filter::mode m1, tbb::filter::mode m2, bool t1, bool t2 ) 10136: : mode1(m1), mode2(m2), throw1(t1), throw2(t2) 10136: {} 10136: }; 10136: 10136: FilterSet serial_parallel( tbb::filter::serial, tbb::filter::parallel, false, true ); 10136: 10136: template 10136: class CustomPipeline : protected tbb::pipeline { 10136: InFilter inputFilter; 10136: Filter filter1; 10136: Filter filter2; 10136: public: 10136: CustomPipeline( const FilterSet& filters ) 10136: : filter1(filters.mode1, filters.throw1), filter2(filters.mode2, filters.throw2) 10136: { 10136: add_filter(inputFilter); 10136: add_filter(filter1); 10136: add_filter(filter2); 10136: } 10136: void run () { tbb::pipeline::run(g_NumTokens); } 10136: void run ( tbb::task_group_context& ctx ) { tbb::pipeline::run(g_NumTokens, ctx); } 10136: 10136: using tbb::pipeline::add_filter; 10136: }; 10136: 10136: typedef CustomPipeline SimplePipeline; 10136: 10136: 10136: void Test1_pipeline ( const FilterSet& filters ) { 10136: ResetGlobals(); 10136: SimplePipeline testPipeline(filters); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: testPipeline.run(); 10136: if ( g_CurExecuted == 2 * 100 ) { 10136: 10136: if(!g_ExceptionInMaster && g_NonMasterExecutedThrow > 0) { 10136: 10136: 10136: ((filters.mode1 != tbb::filter::parallel && filters.mode2 != tbb::filter::parallel)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1095,"filters.mode1 != tbb::filter::parallel && filters.mode2 != tbb::filter::parallel","Unusual count")); 10136: } 10136: else { 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1098, __FUNCTION__)->trace("test1_Pipeline with %d threads: Only the master thread tried to throw, and it is not allowed to.\n", (int)g_NumThreads); 10136: } 10136: 10136: 10136: return; 10136: } 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1104, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1104, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<1104>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1104, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1104,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1105,"g_TGCCancelled <= g_NumThreads","Too many tasks survived exception")); 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1106,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: ((g_NumExceptionsCaught == 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1107,"g_NumExceptionsCaught == 1","No try_blocks in any body expected in this test")); 10136: if ( !g_SolitaryException ) 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1109,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: 10136: } 10136: 10136: 10136: class OuterFilter : public tbb::filter { 10136: public: 10136: OuterFilter (tbb::filter::mode _mode, bool ) : filter (_mode) {} 10136: 10136: void* operator()(void* item) override { 10136: ++g_OuterParCalls; 10136: SimplePipeline testPipeline(serial_parallel); 10136: testPipeline.run(); 10136: return item; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: void Test2_pipeline ( const FilterSet& filters ) { 10136: ResetGlobals(); 10136: g_NestedPipelines = true; 10136: CustomPipeline testPipeline(filters); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: testPipeline.run(); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1137, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1137, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<1137>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1137, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1137,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: bool okayNoExceptionCaught = (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow); 10136: ((g_NumExceptionsCaught == 1 || okayNoExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1139,"g_NumExceptionsCaught == 1 || okayNoExceptionCaught","No try_blocks in any body expected in this test")); 10136: if ( g_SolitaryException ) { 10136: if( g_TGCCancelled > g_NumThreads) !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1141, __FUNCTION__)->trace( "Extra tasks ran after exception thrown (%d vs. %d)\n", 10136: (int)g_TGCCancelled, (int)g_NumThreads); 10136: } 10136: else { 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1145,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived exception")); 10136: } 10136: } 10136: 10136: 10136: class OuterFilterWithIsolatedCtx : public tbb::filter { 10136: public: 10136: OuterFilterWithIsolatedCtx(tbb::filter::mode m, bool ) : filter(m) {} 10136: 10136: void* operator()(void* item) override { 10136: ++g_OuterParCalls; 10136: tbb::task_group_context ctx(tbb::task_group_context::isolated); 10136: 10136: SimplePipeline testPipeline(serial_parallel); 10136: testPipeline.run(ctx); 10136: return item; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: 10136: 10136: void Test3_pipeline ( const FilterSet& filters ) { 10136: for( int nTries = 1; nTries <= 4; ++nTries) { 10136: ResetGlobals(); 10136: g_NestedPipelines = true; 10136: g_Master = Harness::CurrentTid(); 10136: intptr_t innerCalls = 100, 10136: minExecuted = (g_NumThreads - 1) * innerCalls; 10136: CustomPipeline testPipeline(filters); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: testPipeline.run(); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1180, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1180, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<1180>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1180, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1180,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: 10136: bool okayNoExceptionCaught = (g_ExceptionInMaster && !g_MasterExecuted) || 10136: (!g_ExceptionInMaster && !g_NonMasterExecuted); 10136: 10136: bool testSucceeded = okayNoExceptionCaught || g_NumExceptionsCaught > 0; 10136: if(testSucceeded) { 10136: if (g_SolitaryException) { 10136: # 1207 "../../src/test/test_eh_algorithms.cpp" 10136: minExecuted = (2*100) * (g_PipelinesStarted - 2) + 1; 10136: 10136: ((g_CurExecuted >= minExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1209,"g_CurExecuted >= minExecuted","Too few tasks survived exception")); 10136: 10136: 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1212,"g_TGCCancelled <= g_NumThreads","Tasks not in-flight were executed")); 10136: ((g_NumExceptionsCaught == 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1213,"g_NumExceptionsCaught == 1","Should have only one exception")); 10136: 10136: 10136: if(g_ExceptionInMaster && !g_MasterExecuted) { 10136: (!Verbose || Harness::internal::not_the_first_call<1217>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1217, __FUNCTION__)->trace("Master expected to throw, but didn't participate.\n"); 10136: } 10136: else if(!g_ExceptionInMaster && !g_NonMasterExecuted) { 10136: (!Verbose || Harness::internal::not_the_first_call<1220>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1220, __FUNCTION__)->trace("Non-master expected to throw, but didn't participate.\n"); 10136: } 10136: } 10136: ((g_NumExceptionsCaught == 1 || okayNoExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1223,"g_NumExceptionsCaught == 1 || okayNoExceptionCaught","No try_blocks in any body expected in this test")); 10136: (((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads) || okayNoExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1224,"(g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads) || okayNoExceptionCaught","Too many tasks survived exception")); 10136: if(nTries > 1) !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1225, __FUNCTION__)->trace("Test3_pipeline succeeeded on try %d\n", nTries); 10136: return; 10136: } 10136: } 10136: (!Verbose || Harness::internal::not_the_first_call<1229>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1229, __FUNCTION__)->trace("Test3_pipeline failed for g_NumThreads==%d, g_ExceptionInMaster==%s , g_SolitaryException==%s\n", 10136: g_NumThreads, g_ExceptionInMaster?"T":"F", g_SolitaryException?"T":"F"); 10136: } 10136: 10136: class OuterFilterWithEhBody : public tbb::filter { 10136: public: 10136: OuterFilterWithEhBody(tbb::filter::mode m, bool ) : filter(m) {} 10136: 10136: void* operator()(void* item) override { 10136: tbb::task_group_context ctx(tbb::task_group_context::isolated); 10136: ++g_OuterParCalls; 10136: SimplePipeline testPipeline(serial_parallel); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: testPipeline.run(ctx); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1243,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1243,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1243,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1243, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1243,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1243, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1243,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<1243>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1243, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown);; 10136: return item; 10136: } 10136: }; 10136: 10136: 10136: 10136: 10136: 10136: void Test4_pipeline ( const FilterSet& filters ) { 10136: 10136: if ( strncmp("8.0.0 20180110 (experimental) [trunk revision 256425]", "4.1.0", 5) == 0 ) { 10136: (!Verbose || Harness::internal::not_the_first_call<1255>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1255, __FUNCTION__)->trace("Known issue: one of exception handling tests is skipped.\n"); 10136: return; 10136: } 10136: 10136: ResetGlobals( true, true ); 10136: 10136: 10136: 10136: 10136: intptr_t innerCalls = 2*100, 10136: outerCalls = 2 * 100, 10136: maxExecuted = outerCalls * innerCalls; 10136: CustomPipeline testPipeline(filters); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: testPipeline.run(); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1270, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1270, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<1270>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1270, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown); { ((!g_ExceptionsThrown || g_ExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"!g_ExceptionsThrown || g_ExceptionCaught","throw without catch")); ((!g_ExceptionCaught || g_ExceptionsThrown)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"!g_ExceptionCaught || g_ExceptionsThrown","catch without throw")); ((g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow))?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"g_ExceptionCaught || (g_ExceptionInMaster && !g_MasterExecutedThrow) || (!g_ExceptionInMaster && !g_NonMasterExecutedThrow)","no exception occurred")); ((0 || !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1270,"0 || !g_UnknownException","unknown exception was caught")); }; 10136: intptr_t minExecuted = 0; 10136: bool okayNoExceptionCaught = (g_ExceptionInMaster && !g_MasterExecuted) || 10136: (!g_ExceptionInMaster && !g_NonMasterExecuted); 10136: if ( g_SolitaryException ) { 10136: minExecuted = maxExecuted - innerCalls; 10136: ((g_NumExceptionsCaught == 1 || okayNoExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1276,"g_NumExceptionsCaught == 1 || okayNoExceptionCaught","No exception registered")); 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1277,"g_TGCCancelled <= g_NumThreads","Too many tasks survived exception")); 10136: } 10136: else { 10136: 10136: minExecuted = (outerCalls - g_NumExceptionsCaught) * innerCalls; 10136: (((g_NumExceptionsCaught >= 1 && g_NumExceptionsCaught <= outerCalls)||okayNoExceptionCaught)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1282,"(g_NumExceptionsCaught >= 1 && g_NumExceptionsCaught <= outerCalls)||okayNoExceptionCaught","Unexpected actual number of exceptions")); 10136: ((g_CurExecuted >= minExecuted)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1283,"g_CurExecuted >= minExecuted","Too many executed tasks reported")); 10136: 10136: 10136: 10136: 10136: 10136: 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1290,"g_CurExecuted <= g_ExecutedAtLastCatch + g_NumThreads","Too many tasks survived multiple exceptions")); 10136: } 10136: } 10136: 10136: 10136: 10136: 10136: 10136: tbb::atomic g_AllocatedCount; 10136: tbb::atomic g_TotalCount; 10136: 10136: 10136: class FinalizationBaseFilter : public tbb::filter { 10136: public: 10136: FinalizationBaseFilter ( tbb::filter::mode m ) : filter(m) {} 10136: 10136: 10136: virtual void finalize( void* item ) override { 10136: size_t* m_Item = (size_t*)item; 10136: delete[] m_Item; 10136: --g_AllocatedCount; 10136: } 10136: }; 10136: 10136: 10136: class InputFilterWithFinalization: public FinalizationBaseFilter { 10136: public: 10136: InputFilterWithFinalization() : FinalizationBaseFilter(tbb::filter::serial) { 10136: g_TotalCount = 0; 10136: } 10136: void* operator()( void* ) override { 10136: if (g_TotalCount == 1024) 10136: return 10136: # 1322 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 1322 "../../src/test/test_eh_algorithms.cpp" 10136: ; 10136: size_t* item = new size_t[32]; 10136: for (int i = 0; i < 32; i++) 10136: item[i] = 1; 10136: ++g_TotalCount; 10136: ++g_AllocatedCount; 10136: return item; 10136: } 10136: }; 10136: 10136: 10136: class ProcessingFilterWithFinalization : public FinalizationBaseFilter { 10136: public: 10136: ProcessingFilterWithFinalization (tbb::filter::mode _mode, bool) : FinalizationBaseFilter (_mode) {} 10136: 10136: void* operator()( void* item) override { 10136: if(g_Master == Harness::CurrentTid()) g_MasterExecuted = true; 10136: else g_NonMasterExecuted = true; 10136: if( tbb::task::self().is_cancelled()) ++g_TGCCancelled; 10136: if (g_TotalCount > 1024 / 2) 10136: ThrowTestException(1); 10136: size_t* m_Item = (size_t*)item; 10136: for (int i = 0; i < 32; i++) 10136: m_Item[i] *= 10; 10136: return item; 10136: } 10136: }; 10136: 10136: 10136: class OutputFilterWithFinalization : public FinalizationBaseFilter { 10136: public: 10136: OutputFilterWithFinalization (tbb::filter::mode m) : FinalizationBaseFilter (m) {} 10136: 10136: void* operator()( void* item) override { 10136: size_t* m_Item = (size_t*)item; 10136: delete[] m_Item; 10136: --g_AllocatedCount; 10136: return 10136: # 1359 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 1359 "../../src/test/test_eh_algorithms.cpp" 10136: ; 10136: } 10136: }; 10136: 10136: 10136: void Test5_pipeline ( const FilterSet& filters ) { 10136: ResetGlobals(); 10136: g_AllocatedCount = 0; 10136: CustomPipeline testPipeline(filters); 10136: OutputFilterWithFinalization my_output_filter(tbb::filter::parallel); 10136: 10136: testPipeline.add_filter(my_output_filter); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: testPipeline.run(); 10136: } catch ( PropagatedException& e ) { g_ExecutedAtFirstCatch.compare_and_swap(g_CurExecuted,0); g_ExecutedAtLastCatch = g_CurExecuted; ((e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1373,"e.what()","Empty what() string")); ((0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1373,"0 || strcmp(typeid(e).name(), (g_SolitaryException ? typeid(solitary_test_exception) : typeid(test_exception)).name() ) == 0","Unexpected original exception name")); ((0 || strcmp(e.what(), "Test exception") == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1373,"0 || strcmp(e.what(), \"Test exception\") == 0","Unexpected original exception info")); g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; ++g_NumExceptionsCaught; } catch ( tbb::tbb_exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1373, __FUNCTION__)->trace("Unexpected %s\n", e.name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1373,"g_UnknownException && !g_UnknownException","Unexpected tbb::tbb_exception")); } catch ( std::exception& e ) { Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1373, __FUNCTION__)->trace("Unexpected %s\n", typeid(e).name()); ((g_UnknownException && !g_UnknownException)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1373,"g_UnknownException && !g_UnknownException","Unexpected std::exception")); } catch ( ... ) { g_ExceptionCaught = l_ExceptionCaughtAtCurrentLevel = true; g_UnknownException = unknownException = true; } if ( !g_SolitaryException ) (!Verbose || Harness::internal::not_the_first_call<1373>()) ? (void)0 : Harness::internal::tracer.set_trace_info(Harness::internal::Tracer::need_lf, "../../src/test/test_eh_algorithms.cpp", 1373, __FUNCTION__)->trace ("Multiple exceptions mode: %d throws", (intptr_t)g_ExceptionsThrown);; 10136: ((g_AllocatedCount == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1374,"g_AllocatedCount == 0","Memory leak: Some my_object weren't destroyed")); 10136: } 10136: 10136: 10136: template 10136: void TestWithDifferentFilters() { 10136: const int NumFilterTypes = 3; 10136: const tbb::filter::mode modes[NumFilterTypes] = { 10136: tbb::filter::parallel, 10136: tbb::filter::serial, 10136: tbb::filter::serial_out_of_order 10136: }; 10136: for ( int i = 0; i < NumFilterTypes; ++i ) { 10136: for ( int j = 0; j < NumFilterTypes; ++j ) { 10136: for ( int k = 0; k < 2; ++k ) 10136: testFunc( FilterSet(modes[i], modes[j], k == 0, k != 0) ); 10136: } 10136: } 10136: } 10136: 10136: 10136: 10136: class FilterToCancel : public tbb::filter { 10136: public: 10136: FilterToCancel(bool is_parallel) 10136: : filter( is_parallel ? tbb::filter::parallel : tbb::filter::serial_in_order ) 10136: {} 10136: void* operator()(void* item) override { 10136: ++g_CurExecuted; 10136: CancellatorTask::WaitUntilReady(); 10136: return item; 10136: } 10136: }; 10136: 10136: template 10136: class PipelineLauncherTask : public tbb::task { 10136: tbb::task_group_context &my_ctx; 10136: public: 10136: PipelineLauncherTask ( tbb::task_group_context& ctx ) : my_ctx(ctx) {} 10136: 10136: tbb::task* execute () override { 10136: 10136: InputFilter inputFilter; 10136: Filter_to_cancel filterToCancel(true); 10136: tbb::pipeline p; 10136: p.add_filter(inputFilter); 10136: p.add_filter(filterToCancel); 10136: p.run(g_NumTokens, my_ctx); 10136: return 10136: # 1422 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 1422 "../../src/test/test_eh_algorithms.cpp" 10136: ; 10136: } 10136: }; 10136: 10136: 10136: void TestCancelation1_pipeline () { 10136: ResetGlobals(); 10136: g_ThrowException = false; 10136: intptr_t threshold = 10; 10136: tbb::task_group_context ctx; 10136: ctx.reset(); 10136: tbb::empty_task &r = *new( tbb::task::allocate_root() ) tbb::empty_task; 10136: r.set_ref_count(3); 10136: r.spawn( *new( r.allocate_child() ) CancellatorTask(ctx, threshold) ); 10136: sched_yield(); 10136: r.spawn( *new( r.allocate_child() ) PipelineLauncherTask(ctx) ); 10136: bool l_ExceptionCaughtAtCurrentLevel = false, unknownException = false; try {; 10136: r.wait_for_all(); 10136: } catch(...) { ((false)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1440,"false","Cancelling tasks must not cause any exceptions")); (void)(l_ExceptionCaughtAtCurrentLevel && unknownException); }; 10136: r.destroy(r); 10136: ((g_TGCCancelled <= g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1442,"g_TGCCancelled <= g_NumThreads","Too many tasks survived cancellation")); 10136: ((g_CurExecuted < g_ExecutedAtLastCatch + g_NumThreads)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1443,"g_CurExecuted < g_ExecutedAtLastCatch + g_NumThreads","Too many tasks were executed after cancellation")); 10136: } 10136: 10136: class FilterToCancel2 : public tbb::filter { 10136: public: 10136: FilterToCancel2(bool is_parallel) 10136: : filter ( is_parallel ? tbb::filter::parallel : tbb::filter::serial_in_order) 10136: {} 10136: 10136: void* operator()(void* item) override { 10136: ++g_CurExecuted; 10136: Harness::ConcurrencyTracker ct; 10136: 10136: while( !tbb::task::self().is_cancelled() ) 10136: sched_yield(); 10136: return item; 10136: } 10136: }; 10136: 10136: 10136: 10136: void TestCancelation2_pipeline () { 10136: ResetGlobals(); 10136: RunCancellationTest, CancellatorTask2>(); 10136: 10136: 10136: 10136: 10136: ((g_CurExecuted <= g_ExecutedAtLastCatch)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1471,"g_CurExecuted <= g_ExecutedAtLastCatch","Some tasks were executed after cancellation")); 10136: } 10136: 10136: void RunPipelineTests() { 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1475, __FUNCTION__)->trace( "pipeline tests\n" ); 10136: tbb::task_scheduler_init init (g_NumThreads); 10136: g_Master = Harness::CurrentTid(); 10136: g_NumTokens = 2 * g_NumThreads; 10136: 10136: Test0_pipeline(); 10136: 10136: TestWithDifferentFilters(); 10136: TestWithDifferentFilters(); 10136: TestWithDifferentFilters(); 10136: TestWithDifferentFilters(); 10136: TestWithDifferentFilters(); 10136: 10136: TestCancelation1_pipeline(); 10136: TestCancelation2_pipeline(); 10136: } 10136: 10136: 10136: 10136: 10136: class MyCapturedException : public tbb::captured_exception { 10136: public: 10136: static int m_refCount; 10136: 10136: MyCapturedException () : tbb::captured_exception("MyCapturedException", "test") { ++m_refCount; } 10136: ~MyCapturedException () throw() { --m_refCount; } 10136: 10136: MyCapturedException* move () throw() override { 10136: MyCapturedException* movee = (MyCapturedException*)malloc(sizeof(MyCapturedException)); 10136: return ::new (movee) MyCapturedException; 10136: } 10136: void destroy () throw() override { 10136: this->~MyCapturedException(); 10136: free(this); 10136: } 10136: void operator delete ( void* p ) { free(p); } 10136: }; 10136: 10136: int MyCapturedException::m_refCount = 0; 10136: 10136: void DeleteTbbException ( volatile tbb::tbb_exception* pe ) { 10136: delete pe; 10136: } 10136: 10136: void TestTbbExceptionAPI () { 10136: const char *name = "Test captured exception", 10136: *reason = "Unit testing"; 10136: tbb::captured_exception e(name, reason); 10136: ((strcmp(e.name(), name) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1523,"strcmp(e.name(), name) == 0","Setting captured exception name failed")); 10136: ((strcmp(e.what(), reason) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1524,"strcmp(e.what(), reason) == 0","Setting captured exception reason failed")); 10136: tbb::captured_exception c(e); 10136: ((strcmp(c.name(), e.name()) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1526,"strcmp(c.name(), e.name()) == 0","Copying captured exception name failed")); 10136: ((strcmp(c.what(), e.what()) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1527,"strcmp(c.what(), e.what()) == 0","Copying captured exception reason failed")); 10136: tbb::captured_exception *m = e.move(); 10136: ((strcmp(m->name(), name) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1529,"strcmp(m->name(), name) == 0","Moving captured exception name failed")); 10136: ((strcmp(m->what(), reason) == 0)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1530,"strcmp(m->what(), reason) == 0","Moving captured exception reason failed")); 10136: ((!e.name() && !e.what())?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1531,"!e.name() && !e.what()","Moving semantics broken")); 10136: m->destroy(); 10136: 10136: MyCapturedException mce; 10136: MyCapturedException *mmce = mce.move(); 10136: ((MyCapturedException::m_refCount == 2)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1536,"MyCapturedException::m_refCount == 2", 10136: # 1536 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 1536 "../../src/test/test_eh_algorithms.cpp" 10136: )); 10136: DeleteTbbException(mmce); 10136: ((MyCapturedException::m_refCount == 1)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1538,"MyCapturedException::m_refCount == 1", 10136: # 1538 "../../src/test/test_eh_algorithms.cpp" 3 4 10136: __null 10136: # 1538 "../../src/test/test_eh_algorithms.cpp" 10136: )); 10136: } 10136: 10136: 10136: 10136: 10136: 10136: 10136: int TestMain () { 10136: if(tbb::task_scheduler_init::default_num_threads() == 1) { 10136: Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1548, __FUNCTION__)->trace("Known issue: tests require multiple hardware threads\n"); 10136: return Harness::Skipped; 10136: } 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1551, __FUNCTION__)->trace ("Using %s\n", 0 ? "tbb:captured_exception" : "exact exception propagation"); 10136: MinThread = min(tbb::task_scheduler_init::default_num_threads(), max(2, MinThread)); 10136: MaxThread = max(MinThread, min(tbb::task_scheduler_init::default_num_threads(), MaxThread)); 10136: ((100000 >= 100 * MaxThread)?(void)0:ReportError("../../src/test/test_eh_algorithms.cpp",1554,"100000 >= 100 * MaxThread","Fix defines")); 10136: int step = max((MaxThread - MinThread + 1)/2, 1); 10136: for ( g_NumThreads = MinThread; g_NumThreads <= MaxThread; g_NumThreads += step ) { 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1557, __FUNCTION__)->trace ("Number of threads %d\n", g_NumThreads); 10136: 10136: for ( size_t j = 0; j < 4; ++j ) { 10136: g_ExceptionInMaster = (j & 1) != 0; 10136: g_SolitaryException = (j & 2) != 0; 10136: !Verbose ? (void)0 : Harness::internal::tracer.set_trace_info(0, "../../src/test/test_eh_algorithms.cpp", 1562, __FUNCTION__)->trace("g_ExceptionInMaster==%s, g_SolitaryException==%s\n", g_ExceptionInMaster?"T":"F", g_SolitaryException?"T":"F"); 10136: RunParForAndReduceTests(); 10136: RunParDoTests(); 10136: RunPipelineTests(); 10136: } 10136: } 10136: 10136: TestTbbExceptionAPI(); 10136: 10136: 10136: 10136: 10136: return Harness::Done; 10136: } === END GCC DUMP === ../../build/common_rules.inc:76: recipe for target 'test_eh_algorithms.o' failed make[2]: *** [test_eh_algorithms.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory '/<>/build/linux_armv7_gcc_cc8_libc2.26_debug' Makefile:44: recipe for target 'test' failed make[1]: *** [test] Error 2 make[1]: Leaving directory '/<>' dh_auto_test: make -j4 test returned exit code 2 debian/rules:49: recipe for target 'build-arch' failed make: *** [build-arch] Error 2 dpkg-buildpackage: error: debian/rules build-arch subprocess returned exit status 2 -------------------------------------------------------------------------------- Build finished at 20180115-2346 Finished -------- E: Build failure (dpkg-buildpackage died) +------------------------------------------------------------------------------+ | Cleanup | +------------------------------------------------------------------------------+ Purging /<> Not removing build depends: as requested +------------------------------------------------------------------------------+ | Summary | +------------------------------------------------------------------------------+ Build Architecture: armhf Build-Space: 178500 Build-Time: 653 Distribution: bionic Fail-Stage: build Host Architecture: armhf Install-Time: 24 Job: tbb_2017~U7-8.dsc Machine Architecture: arm64 Package: tbb Package-Time: 679 Source-Version: 2017~U7-8 Space: 178500 Status: attempted Version: 2017~U7-8 -------------------------------------------------------------------------------- Finished at 20180115-2346 Build needed 00:11:19, 178500k disc space RUN: /usr/share/launchpad-buildd/slavebin/in-target scan-for-processes --backend=chroot --series=bionic --arch=armhf PACKAGEBUILD-14161738 Scanning for processes to kill in build PACKAGEBUILD-14161738 RUN: /usr/share/launchpad-buildd/slavebin/in-target umount-chroot --backend=chroot --series=bionic --arch=armhf PACKAGEBUILD-14161738 Stopping target for build PACKAGEBUILD-14161738 RUN: /usr/share/launchpad-buildd/slavebin/in-target remove-build --backend=chroot --series=bionic --arch=armhf PACKAGEBUILD-14161738 Removing build PACKAGEBUILD-14161738