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>。 typedefstd::unordered_map<std::string, bool>があります。value_type

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 に答える