// Example program
#include <iostream>
#include <string>
#include <map>
template<typename Key, typename Value>
class my_multimap : public std::multimap<Key, Value>
{
public:
using Base = std::multimap<Key, Value>;
using std::multimap<Key, Value>::multimap; // вытащили конструкторы
using value_type = typename Base::value_type;
// далее примерный код
bool insert(const value_type& val)
{
std::cout << "my_multimap::insert(copy)\n";
if (true /* какая-то проверка */)
return false;
Base::insert(val);
return true;
}
// для перемещения
bool insert(value_type&& val)
{
std::cout << "my_multimap::insert(move)\n";
if (true /* какая-то проверка */)
return false;
Base::insert(std::forward<value_type>(val));
return true;
}
//using Base::insert; // вытащили другие методы insert
// А ещё поглядеть на перегрузки других методов insert:
// http://w...content-available-to-author-only...s.com/reference/map/multimap/insert/
};
int main()
{
my_multimap<int, int> my_map;
my_map.insert(std::make_pair(31337,31337));
std::cout << std::flush;
}
Ly8gRXhhbXBsZSBwcm9ncmFtCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KCiNpbmNsdWRlIDxtYXA+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgpjbGFzcyBteV9tdWx0aW1hcCA6IHB1YmxpYyBzdGQ6Om11bHRpbWFwPEtleSwgVmFsdWU+CnsKcHVibGljOgogICAgdXNpbmcgQmFzZSA9IHN0ZDo6bXVsdGltYXA8S2V5LCBWYWx1ZT47CiAgICB1c2luZyBzdGQ6Om11bHRpbWFwPEtleSwgVmFsdWU+OjptdWx0aW1hcDsgLy8g0LLRi9GC0LDRidC40LvQuCDQutC+0L3RgdGC0YDRg9C60YLQvtGA0YsKICAgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBCYXNlOjp2YWx1ZV90eXBlOwoKICAgIC8vINC00LDQu9C10LUg0L/RgNC40LzQtdGA0L3Ri9C5INC60L7QtAogICAgYm9vbCBpbnNlcnQoY29uc3QgdmFsdWVfdHlwZSYgdmFsKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAibXlfbXVsdGltYXA6Omluc2VydChjb3B5KVxuIjsKICAgICAgICBpZiAodHJ1ZSAvKiDQutCw0LrQsNGPLdGC0L4g0L/RgNC+0LLQtdGA0LrQsCAqLykKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICBCYXNlOjppbnNlcnQodmFsKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAKICAgIC8vINC00LvRjyDQv9C10YDQtdC80LXRidC10L3QuNGPCiAgICBib29sIGluc2VydCh2YWx1ZV90eXBlJiYgdmFsKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAibXlfbXVsdGltYXA6Omluc2VydChtb3ZlKVxuIjsKICAgICAgICBpZiAodHJ1ZSAvKiDQutCw0LrQsNGPLdGC0L4g0L/RgNC+0LLQtdGA0LrQsCAqLykKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICBCYXNlOjppbnNlcnQoc3RkOjpmb3J3YXJkPHZhbHVlX3R5cGU+KHZhbCkpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8vdXNpbmcgQmFzZTo6aW5zZXJ0OyAvLyDQstGL0YLQsNGJ0LjQu9C4INC00YDRg9Cz0LjQtSDQvNC10YLQvtC00YsgaW5zZXJ0CgogICAgLy8g0JAg0LXRidGRINC/0L7Qs9C70Y/QtNC10YLRjCDQvdCwINC/0LXRgNC10LPRgNGD0LfQutC4INC00YDRg9Cz0LjRhSDQvNC10YLQvtC00L7QsiBpbnNlcnQ6CiAgICAvLyAgIGh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5zLmNvbS9yZWZlcmVuY2UvbWFwL211bHRpbWFwL2luc2VydC8KfTsKCmludCBtYWluKCkKewogICAgbXlfbXVsdGltYXA8aW50LCBpbnQ+IG15X21hcDsKICAgIG15X21hcC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoMzEzMzcsMzEzMzcpKTsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmZsdXNoOwp9Cg==