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