diff options
author | Gabor Greif <ggreif@gmail.com> | 2009-03-18 00:55:04 +0000 |
---|---|---|
committer | Gabor Greif <ggreif@gmail.com> | 2009-03-18 00:55:04 +0000 |
commit | 8af7837b08932710072517aa32a7dcbc38e6f358 (patch) | |
tree | d32eb093834d08c17eee2b1ac2af58a6b643f3e8 /clang/test/SemaTemplate/instantiate-expr-2.cpp | |
parent | 110377c669c940680ff9c69f46e3c04293a5cb18 (diff) | |
download | bcm5719-llvm-8af7837b08932710072517aa32a7dcbc38e6f358.tar.gz bcm5719-llvm-8af7837b08932710072517aa32a7dcbc38e6f358.zip |
instantiate ?: expressions
llvm-svn: 67145
Diffstat (limited to 'clang/test/SemaTemplate/instantiate-expr-2.cpp')
-rw-r--r-- | clang/test/SemaTemplate/instantiate-expr-2.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/instantiate-expr-2.cpp b/clang/test/SemaTemplate/instantiate-expr-2.cpp index d90cef5a0b1..82cd757e686 100644 --- a/clang/test/SemaTemplate/instantiate-expr-2.cpp +++ b/clang/test/SemaTemplate/instantiate-expr-2.cpp @@ -65,3 +65,37 @@ void test_unary_op_overload(A<8> *a8) { typedef N4::UnaryOpOverload<N3::Z>::type UZ; UZ *uz = a8; } + +/* +namespace N5 { + template<int I> + struct Lookup { + enum { val = I, more = val + 1 }; + }; + + template<bool B> + struct Cond { + enum Junk { is = B ? Lookup<B>::more : Lookup<Lookup<B+1>::more>::val }; + }; + + enum { resultT = Cond<true>::is, + resultF = Cond<false>::is }; +} +*/ + +namespace N6 { + template<int I> + struct Lookup { + }; + + template<bool B, typename T, typename E> + struct Cond { + typedef Lookup<B ? sizeof(T) : sizeof(E)> True; + typedef Lookup<!B ? sizeof(T) : sizeof(E)> False; + }; + + typedef Cond<true, int, char>::True True; + typedef Cond<false, int, char>::False False; +} + + |