Size: a a a

2020 June 06

ПК

Побитый Кирпич... in pro.cxx
vehlwn
А если в моем холодильнике нет вифи? Мне выбирать урезанную стандартную либу?
Достаточно просто не юзать std::net
источник

O

Ofee in pro.cxx
vehlwn
А если в моем холодильнике нет вифи? Мне выбирать урезанную стандартную либу?
Если честно, не очень понял проблему. Просто available_interfaces() не будет возвращать Wi-FI интерфейсы. Можно позволить implementation-defined расширение перечисления, если кажется, что стандарт определяет недостаточное число типов интерфейсов.

Куда интереснее возвращаемый тип — серьёзно, std::vector, автор правда верит в это?
источник

A

Alex in pro.cxx
Написал в своём классе два "перегруженных" метода (через SFINAE, не настоящая перегрузка):

template <class Operation, typename = std::enable_if_t<Operation::op == Operation::Insert::op>>
 [[nodiscard]] bool registerOp(const Operation& op);

 template <class Operation, typename = std::enable_if_t<Operation::op == Operation::Find::op>>
 [[nodiscard]] bool registerOp(const Operation& op);

И что получается, я не могу их определить out of class, только inline?
источник

DS

Dmitry Sokolov in pro.cxx
Alex
Написал в своём классе два "перегруженных" метода (через SFINAE, не настоящая перегрузка):

template <class Operation, typename = std::enable_if_t<Operation::op == Operation::Insert::op>>
 [[nodiscard]] bool registerOp(const Operation& op);

 template <class Operation, typename = std::enable_if_t<Operation::op == Operation::Find::op>>
 [[nodiscard]] bool registerOp(const Operation& op);

И что получается, я не могу их определить out of class, только inline?
Можно сделать return type enable_if_t<..., bool>, это ж не конструктор.
источник

ES

Evgeny Sedykh in pro.cxx
Ruben
Задача у меня такая: есть приложение сенсора, которое генерит аудио и видео поток. Поток склдывается в кольцевой буфер в shared_memory. Различные приложения (вот прям разные экзешники) могут запускаться, подключаться через мою либу к этому буферу, и брать оттуда медиа поток. То есть у меня не треды, у меня процессы. Да еще, мьютекс должен быть именованный, чтобы можно было получить его по какому-то ID из процессов, не связанных друг с другом (не форкнутых)
Может быть named semaphore?
источник

R

Ruben in pro.cxx
Evgeny Sedykh
Может быть named semaphore?
возможно, там можно сделать rwlock? то есть блокировка только чтения/записи, можно читать одновременно
источник

R

Ruben in pro.cxx
знаю что есть режим мьютекса для семафоров, но это вроде как просто блокировка
источник

R

Ruben in pro.cxx
а мне желательно чтобы потребители друг друга не лочили
источник

DS

Dmitry Sokolov in pro.cxx
Alex
Написал в своём классе два "перегруженных" метода (через SFINAE, не настоящая перегрузка):

template <class Operation, typename = std::enable_if_t<Operation::op == Operation::Insert::op>>
 [[nodiscard]] bool registerOp(const Operation& op);

 template <class Operation, typename = std::enable_if_t<Operation::op == Operation::Find::op>>
 [[nodiscard]] bool registerOp(const Operation& op);

И что получается, я не могу их определить out of class, только inline?
А если только одно объявление <class Operation, class Enable>, а out of class уже распилить через частичные enable if?
источник

O

Ofee in pro.cxx
Alex
Написал в своём классе два "перегруженных" метода (через SFINAE, не настоящая перегрузка):

template <class Operation, typename = std::enable_if_t<Operation::op == Operation::Insert::op>>
 [[nodiscard]] bool registerOp(const Operation& op);

 template <class Operation, typename = std::enable_if_t<Operation::op == Operation::Find::op>>
 [[nodiscard]] bool registerOp(const Operation& op);

И что получается, я не могу их определить out of class, только inline?
Мне, кажется, не хватает контекста, чтобы понять проблему, потому что я не очень понимаю, при чём здесь "out of class", если оно не компилируется даже если тело функций написать в теле класса
источник

ES

Evgeny Sedykh in pro.cxx
Ruben
возможно, там можно сделать rwlock? то есть блокировка только чтения/записи, можно читать одновременно
У меня нет практического опыта, так что не знаю точно, надо разбираться
источник

R

Ruben in pro.cxx
вот и я догадываюсь что возможно это то что нужно, но никогда раньше не юзал
источник

AT

Andrew Titov in pro.cxx
Ruben
возможно, там можно сделать rwlock? то есть блокировка только чтения/записи, можно читать одновременно
Судя по Википедии,
1) RW-lock можно реализовать самостоятельно (но я не уверен, что он будет работать в разных процессах);
2) В POSIX есть свой RW-lock, который, наверное, можно поместить в shared memory.
источник

R

Ruben in pro.cxx
Andrew Titov
Судя по Википедии,
1) RW-lock можно реализовать самостоятельно (но я не уверен, что он будет работать в разных процессах);
2) В POSIX есть свой RW-lock, который, наверное, можно поместить в shared memory.
а что за статья в вики?
источник

AT

Andrew Titov in pro.cxx
Ruben
а что за статья в вики?
источник

R

Ruben in pro.cxx
спасибо
источник

A

Alex in pro.cxx
Dmitry Sokolov
А если только одно объявление <class Operation, class Enable>, а out of class уже распилить через частичные enable if?
а вот это классная идея, если компилятор поймёт, никогда не пробовал. Спасибо!
источник

AY

Alexey Yunushkin in pro.cxx
Посмотри в сторону futex может как и поможет.
источник

AY

Alexey Yunushkin in pro.cxx
Конечно не rw блокировка но наверное быстрее мьютекса.
источник

A

Alex in pro.cxx
Ofee
Мне, кажется, не хватает контекста, чтобы понять проблему, потому что я не очень понимаю, при чём здесь "out of class", если оно не компилируется даже если тело функций написать в теле класса
Чёрт, и правда не компилится, спасибо, что сразу указали. А я был настолько уверен, что ещё даже не пытался это компилить.
А через возвращаемый тип работает.
источник