Note that there are some explanatory texts on larger screens.

plurals
  1. POboost::variant, shared-ptr error in assignment
    primarykey
    data
    text
    <p>I'm have the following elements:</p> <pre><code>#define TEMPLATE_PARAM boost::variant&lt;int, const std::string&amp;, const std::vector&lt;std::string&gt;&amp;, const std::vector&lt;int&gt;&amp;, const ITemplateLoop*, const std::vector&lt;ITemplateLoop*&gt;&amp;&gt; class PostParam { ... const std::string &amp;getParam() const; }; class ParamContainer { std::map&lt;std::string, TEMPLATE_PARAM&gt; map_; template &lt;typename T&gt; void insert(std::string key, const T &amp; value) { map_[key] = value; } public: template&lt;typename ... Args&gt; void add(std::map&lt;std::string, std::shared_ptr&lt;PostParam&gt;&gt;&amp; param, Args ... args) { for (const auto &amp; key : param) insert(key.first, key.second-&gt;getParam()); if (sizeof ...(Args) &gt; 0) add(args...); } </code></pre> <p>I am getting a lot of compilation error and I don't know what to paste here</p> <pre><code>/usr/local/include/boost/detail/reference_content.hpp: In member function 'void boost::detail::variant::move_storage::internal_visit(T&amp;, int) const [with T = boost::de tail::reference_content&lt;const std::basic_string&lt;char&gt;&amp;&gt;]': /usr/local/include/boost/variant/detail/visitation_impl.hpp:130:9: instantiated from 'typename Visitor::result_type boost::detail::variant::visitation_impl_invoke_impl(int, Visitor&amp;, VoidPtrCV, T*, mpl_::true_) [with Visitor = boost::detail::variant::move_storage, VoidPtrCV = void*, T = boost::detail::reference_content&lt;const std::basic_string&lt;char&gt;&amp;&gt;, typename Visitor::result_type = void, mpl_::true_ = mpl_::bool_&lt;true&gt;]' /usr/local/include/boost/variant/detail/visitation_impl.hpp:173:9: instantiated from 'typename Visitor::result_type boost::detail::variant::visitation_impl_invoke(int, Visitor&amp;, VoidPtrCV, T*, NoBackupFlag, int) [with Visitor=boost::detail::variant::move_storage, VoidPtrCV = void*, T = boost::detail::reference_content&lt;const std::basic_string&lt;char&gt;&amp;&gt;, NoBackupFlag = boost::variant&lt;int, const std::basic_string&lt;char&gt;&amp;, const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;, const std::vector&lt;int&gt;&amp;, const TemplateEngine::ITemplateLoop*, const std::vector&lt;TemplateEngine::ITemplateLoop*&gt;&amp;, const PostParam&amp;&gt;::has_fallback_type_, typename Visitor::result_type = void]' /usr/local/include/boost/variant/detail/visitation_impl.hpp:260:1: instantiated from 'typename Visitor::result_type boost::detail::variant::visitation_impl(int, int, Visitor&amp;, VoidPtrCV, mpl_::false_, NoBackupFlag, Which*, step0*) [with Which = mpl_::int_&lt;0&gt;, step0 = boost::detail::variant::visitation_impl_step&lt;boost::mpl::l_iter&lt; boost::mpl::l_item&lt;mpl_::long_&lt;7l&gt;, int, boost::mpl::l_item&lt;mpl_::long_&lt;6l&gt;, boost::detail::reference_content&lt;const std::basic_string&lt;char&gt;&amp;&gt;, boost::mpl::l_item&lt;mpl_: :long_&lt;5l&gt;, boost::detail::reference_content&lt;const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;&gt;, boost::mpl::l_item&lt;mpl_::long_&lt;4l&gt;, boost::detail::reference_content&lt;const std::vector&lt;int&gt;&amp;&gt;, boost::mpl::l_item&lt;mpl_::long_&lt;3l&gt;, const TemplateEngine::ITemplateLoop*, boost::mpl::l_item&lt;mpl_::long_&lt;2l&gt;, boost::detail::reference_content&lt;const std::vector&lt;TemplateEngine::ITemplateLoop*&gt;&amp;&gt;, boost::mpl::l_item&lt;mpl_::long_&lt;1l&gt;, boost::detail::reference_content&lt;const PostParam&amp;&gt;, boost::mpl::l_end&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;, boost::mpl::l_iter&lt;boost::mpl::l_end&gt; &gt;, Visitor = boost::detail::variant::move_storage, VoidPtrCV = void*, NoBackupFlag = boost::variant&lt;int, const std::basic_string&lt;char&gt;&amp;, const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;, const std::vector&lt;int&gt;&amp;, const TemplateEngine::ITemplateLoop*, const std::vector&lt;TemplateEngine::ITemplateLoop*&gt;&amp;, const PostParam&amp;&gt;::has_fallback_type_, typename Visitor::result_type = void, mpl_::false_ = mpl_::bool_&lt;false&gt;]' </code></pre> <p>I think it's the parameter that I get using key.second->getParam() but I'm unable to find a solution</p> <p><em><strong>Edit</em></strong></p> <p>I have changed the #define to the typedef So the error message</p> <pre><code>/home/django/cloaked-ninja/includes/TemplateEngine.hpp:67:7: instantiated from 'void TemplateEngine::ParamContainer::insert(std::string, const T&amp;) [with T = std::basic_string&lt;char&gt;, std::string = std::basic_string&lt;char&gt;]' /home/django/cloaked-ninja/includes/TemplateEngine.hpp:94:2: instantiated from 'void TemplateEngine::ParamContainer::add(std::map&lt;std::basic_string&lt;char&gt;, std::shared_ptr&lt;PostParam&gt; &gt;&amp;, Args ...) [with Args = {}]' /home/django/cloaked-ninja/src/Controller/ControllerPost.cpp:22:14: instantiated from here /usr/local/include/boost/detail/reference_content.hpp:62:24: error: 'boost::detail::reference_content&lt;RefT&gt;&amp; boost::detail::reference_content&lt;RefT&gt;::operator=(const boost::detail::reference_content&lt;RefT&gt;&amp;) [with RefT = const std::basic_string&lt;char&gt;&amp;, boost::detail::reference_content&lt;RefT&gt; = boost::detail::reference_content&lt;const std::basic_string&lt;char&gt;&amp;&gt;]' is private /usr/local/include/boost/variant/variant.hpp:583:9: error: within this context /usr/local/include/boost/detail/reference_content.hpp: In member function 'void boost::detail::variant::move_storage::internal_visit(T&amp;, int) const [with T = boost::de tail::reference_content&lt;const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;&gt;]': /usr/local/include/boost/variant/detail/visitation_impl.hpp:130:9: instantiated from 'typename Visitor::result_type boost::detail::variant::visitation_impl_invoke_impl(int, Visitor&amp;, VoidPtrCV, T*, mpl_::true_) [with Visitor = boost::detail::variant::move_storage, VoidPtrCV = void*, T = boost::detail::reference_content&lt;const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;&gt;, typename Visitor::result_type = void, mpl_::true_ = mpl_::bool_&lt;true&gt;]' /usr/local/include/boost/detail/reference_content.hpp: In member function 'void boost::detail::variant::move_storage::internal_visit(T&amp;, int) const [with T = boost::detail::reference_content&lt;const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;&gt;]': /usr/local/include/boost/variant/detail/visitation_impl.hpp:130:9: instantiated from 'typename Visitor::result_type boost::detail::variant::visitation_impl_invoke_impl(int, Visitor&amp;, VoidPtrCV, T*, mpl_::true_) [with Visitor = boost::detail::variant::move_storage, VoidPtrCV = void*, T = boost::detail::reference_content&lt;const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;&gt;, typename Visitor::result_type = void, mpl_::true_ = mpl_::bool_&lt;true&gt;]' /usr/local/include/boost/variant/detail/visitation_impl.hpp:173:9: instantiated from 'typename Visitor::result_type boost::detail::variant::visitation_impl_invoke(int, Visitor&amp;, VoidPtrCV, T*, NoBackupFlag, int) [with Visitor = boost::detail::variant::move_storage, VoidPtrCV = void*, T = boost::detail::reference_content&lt;const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;&gt;, NoBackupFlag = boost::variant&lt;int, const std::basic_string&lt;char&gt;&amp;, const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;, const std::vector&lt;int&gt;&amp;, const TemplateEngine::ITemplateLoop*, const std::vector&lt;TemplateEngine::ITemplateLoop*&gt;&amp;&gt;::has_fallback_type_, typename Visitor::result_type = void]' /usr/local/include/boost/variant/detail/visitation_impl.hpp:260:1: instantiated from 'typename Visitor::result_type boost::detail::variant::visitation_impl(int, int, Visitor&amp;, VoidPtrCV, mpl_::false_, NoBackupFlag, Which*, step0*) [with Which = mpl_::int_&lt;0&gt;, step0 = boost::detail::variant::visitation_impl_step&lt;boost::mpl::l_iter&lt;boost::mpl::l_item&lt;mpl_::long_&lt;6l&gt;, int, boost::mpl::l_item&lt;mpl_::long_&lt;5l&gt;, boost::detail::reference_content&lt;const std::basic_string&lt;char&gt;&amp;&gt;, boost::mpl::l_item&lt;mpl_::long_&lt;4l&gt;, boost::detail::reference_content&lt;const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;&gt;, boost::mpl::l_item&lt;mpl_::long_&lt;3l&gt;, boost::detail::reference_content&lt;const std::vector&lt;int&gt;&amp;&gt;, boost::mpl::l_item&lt;mpl_::long_&lt;2l&gt;, const TemplateEngine::ITemplateLoop*, boost::mpl::l_item&lt;mpl_::long_&lt;1l&gt;, boost::detail::reference_content&lt;const std::vector&lt;TemplateEngine::ITemplateLoop*&gt;&amp;&gt;, boost::mpl::l_end&gt; &gt; &gt; &gt; &gt; &gt; &gt;, boost::mpl::l_iter&lt;boost::mpl::l_end&gt; &gt;, Visitor = boost::detail::variant::move_storage, VoidPtrCV = void*, NoBackupFlag = boost::variant&lt;int, const std::basic_string&lt;char&gt;&amp;, const std::vector&lt;std::basic_string&lt;char&gt; &gt;&amp;, const std::vector&lt;int&gt;&amp;, const TemplateEngine::ITemplateLoop*, const std::vector&lt;TemplateEngine::ITemplateLoop*&gt;&amp;&gt;::has_fallback_type_, typename Visitor::result_type = void, mpl_::false_ = mpl_::bool_&lt;false&gt;]' </code></pre> <p><em><strong>Edit2</em></strong></p> <p>I have just changed the #define to the following typedef and it's now working:</p> <pre><code> typedef boost::variant&lt;int, const std::string*, const std::vector&lt;std::string&gt;*, const std::vector&lt;int&gt;*, const ITemplateLoop*, const std::vector&lt;ITemplateLoop*&gt;*&gt; TEMPLATE_PARAM; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload