オフィシャルのマニュアルに
obj.cbegin() とかってかいてあるけど、これはver1.0時代のもの。
執筆時点ではobj.as_object().cbegin()
のようにas_object()をかます必要ある。
json::value obj; obj[L"key1"] = json::value::boolean(false); obj[L"key2"] = json::value::number(44); obj[L"key3"] = json::value::number(43.6); obj[L"key4"] = json::value::string(U("str")); // Note the "as_object()" method calls for(auto iter = obj.as_object().cbegin(); iter != obj.as_object().cend(); ++iter) { // This change lets you get the string straight up from "first" const utility::string_t &str = iter->first; const json::value &v = iter->second; ... }
理由は
json配列とオブジェクトに対する反復の実行方法を変更しました。もうstd :: pairのイテレータは返されません。代わりに、json :: arrayクラスとjson :: objectクラスの配列とオブジェクトのための別々のイテレータがあります。これにより、パフォーマンスを改善し、それに応じて調整を続けることができます。配列イテレータはjson :: valuesを返し、オブジェクトイテレータはstd :: pairを返すようになりました。
とのこと。