Size: a a a

2020 June 07

p

polunin.ai in rust_offtopic
Т-34 85
вот аналог такого на Rust.  Текущий пример не компилится при передаче в constexpr функцию значения меньше 0. При меньше 10 возвращает это же значение, от - его квадрат

#include <iostream>

template <int N>
constexpr int CTFunction()
{
   static_assert (N > 0, "the parameter is nagative, blyat!");

   if constexpr (N >= 10)
   {
       return N * N;
   }
   else
   {
       return N;
   }
}

int main()
{
   constexpr auto result = CTFunction<-4>();
   std::cout << result << std::endl;
   return 0;
}
А если я сделаю
int foo(n: int) {
 return CTFuncion<n>();
}
?
источник

G

Gymmasssorla in rust_offtopic
Т-34

#define let __auto_type
#define $(return_type, params_and_body) \
   ({ return_type fn params_and_body; fn; })

int main(void) {
   let closure = $(int, (int x, int y) {
       return x + y;
   });
}
источник

AZ

Alex Zhukovsky in rust_offtopic
Т-34 85
вот аналог такого на Rust.  Текущий пример не компилится при передаче в constexpr функцию значения меньше 0. При меньше 10 возвращает это же значение, от - его квадрат

#include <iostream>

template <int N>
constexpr int CTFunction()
{
   static_assert (N > 0, "the parameter is nagative, blyat!");

   if constexpr (N >= 10)
   {
       return N * N;
   }
   else
   {
       return N;
   }
}

int main()
{
   constexpr auto result = CTFunction<-4>();
   std::cout << result << std::endl;
   return 0;
}
А вообще темплейты ближе к макросам
источник

G

Gymmasssorla in rust_offtopic
У меня ещё была идея всё писать в Си макросами) т.е.

proc(
   array a 100 end
   init array[1] 123 end
   ...
)
источник

G

Gymmasssorla in rust_offtopic
Один чувак сделал Lisp на макросах Си)
источник

G

Gymmasssorla in rust_offtopic
источник

p

polunin.ai in rust_offtopic
У кого-то есть ссылка на пейпер по ASAP? Моя осталась дома, а хочу почитать🤔
источник

Т8

Т-34 85 in rust_offtopic
polunin.ai
А если я сделаю
int foo(n: int) {
 return CTFuncion<n>();
}
?
скорее всего, не скомпилится - n же в рантайме только станет известен
источник

G

Gymmasssorla in rust_offtopic
Т-34 85
скорее всего, не скомпилится - n же в рантайме только станет известен
А в Idris скомпилируется ))))))))))))))))))))))))
источник

p

polunin.ai in rust_offtopic
Т-34 85
скорее всего, не скомпилится - n же в рантайме только станет известен
Ну вот хуйня тогда твои констэкспры
источник

G

Gymmasssorla in rust_offtopic
Азазаза
источник

p

polunin.ai in rust_offtopic
Покрывает узкий круг задач
источник

p

polunin.ai in rust_offtopic
Константы редко когда известны
источник

p

polunin.ai in rust_offtopic
А когда известны то и чекать не надо их
источник

G

Gymmasssorla in rust_offtopic
Да ладно
источник

G

Gymmasssorla in rust_offtopic
Выносить на этап компиляции обычно хорошо
источник

Т8

Т-34 85 in rust_offtopic
Gymmasssorla
Т-34

#define let __auto_type
#define $(return_type, params_and_body) \
   ({ return_type fn params_and_body; fn; })

int main(void) {
   let closure = $(int, (int x, int y) {
       return x + y;
   });
}
боже, как же это ужасно. А так да, есть boost на макросах
источник

p

polunin.ai in rust_offtopic
Gymmasssorla
Выносить на этап компиляции обычно хорошо
Да, только вспомни когда у тебя были константы такие
источник

G

Gymmasssorla in rust_offtopic
Т-34 85
боже, как же это ужасно. А так да, есть boost на макросах
Ну я в этот Boost/PP сейчас макрозамыкания коммичу
источник

G

Gymmasssorla in rust_offtopic
Только не те, что ты подумал
источник