mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-29 05:00:47 +00:00
Remove virtual destructors for Visitor.
This commit is contained in:
parent
65a1057aae
commit
95ae1105d9
@ -66,7 +66,8 @@ class Visitor<>
|
||||
public:
|
||||
using List = TypeList<>;
|
||||
|
||||
virtual ~Visitor() = default;
|
||||
protected:
|
||||
~Visitor() = default;
|
||||
};
|
||||
|
||||
template <typename Type>
|
||||
@ -76,6 +77,9 @@ public:
|
||||
using List = TypeList<Type>;
|
||||
|
||||
virtual void visit(Type &) = 0;
|
||||
|
||||
protected:
|
||||
~Visitor() = default;
|
||||
};
|
||||
|
||||
template <typename Type, typename ... Types>
|
||||
@ -86,6 +90,9 @@ public:
|
||||
using Visitor<Types ...>::visit;
|
||||
|
||||
virtual void visit(Type &) = 0;
|
||||
|
||||
protected:
|
||||
~Visitor() = default;
|
||||
};
|
||||
|
||||
|
||||
@ -95,6 +102,8 @@ class VisitorImplHelper;
|
||||
template <typename Derived, typename VisitorBase>
|
||||
class VisitorImplHelper<Derived, VisitorBase> : public VisitorBase
|
||||
{
|
||||
protected:
|
||||
~VisitorImplHelper() = default;
|
||||
};
|
||||
|
||||
template <typename Derived, typename VisitorBase, typename Type>
|
||||
@ -111,6 +120,8 @@ protected:
|
||||
throw Exception("visitImpl(" + demangle(typeid(T).name()) + " &)" + " is not implemented for class"
|
||||
+ demangle(typeid(Derived).name()), ErrorCodes::LOGICAL_ERROR);
|
||||
}
|
||||
|
||||
~VisitorImplHelper() = default;
|
||||
};
|
||||
|
||||
template <typename Derived, typename VisitorBase, typename Type, typename ... Types>
|
||||
@ -128,6 +139,8 @@ protected:
|
||||
throw Exception("visitImpl(" + demangle(typeid(T).name()) + " &)" + " is not implemented for class"
|
||||
+ demangle(typeid(Derived).name()), ErrorCodes::LOGICAL_ERROR);
|
||||
}
|
||||
|
||||
~VisitorImplHelper() = default;
|
||||
};
|
||||
|
||||
template <typename Derived, typename VisitorBase>
|
||||
@ -140,6 +153,8 @@ class VisitorImpl : public
|
||||
>::Type
|
||||
>::Type
|
||||
{
|
||||
protected:
|
||||
~VisitorImpl() = default;
|
||||
};
|
||||
|
||||
template <typename Derived, typename Base, typename Visitor>
|
||||
@ -147,6 +162,8 @@ class Visitable : public Base
|
||||
{
|
||||
public:
|
||||
void accept(Visitor & visitor) override { visitor.visit(*static_cast<Derived *>(this)); }
|
||||
|
||||
//virtual ~Visitable() = default;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -19,10 +19,10 @@ using BasicArraySinks = typename AppendToTypeList<GenericArraySink, NumericArray
|
||||
using NullableArraySinks = typename TypeListMap<NullableArraySink, BasicArraySinks>::Type;
|
||||
using TypeListArraySinks = typename TypeListConcat<BasicArraySinks, NullableArraySinks>::Type;
|
||||
|
||||
class ArraySinkVisitor : public ApplyTypeListForClass<Visitor, TypeListArraySinks>::Type {};
|
||||
using ArraySinkVisitor = typename ApplyTypeListForClass<Visitor, TypeListArraySinks>::Type;
|
||||
|
||||
template <typename Derived>
|
||||
class ArraySinkVisitorImpl : public VisitorImpl<Derived, ArraySinkVisitor> {};
|
||||
using ArraySinkVisitorImpl = VisitorImpl<Derived, ArraySinkVisitor>;
|
||||
|
||||
#pragma GCC visibility pop
|
||||
}
|
||||
|
@ -24,10 +24,10 @@ using BasicAndNullableArraySources = typename TypeListConcat<BasicArraySources,
|
||||
using ConstArraySources = typename TypeListMap<ConstSource, BasicAndNullableArraySources>::Type;
|
||||
using TypeListArraySources = typename TypeListConcat<BasicAndNullableArraySources, ConstArraySources>::Type;
|
||||
|
||||
class ArraySourceVisitor : public ApplyTypeListForClass<Visitor, TypeListArraySources>::Type {};
|
||||
using ArraySourceVisitor = typename ApplyTypeListForClass<Visitor, TypeListArraySources>::Type;
|
||||
|
||||
template <typename Derived>
|
||||
class ArraySourceVisitorImpl : public VisitorImpl<Derived, ArraySourceVisitor> {};
|
||||
using ArraySourceVisitorImpl = VisitorImpl<Derived, ArraySourceVisitor>;
|
||||
|
||||
#pragma GCC visibility pop
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ void callSelectMemberFunctionWithTupleArgument(Tuple & tuple, Args && ... args)
|
||||
}
|
||||
|
||||
template <typename Base, typename ... Args>
|
||||
struct ArraySourceSelectorVisitor : public ArraySourceVisitorImpl<ArraySourceSelectorVisitor<Base, Args ...>>
|
||||
struct ArraySourceSelectorVisitor final : public ArraySourceVisitorImpl<ArraySourceSelectorVisitor<Base, Args ...>>
|
||||
{
|
||||
explicit ArraySourceSelectorVisitor(Args && ... args) : packed_args(args ...) {}
|
||||
|
||||
@ -61,7 +61,7 @@ struct ArraySourceSelector
|
||||
|
||||
|
||||
template <typename Base, typename ... Args>
|
||||
struct ArraySinkSelectorVisitor : public ArraySinkVisitorImpl<ArraySinkSelectorVisitor<Base, Args ...>>
|
||||
struct ArraySinkSelectorVisitor final : public ArraySinkVisitorImpl<ArraySinkSelectorVisitor<Base, Args ...>>
|
||||
{
|
||||
explicit ArraySinkSelectorVisitor(Args && ... args) : packed_args(args ...) {}
|
||||
|
||||
@ -89,7 +89,7 @@ struct ArraySinkSelector
|
||||
|
||||
|
||||
template <typename Base, typename ... Args>
|
||||
struct ValueSourceSelectorVisitor : public ValueSourceVisitorImpl<ValueSourceSelectorVisitor<Base, Args ...>>
|
||||
struct ValueSourceSelectorVisitor final : public ValueSourceVisitorImpl<ValueSourceSelectorVisitor<Base, Args ...>>
|
||||
{
|
||||
explicit ValueSourceSelectorVisitor(Args && ... args) : packed_args(args ...) {}
|
||||
|
||||
|
@ -24,10 +24,10 @@ using BasicAndNullableValueSources = typename TypeListConcat<BasicValueSources,
|
||||
using ConstValueSources = typename TypeListMap<ConstSource, BasicAndNullableValueSources>::Type;
|
||||
using TypeListValueSources = typename TypeListConcat<BasicAndNullableValueSources, ConstValueSources>::Type;
|
||||
|
||||
class ValueSourceVisitor : public ApplyTypeListForClass<Visitor, TypeListValueSources>::Type {};
|
||||
using ValueSourceVisitor = typename ApplyTypeListForClass<Visitor, TypeListValueSources>::Type;
|
||||
|
||||
template <typename Derived>
|
||||
class ValueSourceVisitorImpl : public VisitorImpl<Derived, ValueSourceVisitor> {};
|
||||
using ValueSourceVisitorImpl = VisitorImpl<Derived, ValueSourceVisitor>;
|
||||
|
||||
#pragma GCC visibility pop
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user