diff --git a/src/app/data-model/Decode.h b/src/app/data-model/Decode.h index 3131682f1f10cc..827a81425c06fc 100644 --- a/src/app/data-model/Decode.h +++ b/src/app/data-model/Decode.h @@ -86,10 +86,11 @@ inline CHIP_ERROR Decode(TLV::TLVReader & reader, Span & x) * CHIP_ERROR ::Decode(TLVReader &reader); * */ -template < - typename X, - typename std::enable_if_t< - std::is_class::value && std::is_same::value, X> * = nullptr> +template ::value && + std::is_same().Decode(std::declval())), CHIP_ERROR>::value, + X> * = nullptr> CHIP_ERROR Decode(TLV::TLVReader & reader, X & x) { return x.Decode(reader); diff --git a/src/app/data-model/Encode.h b/src/app/data-model/Encode.h index d4556b0d43880e..677934ae2e98a2 100644 --- a/src/app/data-model/Encode.h +++ b/src/app/data-model/Encode.h @@ -70,11 +70,12 @@ inline CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag, Span * * */ -template < - typename X, - typename std::enable_if_t::value && - std::is_same::value, - X> * = nullptr> +template ::value && + std::is_same().Encode(std::declval(), std::declval())), + CHIP_ERROR>::value, + X> * = nullptr> CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag, const X & x) { return x.Encode(writer, tag);