Пример:
template<typename T>
concept SequenceContainer = Container<T> && requires (T a)
{
{ a.front() } -> typename T::reference;
/* requirements */
};
Здесь мы требуем, чтобы тип возвращаемого значения был неконстантной ссылкой. Но если a
имеет тип const T
- очевидно, правильно добавить дополнительное требование, указав, что "если a
имеет тип const T
, то вызов член-функции front()
должен вернуть const_reference
":
template<typename T>
concept SequenceContainer = Container<T> && requires (T a, const T b)
{
{ a.front() } -> typename T::reference;
{ b.front() } -> typename T::const_reference;
/* requirements */
};
Вопрос: существует ли способ не указывать второй параметр - const T b
, а каким-то образом сообщить, что в данном требовании тип a
следует рассматривать как const T
? Я не нашел ничего подходящего ни на en.cppreference.com, ни на eel.is.
Т.е., в идеале хотелось бы что-то вроде:
{ a.front() const } -> typename T::const_reference;
Если такого способа нет и нужно делать так, как описано выше (второй параметр с типом const) - при возможности поделитесь ссылкой на соответствующий пункт в стандарте (я про черновик, разумеется).
В голову приходит несколько вариантов:
std::as_const(a).front()
std::declval<const T &>().front()
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть сервер TCP QTcpServer tcp и сокет подключения QTcpSocket socketПодключаю я их вот так:
Подскажите пожалуйста, как вызывать после окна авторизации окно с основным функционалом(дочернее окно), при этом нужно использовать mvvm паттерн