Следующие компиляции, но я хочу, чтобы моя функция serialise_deserialise () придерживалась неконтролируемой ссылки, но она невозможно с использованием decklal , потому что она возвращает ссылку на r-значение.
Следующие компиляции, но я хочу, чтобы моя функция serialise_deserialise () придерживалась неконтролируемой ссылки, но она невозможно с использованием decklal , потому что она возвращает ссылку на r-значение.[code]#include
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()); };
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); }; [/code] Но я считаю, что оператор Const auto & this_serialiser делает его более постоянным выражением. Пример Godbolt.