可以得到一个对象的静态类型?

时间:2013-01-30 16:30:14

标签: c++ templates type-conversion std

我觉得这应该是显而易见的,但我想我今天才会成为现实。

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

例如:

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_asidestd::unordered_map<std::string, bool>std::unordered_map<std::string, bool>有一个value_type typedef。

我可以使用std::unordered_map<std::string, bool>::value_type(key,value)构建一个属于这个无序地图的对。但是,如何从实例转到静态类型?

1 个答案:

答案 0 :(得分:1)

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

但你真的不需要这里。相反,你可以做

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

使用参数(在初始“提示”迭代器之后)作为value_type的构造函数参数,使用“value_type对象”(使用就地构造)“

}。