diff options
Diffstat (limited to 'test/Modules/Inputs/DebugCXX.h')
-rw-r--r-- | test/Modules/Inputs/DebugCXX.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/Modules/Inputs/DebugCXX.h b/test/Modules/Inputs/DebugCXX.h new file mode 100644 index 0000000..6ef4445 --- /dev/null +++ b/test/Modules/Inputs/DebugCXX.h @@ -0,0 +1,52 @@ +/* -*- C++ -*- */ +namespace DebugCXX { + // Records. + struct Struct { + int i; + static int static_member; + }; + + // Enums. + enum Enum { + Enumerator + }; + enum { + e1 = '1' + }; + enum { + e2 = '2' + }; + + // Templates (instatiations). + template<typename T> struct traits {}; + template<typename T, + typename Traits = traits<T> + > class Template { + T member; + }; + extern template class Template<int>; + + extern template struct traits<float>; + typedef class Template<float> FloatInstatiation; + + inline void fn() { + Template<long> invisible; + } + + // Non-template inside a template. + template <class> struct Outer { + Outer(); + struct Inner { + Inner(Outer) {} + }; + }; + template <class T> Outer<T>::Outer() { + Inner a(*this); + }; + + // Partial template specialization. + template <typename...> class A; + template <typename T> class A<T> {}; + typedef A<void> B; + void foo(B) {} +} |