Size: a a a

cxx.Дискуссионная

2020 February 27

RM

Roy Mustang in cxx.Дискуссионная
если без switch, то получится что-то типа
if(need_if) 
{
     if(is_alive) {
       // ... code
     }
} else {
      // ... code
}
источник

RM

Roy Mustang in cxx.Дискуссионная
Здесь именно гемор в том, что один и тот же код приходится копировать и вставлять
источник

RM

Roy Mustang in cxx.Дискуссионная
в двух местах
источник

RM

Roy Mustang in cxx.Дискуссионная
Либо же goto надо юзать
источник

/dev/urandon ¯\_(ツ)_/¯ in cxx.Дискуссионная
Gymmasssorla
В Rust это так делается:

match need_if {
   true if is_alive => false,
   false => ...,
   _ => ...,
}
В rust Хиндли Милнера ещё не завезли?
источник

TS

Till Schneider in cxx.Дискуссионная
Roy Mustang
В С++ это через switch хорошо мутится
источник

G

Gymmasssorla in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
В rust Хиндли Милнера ещё не завезли?
Вообще не ебу кто это
источник

Т8

Т-34 85 in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
В rust Хиндли Милнера ещё не завезли?
не нужно
источник

RM

Roy Mustang in cxx.Дискуссионная
Не, Тилль, это другое
источник

RM

Roy Mustang in cxx.Дискуссионная
То подставление на уровне компиляции, а тут код будет на уровне компиляции воткнут, просто без лямбд или свитчей порнуха получается
источник

/dev/urandon ¯\_(ツ)_/¯ in cxx.Дискуссионная
Gymmasssorla
Вообще не ебу кто это
Система вывода типов как в хаскеле, чтоб параметры шаблонов сами выводились из контекста
источник

RM

Roy Mustang in cxx.Дискуссионная
У меня на практике был случай, когда такой принцип нужен был, в итоге пришлось по другому логику строить потому что кроме switch ничего дельного не было, лямбда или goto не в счет
источник

G

Gymmasssorla in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Система вывода типов как в хаскеле, чтоб параметры шаблонов сами выводились из контекста
Я не шарю, но параметры-типы успешно выводятся компилятором
источник

G

Gymmasssorla in cxx.Дискуссионная
Roy Mustang
У меня на практике был случай, когда такой принцип нужен был, в итоге пришлось по другому логику строить потому что кроме switch ничего дельного не было, лямбда или goto не в счет
А DSL слабо хуякнуть?
источник

RM

Roy Mustang in cxx.Дискуссионная
Gymmasssorla
А DSL слабо хуякнуть?
Я тупой слишком для такого
источник

RM

Roy Mustang in cxx.Дискуссионная
@h4cktill подскажи пожалуйста, если я принимаю std::functuin как &&, должен ли я выполнить std::move или там std::forward ?
источник

RM

Roy Mustang in cxx.Дискуссионная
Обычно std::forward для && используется
источник

RM

Roy Mustang in cxx.Дискуссионная
источник

RM

Roy Mustang in cxx.Дискуссионная
Эта функция имеет 2 вызова
    template<typename BaseType>
   bool RegMsgCallback(const NET_SERVER_TYPE type, const uint16_t protoid, BaseType* pBase, void (BaseType::*handleRecv)(const CNetMsg&))
   {
       NET_MSG_FUNCTOR functor = std::bind(handleRecv, pBase);
       return RegMsgCallback(type, protoid, std::move(functor));
   }

   bool RegMsgCallback(const NET_SERVER_TYPE type, const uint16_t protoid, NET_MSG_FUNCTOR&& cb);
источник

RM

Roy Mustang in cxx.Дискуссионная
Это в .hpp
источник