stduuid – A C++ library for universally unique identifiers

I have recently submitted a proposal for a new standard library for universally unique identifiers. The library is called uuid and the paper, P0959R0 – A Proposal for a Universally Unique Identifier Library, is available on Github. The design of the library is inspired by the Boost Uuid Library and the Crossuuid library. I got lots of great feedback that shaped the formed of the proposal from people on the ISO C++ Standard – Future Proposals forum.

I have made an implementation of the library, which is called stduuid, and again, it available on github. This implementation is supported on all major operating systems: Windows, Linux and Mac OS.


Universally unique identifiers (uuid), also known as Globally Unique Identifiers (guids), are commonly used in many types of applications to uniquely identify data. A standard uuid library would benefit developers that currently have to either use operating system specific APIs for creating new uuids or resort to 3rd party libraries, such as boost::uuid.

UUIDs are 128-bit numbers that are for most practical purposes unique, without depending on a central registration authority for ensuring their uniqueness. Although the probability of UUID duplication exists, it is negligible. According to Wikipedia, “for there to be a one in a billion chance of duplication, 103 trillion version 4 UUIDs must be generated.” UUID is an Internet Engineering Task Force standard described by RFC 4122.

The library proposed on this paper is a light one: it enables developers to generate random and name-based UUIDs, serialize and deserialize UUIDs to and from strings, validate UUIDs and other common operations.

Using the library

The following is a list of examples for using the library:

  • Creating a nil UUID

  • Creating a new UUID

  • Creating a new UUID with a default random generator

  • Creating a new UUID with a particular random generator

  • Creating a new UUID with the name generator

  • Create a UUID from a string


  • Creating a UUID from an array


  • Comparing UUIDS

  • Swapping UUIDS

  • Converting to string

  • Iterating through the UUID data

  • Using with an orderered associative container

  • Using in an unordered associative container

  • Hashing UUIDs

You can read more about the library, including the proposed paper, on Github. I encourage you to try the library and provide feedback, whether here or on github, on the issues or the suggestions that you might have.

3 Replies to “stduuid – A C++ library for universally unique identifiers”

  1. This looks like it will be quite handy. Any plans to make this available via vcpkg?

  2. I am a bit slow on this. I am migrating my Visual C++ code so it only uses standard template library and such things and not Microsoft or even COM specific calls. Currently my unique ID generator looks like this:

    CString GP_Pop::GUIDgen()
    GUID guid;
    BYTE * str;
    UuidToString((UUID*)&guid, &str);
    CString unique ((LPTSTR) str);
    unique.Replace(_T(“-“), _T(“_”));
    return unique;

    What do you suggest I replace this with. Could you give me a more step by step. I have not used GitHub too much and where do I bring your library and link it?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.