Boost.Parameter: copy constructor gets "mistaken" for constructor(const ArgPack& ) in parent class.

Hello,
I have a situation which I can summarize as:
#include

AMDG er wrote:
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
This is almost right. Cast to const A& instead of A. In Christ, Steven Watanabe

Steven Watanabe wrote:
AMDG
er wrote:
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
This is almost right. Cast to const A& instead of A.
In Christ, Steven Watanabe
Thanks!
participants (2)
-
er
-
Steven Watanabe