假设有一个Timer类,用于在程序中创建(多个)定时器。
我们使用std::unique_ptr命名了新类型TimerPtr,然后创建了对象实例:
using TimerPtr = std::unique_ptr<Timer>;
TimerPtr timer = createTimer(callback);
如果要使用一个std::unordered_map来存储我们所创建的多个定时器,代码如下:
std::unordered_map<int32_t, frm_event::TimerPtr> timers_;
我们通过哈希插入函数来存储定时器ID(timerId)与定时器指针之间的关系:
timers_.insert(std::make_pair(timerid, timer));
这段代码在编译的时候会遇到错误:
error C2440: “<function-style-cast>”: 无法从“initializer list”转换为“_Mypair”
message : 查看对正在编译的函数 模板 实例化“std::pair<_Kty,_Ty> std::make_pair<int32_t&,TimerPtr&>(_Ty1,_Ty2) noexcept(false)”的引用
1> with
1> [
1> _Kty=int32_t,
1> _Ty=Timer