Boost logo

Boost Users :

Subject: [Boost-users] Boost.Parameter: copy constructor gets "mistaken" for constructor(const ArgPack& ) in parent class.
From: er (erwann.rogard_at_[hidden])
Date: 2009-01-12 21:45:42


Hello,

I have a situation which I can summarize as:

#include <boost/parameter/keyword.hpp>
#include <boost/parameter/name.hpp>
#include <boost/parameter/parameters.hpp>
#include <boost/parameter/preprocessor.hpp>

BOOST_PARAMETER_KEYWORD(tag, xx)

struct A{
  template<typename ArgPack>
  A(const ArgPack& arg):x_(arg[xx|0]){}
  A(const A&){}
  A& operator=(const A& that){
      if(&that!=this){ x_ = that.x_; return *this; } }
  unsigned x_;
};

3 copy constructors are shown below, on the last of which works.
However it's really the first one that I'd like to get to work.

struct B : public A{
  template<typename ArgPack>
  B(const ArgPack& arg):A(arg){}

  B& operator=(const B& that){
      if(&that!=this){ A::operator=(that); return *this; } }

  //B(const B& that):A(that){} //no match for 'operator[]' in
'arg[(+<unnamed>::xx)->boost::parameter::keyword<T>::operator| [with
Default = int, Tag = tag::xx](((const int&)((const int*)(&0))))]'|

  //B(const B& that):A(static_cast<A>(that)){} //fails too

  B(const B& that):A((xx=that.x_)){} //requires knowledge of A's
members, not satisfactory.

};

Any suggestion, please?


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net