Skip to content

Commit 84da284

Browse files
authored
[k2] fix reference counter functions overloads (#1612)
1 parent def57ff commit 84da284

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

runtime-light/core/reference-counter/reference-counter-functions.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,22 @@
77
#include <utility>
88

99
#include "common/php-functions.h"
10+
#include "runtime-common/core/core-types/kphp_type_traits.h"
1011
#include "runtime-common/core/runtime-core.h"
1112

1213
namespace kphp::core {
1314

1415
template<typename T>
16+
void set_reference_counter_recursive(Optional<T>& obj, ExtraRefCnt rc) noexcept;
17+
18+
template<typename T>
19+
void set_reference_counter_recursive(class_instance<T>& obj, ExtraRefCnt rc) noexcept;
20+
21+
template<typename T>
22+
void set_reference_counter_recursive(array<T>& obj, ExtraRefCnt rc) noexcept;
23+
24+
template<typename T>
25+
requires(!is_array<T>::value && !is_class_instance<T>::value && !is_optional<T>::value)
1526
void set_reference_counter_recursive(T& /*obj*/, ExtraRefCnt /*rc*/) noexcept {}
1627

1728
template<typename T>
@@ -64,6 +75,16 @@ inline void set_reference_counter_recursive<mixed>(mixed& obj, ExtraRefCnt rc) n
6475
// ================================================================================================
6576

6677
template<typename T>
78+
bool is_reference_counter_recursive(const Optional<T>& obj, ExtraRefCnt rc) noexcept;
79+
80+
template<typename T>
81+
bool is_reference_counter_recursive(const class_instance<T>& obj, ExtraRefCnt rc) noexcept;
82+
83+
template<typename T>
84+
bool is_reference_counter_recursive(const array<T>& obj, ExtraRefCnt rc) noexcept;
85+
86+
template<typename T>
87+
requires(!is_array<T>::value && !is_class_instance<T>::value && !is_optional<T>::value)
6788
bool is_reference_counter_recursive(const T& /*obj*/, ExtraRefCnt /*rc*/) noexcept {
6889
return true;
6990
}

0 commit comments

Comments
 (0)