summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/conversion-function.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-09-12 07:22:28 +0000
committerDouglas Gregor <dgregor@apple.com>2010-09-12 07:22:28 +0000
commit6309e3d18ef06a243d52fc77287d07d3b1c406bc (patch)
treeb227c472bc85b0164cf5a481bb1a2d85c48877eb /clang/test/SemaCXX/conversion-function.cpp
parentfd26915742092a49c0a147e7d15e9a36255fbcb0 (diff)
downloadbcm5719-llvm-6309e3d18ef06a243d52fc77287d07d3b1c406bc.tar.gz
bcm5719-llvm-6309e3d18ef06a243d52fc77287d07d3b1c406bc.zip
Don't complain about useless user-defined conversion functions when
they were instantiated from a template. In template metaprogramming, stuff happens. Fixes PR8065. llvm-svn: 113722
Diffstat (limited to 'clang/test/SemaCXX/conversion-function.cpp')
-rw-r--r--clang/test/SemaCXX/conversion-function.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/conversion-function.cpp b/clang/test/SemaCXX/conversion-function.cpp
index 7f8fdd53400..8d5e01039c1 100644
--- a/clang/test/SemaCXX/conversion-function.cpp
+++ b/clang/test/SemaCXX/conversion-function.cpp
@@ -325,3 +325,21 @@ namespace rdar8018274 {
int i = ed;
}
}
+
+namespace PR8065 {
+ template <typename T> struct Iterator;
+ template <typename T> struct Container;
+
+ template<>
+ struct Iterator<int> {
+ typedef Container<int> container_type;
+ };
+
+ template <typename T>
+ struct Container {
+ typedef typename Iterator<T>::container_type X;
+ operator X(void) { return X(); }
+ };
+
+ Container<int> test;
+}
OpenPOWER on IntegriCloud