| 10 |  | #define UTILS_PREDICATE_HPP | 
| 11 |  | #include <locale> | 
| 12 |  |  | 
| 13 | – | namespace oopse { | 
| 13 |  |  | 
| 14 | + |  | 
| 15 | + | #if defined(__SUNPRO_CC) | 
| 16 | + | #  define USE_FACET(Type, loc) std::use_facet(loc, static_cast<Type*>(0)) | 
| 17 | + | #else | 
| 18 | + | #  define USE_FACET(Type, loc) std::use_facet< Type >(loc) | 
| 19 | + | #endif | 
| 20 | + |  | 
| 21 | + | namespace OpenMD { | 
| 22 | + |  | 
| 23 |  | template<typename Derived> | 
| 24 |  | struct PredFacade{}; | 
| 25 |  |  | 
| 30 |  |  | 
| 31 |  | template<typename CharT> | 
| 32 |  | bool operator()( CharT c ) const { | 
| 33 | < | return std::use_facet< std::ctype<CharT> >(loc_).is( type_, c ); | 
| 33 | > | return USE_FACET(std::ctype<CharT>, loc_).is( type_, c ); | 
| 34 |  | } | 
| 35 |  |  | 
| 36 |  | private: | 
| 168 |  | // Doing the static_cast with the pointer instead of the reference | 
| 169 |  | // is a workaround for some compilers which have problems with | 
| 170 |  | // static_cast's of template references, i.e. CW8. /grafik/ | 
| 171 | < | return detail::PredOrFunctor<Pred1T,Pred2T>( | 
| 171 | > | return PredOrFunctor<Pred1T,Pred2T>( | 
| 172 |  | *static_cast<const Pred1T*>(&Pred1), | 
| 173 |  | *static_cast<const Pred2T*>(&Pred2)); | 
| 174 |  | } |