Compilation with -fmodules-ts and use inside of a module · Issue #3472 · nlohmann/json
Description
Hi,
When just including #include <nlohmann/json.hpp> in a module, the compiler complains about impossible references.
It is not happening when not inside a module.
Reproduction steps
Just include the header inside a module and compile with -fmodules-ts.
This is the triggering flag, really.
Expected vs. actual results
No error
Minimal code example
//mod.cxx: module; #include <iostream> #include <string_view> #include <string> #include <nlohmann/json.hpp> export module hello; export { namespace X { void greeter ( std::string_view const &name ){ std::string h = "exported greeter"; std::cout << "Hello " << name << "!" << h << "\n"; } } } // main.cpp import hello; int main ( void ){ X::greeter("ok"); return 0; } // compile with ~/gcc-12.1/g++ -fmodules-ts -std=c++20 -I/my_path/include/ mod.cxx main.cpp
Error messages
`/usr/include/nlohmann/adl_serializer.hpp:41:17: error: ‘static decltype ((nlohmann::{anonymous}::to_json(j, forward<ValueType>(val)), void())) nlohmann::adl_serializer<T, SFINAE>::to_json(BasicJsonType&, ValueType&&) [with BasicJsonType = nlohmann::basic_json<>; ValueType = bool&; <template-parameter-1-1> = bool; <template-parameter-1-2> = void; decltype ((nlohmann::{anonymous}::to_json(j, forward<ValueType>(val)), void())) = void]’ references internal linkage entity ‘constexpr const nlohmann::detail::to_json_fn& nlohmann::{anonymous}::to_json’ 41 | static auto to_json(BasicJsonType& j, ValueType&& val) noexcept(`
Compiler and operating system
Linux GCC-12.1
Library version
Latest
Validation
- The bug also occurs if the latest version from the
developbranch is used. - I can successfully compile and run the unit tests.