qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robbie Gemmell (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PROTON-1831) [C++ binding] Nested complex types fail compilation with "incomplete type" error
Date Wed, 02 May 2018 10:27:00 GMT

    [ https://issues.apache.org/jira/browse/PROTON-1831?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16460834#comment-16460834
] 

Robbie Gemmell commented on PROTON-1831:
----------------------------------------

As the PR also had the wrong JIRA key in it and wasn't updated, none of the comments here
relate to Kims originally reported issue.

I've cloned the original issue to PROTON-1840, look there instead for it.

> [C++ binding] Nested complex types fail compilation with "incomplete type" error
> --------------------------------------------------------------------------------
>
>                 Key: PROTON-1831
>                 URL: https://issues.apache.org/jira/browse/PROTON-1831
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: cpp-binding
>            Reporter: Kim van der Riet
>            Assignee: Alan Conway
>            Priority: Major
>
> 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}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message