#include "../Tests.h" #include "AnotherUnit.h" class DLL_API T1 { }; class DLL_API T2 { }; template class DLL_API IndependentFields : public T1 { private: int field; }; template class DLL_API DependentValueFields { private: T field; union { int unionField; }; }; template class DLL_API DependentPointerFields { private: T* field; }; template class TwoTemplateArgs { private: K key; V value; }; template > class HasDefaultTemplateArgument { T field; }; template class TemplateInAnotherUnit; class DLL_API TemplateSpecializer { public: TemplateSpecializer(); template class NestedTemplate { }; private: IndependentFields independentFields; DependentValueFields dependentValueFields; DependentPointerFields dependentPointerFields; HasDefaultTemplateArgument hasDefaultTemplateArgument; DependentValueFields dependentPointerFieldsT1; DependentValueFields dependentPointerFieldsT2; TemplateInAnotherUnit templateInAnotherUnit; DependentValueFields> specializeWithSpecialization; DependentValueFields> specializeWithSameSpecialization; NestedTemplate nestedTemplate; DependentValueFields> nestedDependentPointer1; DependentValueFields> nestedDependentPointer2; DependentValueFields dependentFieldArray; void completeSpecializationInParameter(DependentValueFields p1, DependentValueFields p2, DependentValueFields p3); void completeSpecializationInParameter(TwoTemplateArgs p1, TwoTemplateArgs p2, TwoTemplateArgs p3); }; template class PartiallySpecialized { }; template class PartiallySpecialized { union { int i; float f; }; }; template class HasResultType { typedef char Yes; typedef void *No; template static Yes test(int, const typename U::result_type * = 0); template static No test(double); public: enum { Value = (sizeof(test(0)) == sizeof(Yes)) }; }; template ::Value> struct LazyResultType { typedef typename Functor::result_type Type; }; template struct LazyResultType { typedef void Type; }; template struct MapResultType { typedef typename LazyResultType::Type ResultType; }; template