namespace cc = cds::container;
namespace co = cds::opt;
- typedef cds::urcu::gc< cds::urcu::general_instant<> > rcu_gpi;
- typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_gpb;
- typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_gpt;
+ typedef cds::urcu::gc< cds::urcu::general_instant_stripped > rcu_gpi;
+ typedef cds::urcu::gc< cds::urcu::general_buffered_stripped > rcu_gpb;
+ typedef cds::urcu::gc< cds::urcu::general_threaded_stripped > rcu_gpt;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_shb;
- typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_sht;
+ typedef cds::urcu::gc< cds::urcu::signal_buffered_stripped > rcu_shb;
+ typedef cds::urcu::gc< cds::urcu::signal_threaded_stripped > rcu_sht;
#endif
template <typename Key>
}
};
+ template <>
+ struct less<std::string>
+ {
+ bool operator ()( std::string const& k1, std::string const& k2 ) const
+ {
+ return cmp<std::string>()( k1, k2 ) < 0;
+ }
+ bool operator ()( std::string const& k1, char const* k2 ) const
+ {
+ return cmp<std::string>()( k1, k2 ) < 0;
+ }
+ bool operator ()( char const* k1, std::string const& k2 ) const
+ {
+ return cmp<std::string>()( k1, k2 ) < 0;
+ }
+ };
+
template <typename T>
struct hash
{
}
};
+ template <>
+ struct hash<std::string>
+ {
+ typedef size_t result_type;
+ typedef std::string argument_type;
+
+ size_t operator()( std::string const& k ) const
+ {
+ return std::hash<std::string>()(k);
+ }
+ };
// forward
template <typename ImplSelector, typename Key, typename Value>