re PR c++/61402 (-Wsequence-point doesn't notice unsequenced lambda init and function argument)
PR c++/61402 * lambda.c (add_capture): Don't pass a dependent type to variably_modified_type_p. From-SVN: r218680
This commit is contained in:
parent
0f3d27f01a
commit
18e780d460
@ -1,3 +1,9 @@
|
||||
2014-12-12 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/61402
|
||||
* lambda.c (add_capture): Don't pass a dependent type to
|
||||
variably_modified_type_p.
|
||||
|
||||
2014-12-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
Remove N3639 "array of runtime length" from -std=c++14.
|
||||
|
@ -483,7 +483,8 @@ add_capture (tree lambda, tree id, tree orig_init, bool by_reference_p,
|
||||
NULL_TREE, array_type_nelts (type));
|
||||
type = vla_capture_type (type);
|
||||
}
|
||||
else if (variably_modified_type_p (type, NULL_TREE))
|
||||
else if (!dependent_type_p (type)
|
||||
&& variably_modified_type_p (type, NULL_TREE))
|
||||
{
|
||||
error ("capture of variable-size type %qT that is not an N3639 array "
|
||||
"of runtime bound", type);
|
||||
|
20
gcc/testsuite/g++.dg/cpp1y/lambda-init11.C
Normal file
20
gcc/testsuite/g++.dg/cpp1y/lambda-init11.C
Normal file
@ -0,0 +1,20 @@
|
||||
// PR c++/61402
|
||||
// { dg-do run { target c++14 } }
|
||||
|
||||
extern "C" void abort();
|
||||
|
||||
template<typename T>
|
||||
void foo(T t) {
|
||||
auto test = [ i = ++t ](T v) {
|
||||
if (i != v)
|
||||
abort();
|
||||
};
|
||||
test(t);
|
||||
}
|
||||
|
||||
int main(){
|
||||
foo(3.14f);
|
||||
foo(0);
|
||||
foo('a');
|
||||
foo(false);
|
||||
}
|
Loading…
Reference in New Issue
Block a user