Skip to content

Commit 1ca8ae1

Browse files
authored
Merge pull request #32 from ReflectCxx/release-2.0.CleanSfinae
replaced SFINAE with if constexpr(), cleaner approach
2 parents c65f05d + 1556cc3 commit 1ca8ae1

File tree

2 files changed

+13
-31
lines changed

2 files changed

+13
-31
lines changed

ReflectionTemplateLib/builder/inc/Builder.h

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,7 @@ namespace rtl {
118118
const std::string& pFunction);
119119

120120
template<class _recordType, class ..._signature>
121-
constexpr const access::Function
122-
build(enable_if_same<_recordType&, typename detail::TypeId<_signature...>::HEAD > *_= nullptr) const;
123-
124-
template<class _recordType, class ..._signature>
125-
constexpr const access::Function
126-
build(enable_if_same<const _recordType&, typename detail::TypeId<_signature...>::HEAD > *_= nullptr) const;
127-
128-
template<class _recordType, class ..._signature>
129-
constexpr const access::Function
130-
build(enable_if_not_same<_recordType&, typename detail::TypeId<_signature...>::HEAD > *_= nullptr,
131-
enable_if_not_same<const _recordType&, typename detail::TypeId<_signature...>::HEAD > *__= nullptr) const;
121+
constexpr const access::Function build() const;
132122

133123
template<class _recordType, class _returnType, class ..._signature>
134124
constexpr const access::Function build(_returnType(_recordType::* pFunctor)(_signature...)) const;

ReflectionTemplateLib/builder/inc/Builder.hpp

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -113,27 +113,19 @@ namespace rtl {
113113

114114

115115
template<class _recordType, class ..._signature>
116-
inline constexpr const access::Function
117-
Builder<TypeQ::Mute>::build(enable_if_same<_recordType&, typename detail::TypeId<_signature...>::HEAD > *_) const
116+
inline constexpr const access::Function Builder<TypeQ::Mute>::build() const
118117
{
119-
return buildCopyConstructor<_recordType, _signature...>();
120-
}
121-
122-
123-
template<class _recordType, class ..._signature>
124-
inline constexpr const access::Function
125-
Builder<TypeQ::Mute>::build(enable_if_same<const _recordType&, typename detail::TypeId<_signature...>::HEAD > *_) const
126-
{
127-
return buildConstCopyConstructor<_recordType, _signature...>();
128-
}
129-
130-
131-
template<class _recordType, class ..._signature>
132-
inline constexpr const access::Function
133-
Builder<TypeQ::Mute>::build(enable_if_not_same<_recordType&, typename detail::TypeId<_signature...>::HEAD > *_,
134-
enable_if_not_same<const _recordType&, typename detail::TypeId<_signature...>::HEAD > *__) const
135-
{
136-
return buildConstructor<_recordType, _signature...>();
118+
if constexpr (std::is_same_v<_recordType&, typename detail::TypeId<_signature...>::HEAD>)
119+
{
120+
return buildCopyConstructor<_recordType, _signature...>();
121+
}
122+
else if constexpr (std::is_same_v<const _recordType&, typename detail::TypeId<_signature...>::HEAD>)
123+
{
124+
return buildConstCopyConstructor<_recordType, _signature...>();
125+
}
126+
else {
127+
return buildConstructor<_recordType, _signature...>();
128+
}
137129
}
138130

139131

0 commit comments

Comments
 (0)