--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: g++-5: chokes on valid lambda code
- From: Roman Lebedev <lebedev.ri@gmail.com>
- Date: Mon, 07 Aug 2017 11:24:09 +0300
- Message-id: <150209424914.21689.4908635158410644284.reportbug@pini-pini.lcl>
Package: g++-5
Version: 5.4.1-11
Severity: normal
Tags: upstream
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
The test-case is creduced.
Only the GCC5 fails, gcc-4.9, 6 and 7 do not.
clang-3.9, 4, 5, trunk is also fine with that code.
$ g++-7 -std=c++14 -c main.cpp
$ g++-6 -std=c++14 -c main.cpp
$ g++-5 -std=c++14 -c main.cpp
main.cpp: In instantiation of ‘d::n() const::<lambda(auto:1, d::h, d::h,
int, d::n() const::p, d::n() const::p)> [with auto:1 = d::n()
const::<lambda()>]’:
main.cpp:26:28: required from here
main.cpp:23:11: error: ‘e’ is not captured
if (e < e)
^
main.cpp:23:11: note: ‘const int& e’ declared here
I'm unable to report this upstream, since registration is closed, and
password recovery does not seem to function.
Roman.
- -- System Information:
Debian Release: buster/sid
APT prefers unstable
APT policy: (990, 'unstable'), (500, 'unstable-debug'), (1, 'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 4.11.0-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages g++-5 depends on:
ii gcc-5 5.4.1-11
ii gcc-5-base 5.4.1-11
ii libc6 2.24-14
ii libgmp10 2:6.1.2+dfsg-1
ii libisl15 0.18-1
ii libmpc3 1.0.3-1+b2
ii libmpfr4 3.1.5-1
ii libstdc++-5-dev 5.4.1-11
ii zlib1g 1:1.2.8.dfsg-5
g++-5 recommends no packages.
Versions of packages g++-5 suggests:
pn g++-5-multilib <none>
pn gcc-5-doc <none>
pn libstdc++6-5-dbg <none>
- -- no debconf information
*** /home/lebedevri/CREDUCE/main.cpp
using a = int;
using c = int;
struct d {
struct {
a e;
} f;
enum h { i, j };
struct k {
int l[0][0];
};
int m(k *, c *, a, int, int *) const;
void n() const;
};
void d::n() const {
c *o;
k *info;
struct p {
} g;
p b;
int errcnt;
const int e = f.e;
auto pass = [&](auto, h, h, int, p, p) {
if (e < e)
errcnt = m(0, o, 0, 0, info->l[0]);
};
pass([] {}, i, j, 0, g, b);
}
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEjkF6151RK40WXe2HCDw+u0oWieAFAlmII6UACgkQCDw+u0oW
ieB6CRAAjnkVWHOURO9HG+5F7ZtqZcvkDmnNDmFSd5FnLLIEcZoY+Dogf50WPXF2
P8QRJDEYNv8+kLQ1rgQu64N6L6114ZS4KNUQM3P1ifKd4vhHZpVVWzwbfSeibNYu
1leJ257QH1p62M5nYjB2nKkr9MwmkTYBuEX1yduAliF3awclDx9s67T0z3w9kLsA
4uGMGBw6sd/LTMVfmokNUtIx+MYpL5GXR6KiapAYOqLkWHKb4LAmKi659m6ugTsI
jNmlEdE6eZhrLRVME/GP7wlw31FltZ3je7NzveFpeOW6iUT/Jcv605elpb09TI+U
HuR0vmto43bsx2gcfj2iUHpFVaNDHHJcTRKBKtIP+eCbliAI1UnVz5Frzst2fcgq
haMiOYlMPh6IyodDJ8w8qgnZkEe1k12CnGvSL47r/V6g70Z0s6yEHSX0yHnHAHmf
1vqGReehhFfndxMXtHSoT9cggXXDi/o4Wa5LCPuQwwYJkgH1NWucZwfWIV9j5UWA
E3TJTLrRavRZSR48FcSQqtt35Wa089n2E/7CYNDHpYrG8cdX1P6rK7cYR/NcAIQ/
t0J3/DLeekvHSCgNu+fVH8JPlrm0fSMzBCQ1jn1xSevuwAq4jHvBsZL8mZ/q2a5U
ey7qPKUgh8op0K2SNzZddMA3SEKyHJh2+/s70tThI91E23mdLBc=
=UHWS
-----END PGP SIGNATURE-----
--- End Message ---