LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

[humor]
Я еще вот семантику придумал: https://wandbox.org/permlink/Jcy2VrOaIoFhV3cw

template <typename Key, typename T, typename... Others>
class MyMap : public std::map<Key, T, Others...> {
public:
    using ParentType = std::map<Key, T, Others...>;

    using ParentType::ParentType;

    T&& operator==(const Key &key) {
        auto node = ParentType::extract(key);
        if (node.empty())
            throw std::out_of_range("no such key");
            
        return std::move(node.mapped());
    }
};

// оператор "труба" -- "вытягивает" елемент из контейнера
std::string two = map == 2;

[/humor]

Исходная версия KennyMinigun, :

Я еще вот семантику придумал: https://wandbox.org/permlink/Jcy2VrOaIoFhV3cw

template <typename Key, typename T, typename... Others>
class MyMap : public std::map<Key, T, Others...> {
public:
    using ParentType = std::map<Key, T, Others...>;

    using ParentType::ParentType;

    T&& operator==(const Key &key) {
        auto node = ParentType::extract(key);
        if (node.empty())
            throw std::out_of_range("no such key");
            
        return std::move(node.mapped());
    }
};

// оператор "труба" -- "вытягивает" елемент из контейнера
std::string two = map == 2;