Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Importing std and redefined symbols #4049

Open
2 tasks
mickes27 opened this issue Jun 8, 2023 · 0 comments
Open
2 tasks

Importing std and redefined symbols #4049

mickes27 opened this issue Jun 8, 2023 · 0 comments

Comments

@mickes27
Copy link

mickes27 commented Jun 8, 2023

Description

When exporting C++20 module with imported nlohmann::json as header unit and std module, a lot of redefinition errors occurs. This is not visible when importing iostream as header unit instead of std module.

Reproduction steps

Create primary interface module and import std module and nlohmann::json as header unit

Expected vs. actual results

It is expected to compile code without any error. As actual result, compilation fails.

Minimal code example

export module foo;
import std;
import <nlohmann/json.hpp>;

export class foo {
public:
	void helloworld();
};

void foo::helloworld()
{
	nlohmann::json v;
	v["example"] = "value";
	std::cout << v.dump() << std::endl;
}

Error messages

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xstring(2358,52): error C2572: 'std::basic_string': redefinition of default argument: parameter 1 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xstring(2359,1): message : see declaration of 'std::basic_string' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xstring(2358,87): error C2572: 'std::basic_string': redefinition of default argument: parameter 2 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xstring(2359,1): message : see declaration of 'std::basic_string' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\vector(437,49): error C2572: 'std::vector': redefinition of default argument: parameter 1 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\format(71,7): message : see declaration of 'std::vector' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xstddef(135,35): error C2572: 'std::less': redefinition of default argument: parameter 1 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xstddef(136,1): message : see declaration of 'std::less' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(42,47): error C2572: 'std::enable_if': redefinition of default argument: parameter 1 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(43,1): message : see declaration of 'std::enable_if' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(116,9): error C7570: 'std::move_constructible': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(116,9): message : see declaration of 'std::move_constructible' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  PrivatePath\JsonModule\include\JsonModule\json.ixx(12,17): message : see reference to class template instantiation 'nlohmann::json_abi_v3_11_2::basic_json<std::map,std::vector,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,bool,int64_t,uint64_t,double,std::allocator,nlohmann::json_abi_v3_11_2::adl_serializer,std::vector<uint8_t,std::allocator<uint8_t>>>' being compiled [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(105,9): error C7570: 'std::constructible_from': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(105,9): message : see declaration of 'std::constructible_from' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(102,9): error C7570: 'std::destructible': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(102,9): message : see declaration of 'std::destructible' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(44,9): error C7570: 'std::convertible_to': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(44,9): message : see declaration of 'std::convertible_to' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(93,9): error C7570: 'std::assignable_from': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(93,9): message : see declaration of 'std::assignable_from' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(56,9): error C7570: 'std::common_reference_with': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(56,9): message : see declaration of 'std::common_reference_with' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(36,9): error C7570: 'std::same_as': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(36,9): message : see declaration of 'std::same_as' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
PrivatePath\JsonModule\include\JsonModule\json.ixx(12,1): error C2752: 'std::vector<bool,std::allocator<bool>>': more than one partial specialization matches the template argument list 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\vector(2212): message : could be 'std::vector<bool,_Alloc>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\vector(2212): message : or       'std::vector<bool,_Alloc>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xutility(591,9): error C7570: 'std::input_iterator': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xutility(591,9): message : see declaration of 'std::input_iterator' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  PrivatePath\JsonModule\include\JsonModule\json.ixx(12,1): message : see reference to class template instantiation 'std::vector<bool,std::allocator<bool>>' being compiled [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\__msvc_iter_core.hpp(391,9): error C7570: 'std::input_or_output_iterator': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\__msvc_iter_core.hpp(391,9): message : see declaration of 'std::input_or_output_iterator' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\__msvc_iter_core.hpp(378,9): error C7570: 'std::weakly_incrementable': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\__msvc_iter_core.hpp(378,9): message : see declaration of 'std::weakly_incrementable' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(253,9): error C7570: 'std::movable': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(253,9): message : see declaration of 'std::movable' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(167,9): error C7570: 'std::swappable': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(167,9): message : see declaration of 'std::swappable' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xutility(509,9): error C7570: 'std::indirectly_readable': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xutility(509,9): message : see declaration of 'std::indirectly_readable' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(39,9): error C7570: 'std::derived_from': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(39,9): message : see declaration of 'std::derived_from' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\map(72,58): error C2572: 'std::map': redefinition of default argument: parameter 1 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\map(73,1): message : see declaration of 'std::map' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\map(72,85): error C2572: 'std::map': redefinition of default argument: parameter 2 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\map(73,1): message : see declaration of 'std::map' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
PrivatePath\JsonModule\out\build\x64-Debug\_deps\json-src\include\nlohmann\detail\iterators\iter_impl.hpp(50): error C2752: 'std::conditional<false,nlohmann::json_abi_v3_11_2::basic_json<std::map,std::vector,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,bool,int64_t,uint64_t,double,std::allocator,nlohmann::json_abi_v3_11_2::adl_serializer,std::vector<uint8_t,std::allocator<uint8_t>>>,const BasicJsonType>': more than one partial specialization matches the template argument list 
            with
            [
                BasicJsonType=nlohmann::json_abi_v3_11_2::basic_json<std::map,std::vector,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,bool,int64_t,uint64_t,double,std::allocator,nlohmann::json_abi_v3_11_2::adl_serializer,std::vector<uint8_t,std::allocator<uint8_t>>>
            ]
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(59): message : could be 'std::conditional<false,_Ty1,_Ty2>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(59): message : or       'std::conditional<false,_Ty1,_Ty2>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  PrivatePath\JsonModule\out\build\x64-Debug\_deps\json-src\include\nlohmann\json.hpp(730,1): message : see reference to class template instantiation 'nlohmann::json_abi_v3_11_2::detail::iter_impl<nlohmann::json_abi_v3_11_2::basic_json<std::map,std::vector,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,bool,int64_t,uint64_t,double,std::allocator,nlohmann::json_abi_v3_11_2::adl_serializer,std::vector<uint8_t,std::allocator<uint8_t>>>>' being compiled [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\__msvc_iter_core.hpp(395,9): error C7570: 'std::sentinel_for': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\__msvc_iter_core.hpp(395,9): message : see declaration of 'std::sentinel_for' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(266,9): error C7570: 'std::semiregular': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(266,9): message : see declaration of 'std::semiregular' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(259,9): error C7570: 'std::copyable': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(259,9): message : see declaration of 'std::copyable' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(181,9): error C7570: 'std::copy_constructible': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(181,9): message : see declaration of 'std::copy_constructible' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(109,9): error C7570: 'std::default_initializable': variable template has already been defined 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\concepts(109,9): message : see declaration of 'std::default_initializable' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
PrivatePath\JsonModule\out\build\x64-Debug\_deps\json-src\include\nlohmann\detail\iterators\iter_impl.hpp(82,1): error C2752: 'std::conditional<false,const nlohmann::json_abi_v3_11_2::basic_json<std::map,std::vector,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,bool,int64_t,uint64_t,double,std::allocator,nlohmann::json_abi_v3_11_2::adl_serializer,std::vector<uint8_t,std::allocator<uint8_t>>> *,nlohmann::json_abi_v3_11_2::basic_json<std::map,std::vector,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,bool,int64_t,uint64_t,double,std::allocator,nlohmann::json_abi_v3_11_2::adl_serializer,std::vector<uint8_t,std::allocator<uint8_t>>> *>': more than one partial specialization matches the template argument list 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(59): message : could be 'std::conditional<false,_Ty1,_Ty2>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(59): message : or       'std::conditional<false,_Ty1,_Ty2>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
PrivatePath\JsonModule\out\build\x64-Debug\_deps\json-src\include\nlohmann\detail\iterators\iter_impl.hpp(87,1): error C2752: 'std::conditional<false,const nlohmann::json_abi_v3_11_2::basic_json<std::map,std::vector,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,bool,int64_t,uint64_t,double,std::allocator,nlohmann::json_abi_v3_11_2::adl_serializer,std::vector<uint8_t,std::allocator<uint8_t>>> &,nlohmann::json_abi_v3_11_2::basic_json<std::map,std::vector,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,bool,int64_t,uint64_t,double,std::allocator,nlohmann::json_abi_v3_11_2::adl_serializer,std::vector<uint8_t,std::allocator<uint8_t>>> &>': more than one partial specialization matches the template argument list 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(59): message : could be 'std::conditional<false,_Ty1,_Ty2>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(59): message : or       'std::conditional<false,_Ty1,_Ty2>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xstring(930,52): error C2572: 'std::basic_string_view': redefinition of default argument: parameter 1 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xstring(1202,1): message : see declaration of 'std::basic_string_view' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\iosfwd(191,52): error C2572: 'std::basic_stringbuf': redefinition of default argument: parameter 1 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\sstream(24,1): message : see declaration of 'std::basic_stringbuf' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  PrivatePath\JsonModule\include\JsonModule\json.ixx(12): message : see reference to class template instantiation 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' being compiled [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\iosfwd(191,87): error C2572: 'std::basic_stringbuf': redefinition of default argument: parameter 2 
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\sstream(24,1): message : see declaration of 'std::basic_stringbuf' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
PrivatePath\JsonModule\include\JsonModule\json.ixx(13,13): error C2752: 'std::remove_reference<const char (&)[8]>': more than one partial specialization matches the template argument list [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(209): message : could be 'std::remove_reference<_Ty&>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\xtr1common(209): message : or       'std::remove_reference<_Ty&>' [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
  PrivatePath\JsonModule\out\build\x64-Debug\_deps\json-src\include\nlohmann\detail\meta\type_traits.hpp(522,87): message : see reference to alias template instantiation 'nlohmann::json_abi_v3_11_2::detail::uncvref_t<const char(&)[8]>' being compiled [PrivatePath\JsonModule\out\build\x64-Debug\json.vcxproj]
PrivatePath\JsonModule\include\JsonModule\json.ixx(13,1): fatal error C1117: unrecoverable error importing module 'std': symbol 'id' has already been defined

Compiler and operating system

Visual Studio 2022 17.6.2

Library version

3.11.2

Validation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant