2018-09-01から1ヶ月間の記事一覧
bit列操作のような低級なことをやっていると、bit列に対してマッチングを行いたいことがあります。 たとえば、以下のような例です。 t=0b11011010はpattern=0b11xx1010にマッチするか?→マッチする。 このようなことを行うためには、pattern中に出現するxを0…
g++-8で追加された-Wclass-memaccessの警告を有効にしている場合、以下のコードはコンパイル時に警告が出ます。-Wclass-memaccessの警告は、-Wallに含まれるため、単にコンパイラをg++-8に変更しただけでこの警告に出くわすこともあると思います。 #include <utility></utility>…
先週はパック展開を使うとconstexpr関数が高速化するみたいなことを書きましたが、具体的な使い方をあまり書けなかったので、具体例を書いておきます。 map template<class T, std::size_t N, std::size_t... Indeces> constexpr auto map_f_impl( const T (&arr)[N], std::index_sequence<Indeces...> ) { return std::ar</indeces...></class>…
constexpr関数ではほとんど何でもできてしまうので、可読性を損なうことなく多くの仕事をコンパイル時にこなすことができます。しかし多くのC++コンパイラでは、インタプリタ上で実行する実装となっており、非常に低速です。constexprで多くのことをやりたい…
WindowsUpdateしたからなのか使っているノートパソコンが二台いっぺんに起動しなくなってびっくりしました。 他の同じ症状で困っているのが助かればと思って症状と直した手順を書いておきます。 Lenovo Miix 720 症状 電源ボタンを押すといつも通りLenovoの…
もうみんなconstexprに飽きてしまったのか、ほとんど文献がないのでメモ程度に。 私が考えたわけではなく、 constexpr で テンプレートメタプログラミング - TXT.TXT に書いてあったことを試してみたというだけです。 紹介する実装は、コンセプトの確認にと…