summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2012-03-08 21:05:45 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2012-03-08 21:05:45 +0000
commit04fe1bf52e7f802681b93630f4b265b4e6642dcc (patch)
treee58e163162e894eb7ca82d281418784b5f3f0004 /clang/test/SemaCXX/cxx0x-initializer-constructor.cpp
parentba0495a3e178b4c04e7aaa96f592f3bfde2a6d21 (diff)
downloadbcm5719-llvm-04fe1bf52e7f802681b93630f4b265b4e6642dcc.tar.gz
bcm5719-llvm-04fe1bf52e7f802681b93630f4b265b4e6642dcc.zip
Turn explicit construction of temporaries using initializer list syntax into CXXTemporaryObjectExprs, not just CXXConstructExprs, which have a worrying tendency to vanish. Fixes PR12167.
llvm-svn: 152340
Diffstat (limited to 'clang/test/SemaCXX/cxx0x-initializer-constructor.cpp')
-rw-r--r--clang/test/SemaCXX/cxx0x-initializer-constructor.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp b/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp
index 14420d94dd9..fdc882e049e 100644
--- a/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp
+++ b/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp
@@ -218,3 +218,21 @@ namespace PR12117 {
struct B { B(A); } b{{0}};
struct C { C(int); } c{0};
}
+
+namespace PR12167 {
+ template<int N> struct string {};
+
+ struct X {
+ X(const char v);
+ template<typename T> bool operator()(T) const;
+ };
+
+ template<int N, class Comparator> bool g(const string<N>& s, Comparator cmp) {
+ return cmp(s);
+ }
+ template<int N> bool f(const string<N> &s) {
+ return g(s, X{'x'});
+ }
+
+ bool s = f(string<1>());
+}
OpenPOWER on IntegriCloud