Код: Выделить всё
#include
struct MyBigDonut
{
int member;
void serialise_deserialise(const auto& serialiser)
{
//serialiser.read_or_write_type(member);
}
};
struct MySerialiserDeserialiser
{
template
static constexpr bool hasSerialiseFunction() {
// SEE IF MyDonut HAS serialise_deserialise FUNCTION THAT TAKES A REFERENCE TO THIS TYPE
constexpr bool bHasSerialiseFunction = requires {
std::declval().serialise_deserialise(std::declval());
};
return bHasSerialiseFunction;
}
template
void read_or_write_type(T& type) { }
};
int main() {
MySerialiserDeserialiser serialiser;
static_assert(MySerialiserDeserialiser::hasSerialiseFunction());
}
< /code>
Поэтому я пытался сделать: < /p>
constexpr bool bHasSerialiseFunction = requires {
const auto& this_serialiser = std::declval();
std::declval().serialise_deserialise(this_serialiser);
};
Пример Godbolt.
Подробнее здесь: https://stackoverflow.com/questions/795 ... n-argument