$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
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?