Skip to content

patch_inplace assumes StringType is std::string #4134

Closed

Description

@tomalakgeretkal

Description

patch_inplace has several instances of get<std::string>, which breaks the build if you're using a custom string.

Reproduction steps

  • Instantiate a nlohmann::basic_json<> with a custom string type
  • Attempt to call nlohmann:basic_json<>::patch

Expected vs. actual results

Compilation fails.

Minimal code example

struct MyString;  // some compatible impl

using Value = nlohmann::basic_json<
		std::map,
		std::vector,
		MyString,
		bool,
		std::int64_t,
		std::uint64_t,
		double,
		
		std::allocator,
		nlohmann::adl_serializer,
		std::vector<std::uint8_t>
>;

Value base, patch;
base.patch(patch);

Error messages

No matching constructor for initialization of 'nlohmann::basic_json<std::map, std::vector, MyString >::json_pointer' (aka 'json_pointer< MyString >')

Compiler and operating system

Apple clang version 14.0.3 (clang-1403.0.22.14.1), macOS Ventura 13.5.1

Library version

3.11.2

Validation

Activity

  1. falbrechtskirchinger commented on Sep 6, 2023

    @falbrechtskirchinger
    Contributor

    Seems easy enough to fix. If you care to submit a PR, please add a regression test to tests/src/unit-alt-string.cpp.

  2. self-assigned this
    on Dec 11, 2024
  3. nlohmann commented on Dec 12, 2024

    @nlohmann
    Owner

    @tomalakgeretkal Please take a look at #4536.

  4. added this to the Release 3.11.4 milestone on Dec 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

kind: bugsolution: proposed fixa fix for the issue has been proposed and waits for confirmation

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions