Функция не обнаруживается при использовании std :: is_invocable [Duplicate]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Функция не обнаруживается при использовании std :: is_invocable [Duplicate]

Сообщение Anonymous »

Я пытаюсь использовать std :: is_invocable , чтобы проверить, имеет ли тип параметра шаблона функцию члена с именем serialise_deserialise () :

Код: Выделить всё

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;
это говорит о static_assert не удалось. /код> как аргумент. Хотя конкретный аргумент не должен иметь значения, потому что он шаблон, и поэтому должен иметь возможность получить какой -либо аргумент. Я попробовал с int :

Код: Выделить всё

std::is_invocable_v;
Но та же ошибка, static_assert не удалось. называется serialise_deserialise ?
Вот ссылка на Godbolt.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -invocable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»