18 using wrapper_type = T;
20 std::is_base_of<asn1::asn1c_wrapper_common<typename T::asn1c_type>, T>::value,
21 "Only asn1c_wrapper derivates are supported");
23 byte_buffer_impl(wrapper_type&& t) :
24 m_wrapper(
new wrapper_type(std::move(t)))
28 byte_buffer_impl(std::shared_ptr<const wrapper_type> other) :
33 void convert(ByteBuffer& buffer)
const override
35 buffer = m_wrapper->encode();
38 std::unique_ptr<byte_buffer> duplicate()
const override
40 return std::unique_ptr<byte_buffer> {
41 new byte_buffer_impl { m_wrapper }
45 std::size_t size()
const override
47 return m_wrapper->size();
50 std::shared_ptr<const wrapper_type> wrapper()
const
56 std::shared_ptr<const wrapper_type> m_wrapper;