Is this an acceptable use of typedef in the class, Inventory?

**Inventory.h**

```
#ifndef INVENTORY_H
#define INVENTORY_H

#include "Item.h"
#include <unordered_map>

class Inventory
{
public:
    typedef std::unordered_map<Item, int> ItemTable; ///< Items and their quantities

    const ItemTable& items() const;
    void add_item(Item item, int quantity);
    int quantity(Item item);
    bool remove_item(Item item, int quantity);

private:
    ItemTable items_;
};

#endif

```

**Inventory.cpp**

```
#include "Inventory.h"
#include "Item.h"
#include <cstddef>

const Inventory::ItemTable& Inventory::items() const
{
    return items_;
}

void Inventory::add_item(Item item, int quantity)
{
    int total_of_item = items_[item];
    items_[item] = total_of_item + quantity;
}

int Inventory::quantity(Item item)
{
    return items_[item];
}

bool Inventory::remove_item(Item item, int quantity)
{
    int total_of_item = items_[item];

    if (quantity > total_of_item) {
        return false;
    }

    items_[item] = total_of_item - quantity;
    return true;
}

```