00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_MISC_SPECIAL_CHAR_TRAITS_HH
00018 # define VCSN_MISC_SPECIAL_CHAR_TRAITS_HH
00019
00037 # include <vaucanson/misc/char_traits.hh>
00038
00039 # define VCSN_USE_GENERIC_CHAR_TRAITS_FOR(Type) \
00040 template <> \
00041 struct char_traits<Type> : public ::vcsn::misc::char_traits<Type> { }
00042
00043 namespace std
00044 {
00045
00046 VCSN_USE_GENERIC_CHAR_TRAITS_FOR (int);
00047 VCSN_USE_GENERIC_CHAR_TRAITS_FOR (long int);
00048 VCSN_USE_GENERIC_CHAR_TRAITS_FOR (unsigned int);
00049 VCSN_USE_GENERIC_CHAR_TRAITS_FOR (unsigned long int);
00050 VCSN_USE_GENERIC_CHAR_TRAITS_FOR (float);
00051 VCSN_USE_GENERIC_CHAR_TRAITS_FOR (double);
00052 VCSN_USE_GENERIC_CHAR_TRAITS_FOR (long double);
00053
00054
00055 template <class T>
00056 struct char_traits<T*> : public ::vcsn::misc::char_traits<T*> { };
00057
00058
00059 template <class U, class V>
00060 struct char_traits< pair<U, V> > :
00061 public ::vcsn::misc::char_traits< pair<U, V> >
00062 {
00063 };
00064 }
00065
00066 #endif // ! VCSN_MISC_SPECIAL_CHAR_TRAITS_HH