# template struct utils::StrongId

## Overview

Template class implementation of a Named Strong Id (a Strong Type with an underlying unsigned integer type (uint32_t)). More…

    #include <StrongID.h>

    template <typename PhantomType>
    struct StrongId: public utils::StrongType {
        // typedefs

        typedef uint32_t ValueType;

        // construction

        StrongId(size_t value);
        StrongId(int value);

        // methods

        StrongId Next() const;
        std::string ToString() const;
        static std::vector<StrongId<PhantomType>> CreateIds(const std::vector<unsigned>& ids);
    };

### Inherited Members

    public:
        // methods

        template <typename RT>
        std::enable_if_t<std::is_arithmetic_v<RT>, RT> As() const;

        bool operator==(const StrongType& other) const;
        bool operator!=(const StrongType& other) const;
        bool operator<(const StrongType& other) const;
        bool operator>(const StrongType& other) const;
        const ValueType& operator*() const;

    protected:
        // fields

        ValueType value_;

## Detailed Documentation

Template class implementation of a Named Strong Id (a Strong Type with an underlying unsigned integer type (uint32_t)).

https://www.fluentcpp.com/2016/12/08/strong-types-for-strong-interfaces/ Strong Id is an integral type (uint32_t) specific for the given usage (usually as an id of a class). It prevents implicit conversions to and from other types, as well as comparisons to other types.

Parameters:

PhantomType | An unused type specific for each Strong Type to ensure the Strong Type is different from every other type.

### Construction

    StrongId(size_t value)

Construct from size_t.

    StrongId(int value)

Construct from int.

### Methods

    StrongId Next() const

An id following this one. Incremented by 1.

    std::string ToString() const

Convert the id to string.

    static std::vector<StrongId<PhantomType>> CreateIds(const std::vector<unsigned>& ids)

Creates vector of specific strong ids values from the vector of unsigned values.