Commit 6a656ed3 authored by Jay Sistar's avatar Jay Sistar

Adding first and second properties to iteration_proxy_internal

parent 2afbd334
......@@ -7877,6 +7877,44 @@ class basic_json
class iteration_proxy
{
private:
/// helper class for first "property"
template<typename ProxyType>
class iterator_key_property
{
private:
/// the reference to the proxy
ProxyType& proxy;
public:
explicit iterator_key_property(ProxyType& proxyRef) noexcept
: proxy(proxyRef) {}
/// conversion operator (calls key())
operator typename basic_json::string_t() const
{
return proxy.key();
}
};
/// helper class for second "property"
template<typename ProxyType>
class iterator_value_property
{
private:
/// the reference to the proxy
ProxyType& proxy;
public:
explicit iterator_value_property(ProxyType& proxyRef) noexcept
: proxy(proxyRef) {}
/// conversion operator (calls value())
operator typename IteratorType::reference() const
{
return proxy.value();
}
};
/// helper class for iteration
class iteration_proxy_internal
{
......@@ -7887,8 +7925,11 @@ class basic_json
size_t array_index = 0;
public:
iterator_key_property<iteration_proxy_internal> first;
iterator_value_property<iteration_proxy_internal> second;
explicit iteration_proxy_internal(IteratorType it) noexcept
: anchor(it)
: anchor(it), first(*this), second(*this)
{}
/// dereference operator (needed for range-based for)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment