[
https://issues.apache.org/jira/browse/PROTON-1831?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robbie Gemmell updated PROTON-1831:
-----------------------------------
Reporter: Alan Conway (was: Kim van der Riet)
Description: See PROTON-1832 for the detail, this JIRA was inadvertently
spammed with comments for it. (was: When using nested complex types (for
example, a list of maps or an array of lists), the compiler fails to compile.
For example, the following code snippet (saved as {{ctt.cpp}}):
{noformat}
#include <map>
#include <vector>
#include <proton/types.hpp>
int main(int, char**) {
std::map<proton::value, proton::value> m1 = {{uint8_t(0), "zero"},
{uint8_t(1), "one"}};
std::map<proton::value, proton::value> m2 = {{true, "true"}, {false,
"false"}};
std::vector<std::map<proton::value, proton::value> > am = {m1, m2};
proton::value pv = am;
}{noformat}
fails compilation with the following error:
{noformat}
In file included from install/include/proton/types.hpp:47:0,
from ctt.cpp:3:
install/include/proton/./codec/vector.hpp: In instantiation of
‘proton::codec::encoder& proton::codec::operator<<(proton::codec::encoder&,
const std::vector<_Tp, _Alloc>&) [with T = std::map<proton::value,
proton::value>; A = std::allocator<std::map<proton::value, proton::value> >]’:
install/include/proton/./value.hpp:84:11: required from ‘typename
proton::value::assignable<T, proton::value&>::type
proton::value::operator=(const T&) [with T =
std::vector<std::map<proton::value, proton::value> >; typename
proton::value::assignable<T, proton::value&>::type = proton::value&]’
install/include/proton/./value.hpp:79:85: required from
‘proton::value::value(const T&, typename proton::value::assignable<T>::type*)
[with T = std::vector<std::map<proton::value, proton::value> >; typename
proton::value::assignable<T>::type = void]’
ctt.cpp:9:24: required from here
install/include/proton/./codec/vector.hpp:39:31: error: incomplete type
‘proton::internal::type_id_of<std::map<proton::value, proton::value> >’ used in
nested name specifier
return e << encoder::array(x, internal::type_id_of<T>::value);
~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{noformat}
)
> [c] duplicate link names cause invalid read in pn_transport_unbind_handles
> --------------------------------------------------------------------------
>
> Key: PROTON-1831
> URL: https://issues.apache.org/jira/browse/PROTON-1831
> Project: Qpid Proton
> Issue Type: Bug
> Reporter: Alan Conway
> Assignee: Alan Conway
> Priority: Major
>
> See PROTON-1832 for the detail, this JIRA was inadvertently spammed with
> comments for it.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]