Код: Выделить всё
template
struct serialiser_deserialiser
{
template
void read_or_write(U& obj_to_write)
{
constexpr bool bDoesTypeHaveSerialiseDeserialiseFunction = std::is_invocable_v;
//static_assert (bDoesTypeHaveSerialiseDeserialiseFunction);
if constexpr (bDoesTypeHaveSerialiseDeserialiseFunction)
/* SOMETHING*/;
else ;
}
};
struct MySerializableType
{
template
void serialise_deserialise(serialiser_t& serialiser_deserialiser)
{ // MY TYPE HAS THIS FUNCTION SO I WAS HOPING IT WOULD BE RECOGNIZED
}
};
int main() {
serialiser_deserialiser serialiser_obj;
MySerializableType serializable_type;
serialiser_obj.read_or_write(serializable_type);
}
< /code>
Сообщение об ошибке: < /p>
'myserializabletype :: serialise_deserialise': неправильный аргумент в отношении 'decltype' < /p >
< /blockquote>
Итак, я изменил эту строку, которая проверяет, существует ли функция на: < /p>
std::is_invocable_v;
Код: Выделить всё
std::is_invocable_v;
Вот ссылка на Godbolt.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -invocable
Мобильная версия