C++ 是否可以使用c++;20?

C++ 是否可以使用c++;20?,c++,polymorphism,c++20,c++-concepts,C++,Polymorphism,C++20,C++ Concepts,这个问题在滴度中给出了很多 我想问的是,为了模仿多态性,是否有可能以某种方式修改这些概念。 输出应为: IsBase IsNotBase IsNotBase 所有与概念相关的内容都是在编译时确定和“解决”的。暂时搁置SFINAE:失败的概念需求会导致格式错误的程序和编译失败 另一方面,C++中唯一可能“知道”您的代码> C 不“真正”指向“代码> BASE的代码是 DyrimCysCase,它在运行时< /强>中被评估。至于C++中的其他内容,你的 c>代码>指向了 Base< /Calp>实

这个问题在滴度中给出了很多

我想问的是,为了模仿多态性,是否有可能以某种方式修改这些概念。 输出应为:

IsBase
IsNotBase
IsNotBase

所有与概念相关的内容都是在编译时确定和“解决”的。暂时搁置SFINAE:失败的概念需求会导致格式错误的程序和编译失败

另一方面,C++中唯一可能“知道”您的代码> C <代码>不“真正”指向“代码> BASE<代码>的代码是<代码> DyrimCysCase<代码>,它在<强>运行时< /强>中被评估。至于C++中的其他内容,你的<代码> c>代码>指向了 Base< /Calp>实例,这就是讨论的结束。


因此,总而言之,就在编译时计算的所有内容而言,您的
c
指向一个
Base
,并且没有其他概念可以使用,这将表明任何其他内容。

非常感谢您的论证:(编译时)(运行时)。在概念中使用动态强制转换有可能克服这个问题吗?
dynamic\u cast
是C++20中的constexpr,因此如果您将操作保持在编译时状态,它应该可以在没有任何概念的情况下工作。我确实找到了将
dynamic\u cast
作为constexpr的建议,然而,cppreference.com.不知道cppreference是如何处理constexpr的(可能是page?),但是如果你看一下,你可以看到提案是这样做的。
IsBase
IsNotBase
IsBase
IsBase
IsNotBase
IsNotBase