0

我觉得这应该是显而易见的,但我想我今天很狡猾。

如何让编译器给我一个事物的静态类型?

前任:

auto it = m_security_look_aside.find(strPath);
if (it == m_security_look_aside.end())
    it = m_security_look_aside.insert(it, TYPE_OF(m_security_look_aside)::value_type(strPath, InternalIsLicensed(strPath)));

m_security_look_aside是一个std::unordered_map<std::string, bool>std::unordered_map<std::string, bool>有一个value_typetypedef。

我可以用它std::unordered_map<std::string, bool>::value_type(key,value)来构造一个属于这个无序映射的对。但是我怎样才能从实例转到它的静态类型呢?

4

1 回答 1

1

使用decltype(m_security_look_aside)::value_type- iedecltype(m_security_look_aside)可用于表示实例变量的类型。

但你在这里并不需要它。相反,你可以做

it = m_security_look_aside.emplace_hint(it, strPath, InternalIsLicensed(strPath));

value_type使用参数(在初始“提示”迭代器之后)作为value_type.

于 2013-01-30T16:33:05.887 回答