是否等同于<?延伸T>,<?超级T>在C++?
在 C++ 中是否有等效的 、
<? extends T>
<? super T>
另外,即使 是 Java 中的接口,是否也有效?
<? extends T>
<? super T>
T
在 C++ 中是否有等效的 、<? extends T>
<? super T>
另外,即使 是 Java 中的接口,是否也有效?<? extends T>
<? super T>
T
它没有像Java那样有很好的语法糖,但它可以通过boost/type_traits很好地管理。有关详细信息,请参阅 http://www.boost.org/doc/libs/1_40_0/libs/type_traits/doc/html/index.html。
#include <boost/type_traits.hpp>
#include <boost/static_assert.hpp>
class Base {};
class Derived_from_Base : public Base {};
class Not_derived_from_Base {};
template<typename BASE, typename DERIVED>
void workOnBase()
{
BOOST_STATIC_ASSERT((boost::is_base_of<BASE, DERIVED>::value));
}
int main()
{
workOnBase<Base, Derived_from_Base>(); // OK
workOnBase<Base, Not_derived_from_Base>(); // FAIL
return 0;
}
1>d:...\main.cpp(11): 错误 C2027: 使用未定义的类型 'boost::STATIC_ASSERTION_FAILURE' 1> 1> [ 1> x=false 1> ]
回答你的第二个问题:是的。就泛型而言,接口的处理方式与实类相同。
我将把第一个问题留给更C++精明的人。