diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-09-03 22:13:48 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-09-03 22:13:48 +0000 |
commit | f816bd70ce1ffc8ac9323a5539ca07468c7bc746 (patch) | |
tree | 6f7b1a8beed76aaa04b03c11f8d83a5a06222838 /clang/test/SemaTemplate/member-access-expr.cpp | |
parent | d93c668f001508de50a9666e73985c1cf3885de0 (diff) | |
download | bcm5719-llvm-f816bd70ce1ffc8ac9323a5539ca07468c7bc746.tar.gz bcm5719-llvm-f816bd70ce1ffc8ac9323a5539ca07468c7bc746.zip |
Implement tree transformations for DeclarationNames. Among other
things, this means that we can properly cope with member access
expressions such as
t->operator T()
where T is a template parameter (or other dependent type).
llvm-svn: 80957
Diffstat (limited to 'clang/test/SemaTemplate/member-access-expr.cpp')
-rw-r--r-- | clang/test/SemaTemplate/member-access-expr.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/member-access-expr.cpp b/clang/test/SemaTemplate/member-access-expr.cpp index 408e2bb53c4..40dbffe0cf8 100644 --- a/clang/test/SemaTemplate/member-access-expr.cpp +++ b/clang/test/SemaTemplate/member-access-expr.cpp @@ -46,3 +46,16 @@ void test_f0_through_typedef2(X0 x0, X1 x1) { } +struct X2 { + operator int() const; +}; + +template<typename T, typename U> +T convert(const U& value) { + return value.operator T(); // expected-error{{operator long}} +} + +void test_convert(X2 x2) { + convert<int>(x2); + convert<long>(x2); // expected-note{{instantiation}} +} |