読者です 読者をやめる 読者になる 読者になる

とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

CEL - ConstExpr Library

C++

CEL - ConstExpr Library を書いてます

CEL とは constexpr ベースのライブラリです。
sscrisk/CEL---ConstExpr-Library at master - GitHub

動機

C++0x で追加された constexpr。こいつはなかなか楽しい奴なんですが,何か複雑なことをしようとすると,その constexpr 特有の制限のため思い通りにコードを書けなかったり,同じようなコードを何度も書く羽目になったりします。
そこで,めんどくさいことを全て引き受け,かつユーザーが楽に自分のコードへ constexpr を取り入れることができるようにライブラリを書くことにしました。

インターフェース

とは言うものの,constexpr のユースケースはまだあまり知られていませんし,何を優先的にライブラリで提供するべきかはっきりしません。
そこで,C++er なら当然誰でも知っている STL のインターフェースをとりあえずお借りして,STL を constexpr の世界で使えるようにしようと思っています。

進捗

現在, に含まれるアルゴリズムのうち,更新を伴わない列演算(Non-modifying sequence operations)のアルゴリズムの大半が実装されています。これらは algorithm.hpp に含まれています。
今,実装できているのは

  • all_of
  • any_of
  • none_of
  • find
  • find_if
  • find_if_not
  • find_first_of
  • adjacent_find
  • count
  • count_if
  • mismatch
  • equal

です。
また,まだゴミレベルですがレンジ版も実装中です。

テスト

テスト書いてます。拡張子を.cppにしたものがテストファイルで,コンパイル・実行でテストできます。

サンプル

テストのソースを見てください。そのうちちゃんとしたサンプル用意するかもしれません。

要望・その他

受け付けています。mailでもTwitterでもgithubでも好きにしてください。ただし,私も好きにするので応答しなかったり,応答遅かったりする可能性もあります。