C++ 如果基类已知,如何确定类型可转换为哪个派生类?
考虑以下代码:C++ 如果基类已知,如何确定类型可转换为哪个派生类?,c++,C++,考虑以下代码: struct A {}; struct B : A{}; struct X { operator B() {return {};} }; int main() { A a = X{}; } aa=X{}确实起作用,并导致调用X::operator B 如果我只知道X和A,是否可以在编译时确定类型B 换句话说,是否有可能编写一个类型traitfoo\u t,从而foo\u t=B?在我的第一条评论中,我误解了trait需求。我一直在想一种方法来做到这一
struct A {};
struct B : A{};
struct X
{
operator B() {return {};}
};
int main()
{
A a = X{};
}
aa=X{}
确实起作用,并导致调用X::operator B
如果我只知道X
和A
,是否可以在编译时确定类型B
换句话说,是否有可能编写一个类型trait
foo\u t
,从而foo\u t
=B
?在我的第一条评论中,我误解了trait需求。我一直在想一种方法来做到这一点,但也有一个问题,即可能存在某种类型的C
,这样您就可以合理地拥有foo\u t=C
。即使没有,我认为这个问题是无法用模板系统解决的。@CruzJean我也开始认为这是不可能的。关于歧义问题:如果代码< >代码> >不可转换为<代码> > <代码>,我不希望这个特性起作用。我想我们可以用<代码> STD::iSyApabsive或