Skip to content
This repository has been archived by the owner on May 24, 2022. It is now read-only.



This is a sample implementation of a forthcoming C++ standard library proposal. It is intended only for demonstration and evaluation purposes, and is not suitable for use in production systems. This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

The APIs in std.h and std_impl.h are proposed for standardization. fnv1a.h and farmhash.h are example implementations of particular algorithms using this framework, but are not themselves proposed for standardization. shows some simple examples of the extension API for type owners, as well as the end-user API (which is just std::hash).

The code uses some C++14 language and library features. It doesn't work with libstdc++ as of version 4.8, but it does work with libc++ 3.4. A CMakeLists.txt is included for building the tests with CMake. Example usage:

$ cmake -DCMAKE_CXX_COMPILER=/usr/bin/clang++-libc++ $SOURCE_DIR
$ make
$ make test

The tests depend on GoogleTest, which must be provided separately. By default, CMake will expect to find the GoogleTest source in /usr/src/gtest and the headers in a default include path, but these can be configured with -Dgtest_src_dir and -DCMAKE_INCLUDE_PATH, respectively. Similarly, the benchmarks depend on google/benchmark. This is included as a git submodule (run git submodule init; git submodule update to set it up), or you can install the source distribution in another location, and configure that location with -Dbenchmark_src_dir.

API documentation will be provided in the forthcoming paper.


Sample implementation of a proposed C++ hashing framework



Code of conduct

Security policy





No releases published


No packages published