📄 portable.cpp
字号:
// Copyright 2005-2008 Daniel James.// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#include <boost/functional/hash.hpp>#include <cassert>// This example illustrates how to customise boost::hash portably, so that// it'll work on both compilers that don't implement argument dependent lookup// and compilers that implement strict two-phase template instantiation.namespace foo{ template <class T> class custom_type { T value; public: custom_type(T x) : value(x) {} std::size_t hash() const { boost::hash<T> hasher; return hasher(value); } };}#ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUPnamespace boost#elsenamespace foo#endif{ template <class T> std::size_t hash_value(foo::custom_type<T> x) { return x.hash(); }}int main(){ foo::custom_type<int> x(1), y(2), z(1); boost::hash<foo::custom_type<int> > hasher; assert(hasher(x) == hasher(x)); assert(hasher(x) != hasher(y)); assert(hasher(x) == hasher(z)); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -