zer0-star / Nim-ACL

ACL (AtCoder Library) implementation in Nim
Creative Commons Zero v1.0 Universal
22 stars 3 forks source link

Fix DynamicModint SideEffect #69

Closed seekworser closed 2 months ago

seekworser commented 2 months ago

DynamicModint に対して std/mathsum などの{.noSideEffect.} pragma がついておりかつ += を呼ぶような関数が呼ばれると、コンパイルエラーとなる。 https://atcoder.jp/contests/abs/submissions/52161969

getBarrett が global 領域の変数のポインタにアクセスするのが問題だが、実際にはこれが書き換えられることはないので、 {.cast(noSideEffect).} で回避して問題ないと考える

chaemon commented 2 months ago

ありがとうございます!cast(noSideEffect)という使い方は知らなかったです!他にもつけたほうがいいところがありそうです。

seekworser commented 2 months ago

ありがとうございます!他にも気付いたらつけておきます