| 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 |
|
} |