Skip to content

Iterators cannot be used with range-v3 #3130

Closed
@axic

Description

@axic

What is the issue you have?

(Apologies if this should have been a discussion item and not a bug report.)

I have a JSON object and would like to extract the keys (preferably as a set). (In jsoncpp this is accomplished with .getMemberNames())

Ideally this would work with range-v3, but the iterator of this library does not seem to be compatible:

  1. json.items() | ranges::views::keys
/Projects/solidity/test/libsolidity/StandardCompiler.cpp:1255:39: error: invalid operands to binary expression ('const nlohmann::basic_json<>::value_type' (aka 'const nlohmann::basic_json<>') and 'const view_closure<ranges::views::keys_fn>')
                (optimizer["details"]["yulDetails"] | ranges::views::keys | ranges::to<set>) ==
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~
  1. ranges::subrange(json.begin(), json.end()) || ranges::views::keys
/Projects/solidity/test/libsolidity/StandardCompiler.cpp:1255:4: error: no viable constructor or deduction guide for deduction of template arguments of 'subrange'
                (ranges::subrange(optimizer["details"]["yulDetails"].begin(), optimizer["details"]["yulDetails"].end()) | ranges::views::keys | ranges::to<set>) ==
                 ^
  1. json.items() | ranges::views::transform([](auto&& _v) { return _v.key(); })
/Projects/solidity/test/libsolidity/StandardCompiler.cpp:1254:100: error: no member named 'key' in 'nlohmann::basic_json<>'
        auto x = optimizer["details"]["yulDetails"] |  ranges::views::transform([](auto&& _v) { return _v.key(); });
                                                                                                       ~~ ^

Please describe the steps to reproduce the issue.

As above ^^

Can you provide a small but working code example?

What is the expected behavior?

And what is the actual behavior instead?

Which compiler and operating system are you using?

  • Compiler: gcc + clang
  • Operating system: linux + macOS

Which version of the library did you use?

  • latest release version 3.10.4
  • other release - please state the version: 3.10.2
  • the develop branch

If you experience a compilation error: can you compile and run the unit tests?

  • yes
  • no - please copy/paste the error message below

Metadata

Metadata

Assignees

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions