Как я могу передать этот аргумент в неконфессиональный аргумент?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу передать этот аргумент в неконфессиональный аргумент?

Сообщение Anonymous »

Следующие компиляции, но я хочу, чтобы моя функция void serialise_deserialise (const auto & serialiser) придерживалась неконтролируемой ссылки, но это невозможно с использованием Declval, поскольку он возвращает ссылку на r-значение. < /p>
#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);
};
< /code>
Но я считаю, что < /p>

const auto & this_serialiser < /p>
< /blockquote>
Заглав>

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

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

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

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

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

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