gpt4 book ai didi

c++ - 公共(public)继承的静态断言

转载 作者:IT老高 更新时间:2023-10-28 22:59:38 25 4
gpt4 key购买 nike

我构建了一个帮助类,它将通过模板构造一个自定义类,这个自定义类必须继承自某个类,我可以使用 std::is_base_of 进行检查。

但是我还需要检查继承是否公开,如何实现?

作为引用,这里是该类的精简版本,我在其中有 std::is_base_of

template<class CustomSink>
class Sink
{
static_assert(std::is_base_of<BaseSink, CustomSink>::value, "CustomSink must derive from BaseSink");
//Some static assert here to check if custom sink has publicly inherited BaseSink
//static_assert(is_public.....
public:
template<class... Args>
Sink(Args&&... args)
{
}
~Sink()
{
}
};

最佳答案

据我所知,公共(public)继承是唯一可以执行隐式指针转换的情况(可以通过重载运算符实现引用转换)。

template <class T>
std::true_type is_public_base_of_impl(T*);

template <class T>
std::false_type is_public_base_of_impl(...);

template <class B, class D>
using is_public_base_of = decltype(is_public_base_of_impl<B>(std::declval<D*>()));

See it live on Coliru

关于c++ - 公共(public)继承的静态断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44158904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com