diff --git a/TinySTL/TinySTL.vcxproj b/TinySTL/TinySTL.vcxproj index 0a45209..d5e4188 100644 --- a/TinySTL/TinySTL.vcxproj +++ b/TinySTL/TinySTL.vcxproj @@ -78,6 +78,9 @@ + + + diff --git a/TinySTL/TinySTL.vcxproj.filters b/TinySTL/TinySTL.vcxproj.filters index 333f5a9..cf09af5 100644 --- a/TinySTL/TinySTL.vcxproj.filters +++ b/TinySTL/TinySTL.vcxproj.filters @@ -19,4 +19,9 @@ 源文件 + + + 头文件 + + \ No newline at end of file diff --git a/TinySTL/TypeTraits.h b/TinySTL/TypeTraits.h index 342f59a..701ab79 100644 --- a/TinySTL/TypeTraits.h +++ b/TinySTL/TypeTraits.h @@ -2,241 +2,240 @@ #define _TYPE_TRAITS_H_ namespace TinySTL{ - namespace zstd + + struct _true_type { }; + struct _false_type { }; + + /* + ** ȡT͵ + */ + template + struct _type_traits { - struct _true_type { }; - struct _false_type { }; + typedef _false_type has_trivial_default_constructor; + typedef _false_type has_trivial_copy_constructor; + typedef _false_type has_trivial_assignment_operator; + typedef _false_type has_trivial_destructor; + typedef _false_type is_POD_type; + }; - /* - ** ȡT͵ - */ - template - struct _type_traits - { - typedef _false_type has_trivial_default_constructor; - typedef _false_type has_trivial_copy_constructor; - typedef _false_type has_trivial_assignment_operator; - typedef _false_type has_trivial_destructor; - typedef _false_type is_POD_type; - }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - - template - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; - template<> - struct _type_traits - { - typedef _true_type has_trivial_default_constructor; - typedef _true_type has_trivial_copy_constructor; - typedef _true_type has_trivial_assignment_operator; - typedef _true_type has_trivial_destructor; - typedef _true_type is_POD_type; - }; + template + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; + template<> + struct _type_traits + { + typedef _true_type has_trivial_default_constructor; + typedef _true_type has_trivial_copy_constructor; + typedef _true_type has_trivial_assignment_operator; + typedef _true_type has_trivial_destructor; + typedef _true_type is_POD_type; + }; } #endif \ No newline at end of file