template <class f="">
class bar
{
class foo;
};</class>
template <class f="">
class bar<f>::foo
{
};</f></class>
is processed to
class foo {};
namespace classdesc_access {
template < class F > struct access_p<class ::bar\<f=""> > {
void operator()(classdesc::p_t& targ, const classdesc::string& desc,class ::bar<f>& arg)
{
}
};
template < class F > struct access_p<class ::bar< F > > {
void operator()(classdesc::p_t& targ, const classdesc::string& desc,class ::bar< F > & arg)
{
::p(targ,desc+"",static_cast<::foo&>(arg));
}
};
}</f></class>
The problem is in handling the :: operator on the definition of bar::foo, which classdesc mistakenly thinks is inheritance.
Anonymous
Diff: