Size: a a a

2020 June 07

YB

Yarique Belgorodsky in pro.cxx
и сравнивать с поведением std::aligned_storage в тестах
источник

YB

Yarique Belgorodsky in pro.cxx
так навскидку
источник

AY

Alexey Yunushkin in pro.cxx
Yarique Belgorodsky
я знаю, что сейчас мало кто велосипедит )) и используют https://developers.google.com/protocol-buffers/
источник

c

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

DF

Dollar Føølish in pro.cxx
Хорошая ссылка
источник

DF

Dollar Føølish in pro.cxx
Правда ответов особо нету
источник

DF

Dollar Føølish in pro.cxx
Я бы сделал через eventfd
источник

DF

Dollar Føølish in pro.cxx
А, блять , дескриптор пассинг тогда придется
источник

v

vehlwn 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?
Потому что параметр по умолчанию шаблона не является частью типа. Это написано на цппрефе.
источник

v

vehlwn 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?
Я подставляю в твой фиктивный параметр любой мусор и все ломается.
источник

v

vehlwn in pro.cxx
Никогда не пиши свинью в параметре шаблона по умолчанию. Вот non type параметр это другое.
источник

v

vehlwn 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?
источник

v

vehlwn 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?
Я сделал.
#include <type_traits>
template <class T>
concept Int = std::is_same_v<T, int>;
struct A {
   template<Int T>
   int f(T);
};
template<Int T>
int A::f(T) {
   return 42;
}
int main() {
   return A{}.f(0);
}
источник

DF

Dollar Føølish in pro.cxx
А где у тебя тут свинья/перегрузка?
источник

DF

Dollar Føølish in pro.cxx
Он же хотел два дефинишна
источник

v

vehlwn in pro.cxx
Dollar Føølish
А где у тебя тут свинья/перегрузка?
Пусть сделает их перегружаемыми. Тогда и поговорим. Перегрузки по возврату и дефолтным параметрам шаблона не существует.
источник

v

vehlwn in pro.cxx
Тег диспатч существует и концепты.
источник

A

Alex in pro.cxx
vehlwn
Я сделал.
#include <type_traits>
template <class T>
concept Int = std::is_same_v<T, int>;
struct A {
   template<Int T>
   int f(T);
};
template<Int T>
int A::f(T) {
   return 42;
}
int main() {
   return A{}.f(0);
}
С концептами вообще нет такой проблемы, я могу полностью избежать извращений со SFINAE, но я их ещё не могу полноценно юзать.
источник

A

Alex in pro.cxx
vehlwn
Пусть сделает их перегружаемыми. Тогда и поговорим. Перегрузки по возврату и дефолтным параметрам шаблона не существует.
поэтому я написал, что это "перегрузка" в кавычках. Чтобы сделать полноценную перегрузку, мне нужно указать список шаблонных параметров, а он может в будущем меняться, и я не хочу везде его править, поэтому ищу вот такое решение через SFINAE.
источник

A

Alex in pro.cxx
Спасибо!
источник