[Bug c++/86930] New: g++ incorrectly complains about incomplete type in structured binding
janniksilvanus at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Aug 13 07:47:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86930
Bug ID: 86930
Summary: g++ incorrectly complains about incomplete type in
structured binding
Product: gcc
Version: 8.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: janniksilvanus at gmail dot com
Target Milestone: ---
: g++ --version
g++ (SUSE Linux) 8.1.1 20180719 [gcc-8-branch revision 262874]
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
: cat incomplete_type.ii
template <typename Index>
struct IndexPair {
Index first;
Index second;
};
using UsedIndexPair = IndexPair<int>;
template <typename Applier>
void call_applier(
UsedIndexPair const & indices,
Applier && applier)
{
auto const [a, b] = indices;
applier(a, b);
}
void instantiate()
{
call_applier(
{0, 1},
[&](int, int){});
}
: g++ --std=c++1z incomplete_type.ii -c
incomplete_type.ii: In function ‘void call_applier(const UsedIndexPair&,
Applier&&)’:
incomplete_type.ii:14:15: warning: structured binding refers to incomplete
class type ‘const IndexPair<int>’
auto const [a, b] = indices;
gcc-7.3.1 even crashes on this input:
/opt/rh/devtoolset-7/root/usr/bin/g++ --std=c++1z incomplete_type.ii -c
incomplete_type.ii: In function ‘void call_applier(const UsedIndexPair&,
Applier&&)’:
incomplete_type.ii:14:24: internal compiler error: Segmentation fault
auto const [a, b] = indices;
^~~~~~~
More information about the Gcc-bugs
mailing list