@@ -51,12 +51,10 @@ class OPENVINO_API Optional : public Pattern {
51
51
// / \param type_infos Optional operation types to exclude them from the matching
52
52
// / in case the following op types do not exist in a pattern to match.
53
53
// / \param patterns The pattern to match a graph.
54
- Optional (const std::vector<DiscreteTypeInfo>& type_infos, const OutputVector& inputs = {})
55
- : Pattern(inputs),
56
- optional_types (type_infos){};
57
-
58
- template <typename TPredicate>
59
- Optional (const std::vector<DiscreteTypeInfo>& type_infos, const OutputVector& inputs, const TPredicate& pred)
54
+ template <typename TPredicate = nullptr_t >
55
+ Optional (const std::vector<DiscreteTypeInfo>& type_infos,
56
+ const OutputVector& inputs = {},
57
+ const TPredicate& pred = nullptr )
60
58
: Pattern(inputs, Predicate(pred)),
61
59
optional_types (type_infos){};
62
60
@@ -84,8 +82,10 @@ void collect_type_info(std::vector<DiscreteTypeInfo>& type_info_vec) {
84
82
collect_type_info<NodeTypeArgs...>(type_info_vec);
85
83
}
86
84
87
- template <class ... NodeTypes, typename TPredicate>
88
- std::shared_ptr<Node> optional (const OutputVector& inputs, const TPredicate& pred, const Attributes& attrs = {}) {
85
+ template <class ... NodeTypes, typename TPredicate = nullptr_t >
86
+ std::shared_ptr<Node> optional (const OutputVector& inputs,
87
+ const TPredicate& pred = nullptr ,
88
+ const Attributes& attrs = {}) {
89
89
std::vector<DiscreteTypeInfo> optional_type_info_vec;
90
90
collect_type_info<NodeTypes...>(optional_type_info_vec);
91
91
return std::make_shared<op::Optional>(
@@ -94,8 +94,10 @@ std::shared_ptr<Node> optional(const OutputVector& inputs, const TPredicate& pre
94
94
attrs.empty () ? op::Predicate (pred) : attrs_match (attrs) && op::Predicate (pred));
95
95
}
96
96
97
- template <class ... NodeTypes, typename TPredicate>
98
- std::shared_ptr<Node> optional (const Output<Node>& input, const TPredicate& pred, const Attributes& attrs = {}) {
97
+ template <class ... NodeTypes, typename TPredicate = nullptr_t >
98
+ std::shared_ptr<Node> optional (const Output<Node>& input,
99
+ const TPredicate& pred = nullptr ,
100
+ const Attributes& attrs = {}) {
99
101
return optional<NodeTypes...>(OutputVector{input}, op::Predicate (pred), attrs);
100
102
}
101
103
@@ -107,21 +109,22 @@ std::shared_ptr<Node> optional(const TPredicate& pred, const Attributes& attrs =
107
109
}
108
110
109
111
template <class ... NodeTypes>
110
- std::shared_ptr<Node> optional (const std::initializer_list<Output<Node>> & inputs, const Attributes& attrs = {} ) {
111
- return optional<NodeTypes...>(OutputVector ( inputs) , attrs.empty () ? op::Predicate () : attrs_match (attrs));
112
+ std::shared_ptr<Node> optional (const OutputVector & inputs, const Attributes& attrs) {
113
+ return optional<NodeTypes...>(inputs, attrs.empty () ? op::Predicate () : attrs_match (attrs));
112
114
}
115
+
113
116
template <class ... NodeTypes>
114
- std::shared_ptr<Node> optional (const OutputVector & inputs, const Attributes& attrs = {}) {
115
- return optional<NodeTypes...>(inputs, attrs. empty () ? op::Predicate () : attrs_match (attrs) );
117
+ std::shared_ptr<Node> optional (const std::initializer_list<Output<Node>> & inputs, const Attributes& attrs = {}) {
118
+ return optional<NodeTypes...>(OutputVector ( inputs) , attrs);
116
119
}
117
120
118
121
template <class ... NodeTypes>
119
- std::shared_ptr<Node> optional (const Output<Node>& input, const Attributes& attrs = {} ) {
122
+ std::shared_ptr<Node> optional (const Output<Node>& input, const Attributes& attrs) {
120
123
return optional<NodeTypes...>(OutputVector{input}, attrs);
121
124
}
122
125
123
126
template <class ... NodeTypes>
124
127
std::shared_ptr<Node> optional (const Attributes& attrs = {}) {
125
- return optional<NodeTypes...>(OutputVector{}, attrs. empty () ? op::Predicate () : attrs_match (attrs) );
128
+ return optional<NodeTypes...>(OutputVector{}, attrs);
126
129
}
127
130
} // namespace ov::pass::pattern
0 commit comments