mirror of git://gcc.gnu.org/git/gcc.git
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>
|
2014-12-11 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
Remove N3639 "array of runtime length" from -std=c++14.
|
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));
|
NULL_TREE, array_type_nelts (type));
|
||||||
type = vla_capture_type (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 "
|
error ("capture of variable-size type %qT that is not an N3639 array "
|
||||||
"of runtime bound", type);
|
"of runtime bound", type);
|
||||||
|
|
|
||||||
|
|
@ -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