re PR c++/53484 ([c++11] Wrong auto in lambdas in function templates)
PR c++/53484 * pt.c (do_auto_deduction): Don't try to deduce from a type-dependent initializer. From-SVN: r188116
This commit is contained in:
parent
676bd9a422
commit
d37c775a73
|
@ -1,3 +1,9 @@
|
|||
2012-06-01 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/53484
|
||||
* pt.c (do_auto_deduction): Don't try to deduce from a
|
||||
type-dependent initializer.
|
||||
|
||||
2012-06-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/26155
|
||||
|
|
|
@ -20318,10 +20318,9 @@ do_auto_deduction (tree type, tree init, tree auto_node)
|
|||
if (init == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
if (processing_template_decl
|
||||
&& (TREE_TYPE (init) == NULL_TREE
|
||||
|| BRACE_ENCLOSED_INITIALIZER_P (init)))
|
||||
/* Not enough information to try this yet. */
|
||||
if (type_dependent_expression_p (init))
|
||||
/* Defining a subset of type-dependent expressions that we can deduce
|
||||
from ahead of time isn't worth the trouble. */
|
||||
return type;
|
||||
|
||||
/* [dcl.spec.auto]: Obtain P from T by replacing the occurrences of auto
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-06-01 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/53484
|
||||
* g++.dg/cpp0x/auto33.C: New.
|
||||
|
||||
2012-06-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/26155
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
// PR c++/53484
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template<class T,class U> struct ST;
|
||||
template<class T> struct ST<T,T> {};
|
||||
|
||||
template <class T>
|
||||
void f(T x){
|
||||
[&]{
|
||||
auto y = x;
|
||||
ST<decltype(y),int>();
|
||||
}();
|
||||
}
|
||||
|
||||
int main(){ f(0); }
|
Loading…
Reference in New Issue