From 95ae1105d9e5132fc79c3c21e800469dc4c762b1 Mon Sep 17 00:00:00 2001 From: Nikolai Kochetov Date: Tue, 15 Sep 2020 02:05:43 +0300 Subject: [PATCH] Remove virtual destructors for Visitor. --- src/Common/Visitor.h | 19 ++++++++++++++++++- src/Functions/GatherUtils/ArraySinkVisitor.h | 4 ++-- .../GatherUtils/ArraySourceVisitor.h | 4 ++-- src/Functions/GatherUtils/Selectors.h | 6 +++--- .../GatherUtils/ValueSourceVisitor.h | 4 ++-- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/Common/Visitor.h b/src/Common/Visitor.h index 7aef573a566..26ee66681e9 100644 --- a/src/Common/Visitor.h +++ b/src/Common/Visitor.h @@ -66,7 +66,8 @@ class Visitor<> public: using List = TypeList<>; - virtual ~Visitor() = default; +protected: + ~Visitor() = default; }; template @@ -76,6 +77,9 @@ public: using List = TypeList; virtual void visit(Type &) = 0; + +protected: + ~Visitor() = default; }; template @@ -86,6 +90,9 @@ public: using Visitor::visit; virtual void visit(Type &) = 0; + +protected: + ~Visitor() = default; }; @@ -95,6 +102,8 @@ class VisitorImplHelper; template class VisitorImplHelper : public VisitorBase { +protected: + ~VisitorImplHelper() = default; }; template @@ -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 @@ -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 @@ -140,6 +153,8 @@ class VisitorImpl : public >::Type >::Type { +protected: + ~VisitorImpl() = default; }; template @@ -147,6 +162,8 @@ class Visitable : public Base { public: void accept(Visitor & visitor) override { visitor.visit(*static_cast(this)); } + + //virtual ~Visitable() = default; }; } diff --git a/src/Functions/GatherUtils/ArraySinkVisitor.h b/src/Functions/GatherUtils/ArraySinkVisitor.h index 1109b40f5da..addb231539a 100644 --- a/src/Functions/GatherUtils/ArraySinkVisitor.h +++ b/src/Functions/GatherUtils/ArraySinkVisitor.h @@ -19,10 +19,10 @@ using BasicArraySinks = typename AppendToTypeList::Type; using TypeListArraySinks = typename TypeListConcat::Type; -class ArraySinkVisitor : public ApplyTypeListForClass::Type {}; +using ArraySinkVisitor = typename ApplyTypeListForClass::Type; template -class ArraySinkVisitorImpl : public VisitorImpl {}; +using ArraySinkVisitorImpl = VisitorImpl; #pragma GCC visibility pop } diff --git a/src/Functions/GatherUtils/ArraySourceVisitor.h b/src/Functions/GatherUtils/ArraySourceVisitor.h index 98f7338ee12..59c8ea839a5 100644 --- a/src/Functions/GatherUtils/ArraySourceVisitor.h +++ b/src/Functions/GatherUtils/ArraySourceVisitor.h @@ -24,10 +24,10 @@ using BasicAndNullableArraySources = typename TypeListConcat::Type; using TypeListArraySources = typename TypeListConcat::Type; -class ArraySourceVisitor : public ApplyTypeListForClass::Type {}; +using ArraySourceVisitor = typename ApplyTypeListForClass::Type; template -class ArraySourceVisitorImpl : public VisitorImpl {}; +using ArraySourceVisitorImpl = VisitorImpl; #pragma GCC visibility pop } diff --git a/src/Functions/GatherUtils/Selectors.h b/src/Functions/GatherUtils/Selectors.h index 4b32735b6a1..9c96b36460d 100644 --- a/src/Functions/GatherUtils/Selectors.h +++ b/src/Functions/GatherUtils/Selectors.h @@ -33,7 +33,7 @@ void callSelectMemberFunctionWithTupleArgument(Tuple & tuple, Args && ... args) } template -struct ArraySourceSelectorVisitor : public ArraySourceVisitorImpl> +struct ArraySourceSelectorVisitor final : public ArraySourceVisitorImpl> { explicit ArraySourceSelectorVisitor(Args && ... args) : packed_args(args ...) {} @@ -61,7 +61,7 @@ struct ArraySourceSelector template -struct ArraySinkSelectorVisitor : public ArraySinkVisitorImpl> +struct ArraySinkSelectorVisitor final : public ArraySinkVisitorImpl> { explicit ArraySinkSelectorVisitor(Args && ... args) : packed_args(args ...) {} @@ -89,7 +89,7 @@ struct ArraySinkSelector template -struct ValueSourceSelectorVisitor : public ValueSourceVisitorImpl> +struct ValueSourceSelectorVisitor final : public ValueSourceVisitorImpl> { explicit ValueSourceSelectorVisitor(Args && ... args) : packed_args(args ...) {} diff --git a/src/Functions/GatherUtils/ValueSourceVisitor.h b/src/Functions/GatherUtils/ValueSourceVisitor.h index 63f94ea29e3..74be08cb4dd 100644 --- a/src/Functions/GatherUtils/ValueSourceVisitor.h +++ b/src/Functions/GatherUtils/ValueSourceVisitor.h @@ -24,10 +24,10 @@ using BasicAndNullableValueSources = typename TypeListConcat::Type; using TypeListValueSources = typename TypeListConcat::Type; -class ValueSourceVisitor : public ApplyTypeListForClass::Type {}; +using ValueSourceVisitor = typename ApplyTypeListForClass::Type; template -class ValueSourceVisitorImpl : public VisitorImpl {}; +using ValueSourceVisitorImpl = VisitorImpl; #pragma GCC visibility pop }