Rokiのチラ裏

学生による学習のログ

2016-12-01から1ヶ月間の記事一覧

P0145R3の訳

・ツイッターで出題した未定義問題のお詫びと調査と解説について - paiza開発日誌 上記のように少し話題になっていたので、P0145R3の訳をざっくり書く事にした。 Abstract and Introduction そもそもP0145R3とは何についてのpaperなのか。 This paper propos…

fizzbuzzタプル

C++

「fizz型、buzz型、fizzbuzz型を作り、fizzbuzz問題の規則に準じたタプル型を、コンパイル時に生成しなさい」という問題を出して見たので、その解答コードを以下に示す。 C++では単純なコンパイル時fizzbuzzとvariadic templateに対する少しの操作が出来れば…

totoの公式サイトから試合データとかをスクレイピングしてアレコレ

最近、totoという宝くじを買った。つい先ほど、「後二つ当たっていたら三等でした!」という残念メールが受信されたのだが、なんとなく悔しいので、取り敢えずtotoの公式サイトの過去のくじ結果から過去の試合結果やくじ結果などをcsv形式で吐き出させて、そ…

アドベントカレンダーだるい

C++

前書き この記事は、アドベントカレンダーだるい Advent Calendar 2016、18日の記事です。 怠さ蔓延るこの時期ですが、あまりにも怠いと怠いと声に出すのも怠いですね。出来れば、無言でトントンやるだけで怠さを伝えたいものです。無言でトントン...モール…

C++11でタプルを関数の引数へ渡す

C++

C++11の環境ではinteger sequenceが標準搭載されていないので、そういった場合への対処法としてメモ。以下のコードはclang 4.0.0の-std=c++11モードで確認している。 まず単純に再起して、パラメータパックがたまりきった所で呼び出す方法。 inline void foo…

cereal + boost json_parserによるjsonファイル入出力の一例

C++

題名は何だかやたら大々的だがそんな大した事はしていない。 あるところで、シリアル番号を生成したいという案件が来たというような話を伺った。まあ、ちょいちょいとやれば簡単に実装できるとの話だったので、「そうですね」と私は答えた。「そうですね」と…

Variadic templateへのあらゆる操作その2

C++

前回書いていないようなメタ関数を書いてみたので一応。※追記 改善を施しライブラリ化した // First template<class...> struct First; template<class Head,class... Tail> struct First<Head,Tail...>{ typedef Head type; }; template<class Head,class... Tail> struct First<pack<Head,Tail...>>{ typedef Head type; }; template<class... Pack> using First_t=…</class...></pack<head,tail...></class></head,tail...></class></class...>

clangでのnoexcept、式が定数式の場合でも0を送出する事がある

@530506 と思ったらバグ報告されていた。https://t.co/eq4rbFhuZy 淡白な回答だなあ。— roκi (@530506) 2016年12月12日 定義済みのconstexpr関数をop noexceptへ渡すと0が送出されているが、これは規格準拠の挙動ではない。 The result of the noexcept oper…

比較的有名だと思われるC++イディオムを巡る

C++

前書き この記事はC++ Advent Calender 2016、10日の記事です。 こんにちは。 12月10日はイディオムの日なので、この記事では比較的有名だと思われるC++イディオムを一通り巡ります(順不同)。しかしAdvent Calenderの流れを見るに、恐らくその多くが既知のも…

パイプライン記法での連続的な挿入操作

C++

は必要あるだろうか。 boost.assignではoperator+=を使って連続的な挿入を実現しているがパイプライン記法に入れる事は出来ない。 template<class F,class Range> auto operator|(const Range& r,const F& f) { return f(r); } template<class Iterator> struct copied_t_impl{ explicit copied_t_</class></class>…

Variadic templateへのあらゆる操作

C++

※追記このエントリーにおけるコードはその後改善が施され、それについての新たなエントリが書かれた(See also )。 variadic templateで遊ぶ - in neuroにインスパイアされて、私も少し遊ぶ事にした。折角なのでリンク先の内容とは異なるヘルパを作る。まず簡…

型がTrivially CopyableだけではなくCopyableであるかを判定するメタ関数

C++

is_trivially_copyableはtriviallyコピーでなければコピー可能だとしても許容されない。トライバルでなくてもコピー可能な型を判定するメタ関数はそういえば見たことが無かったので、作ってみた。 template<class _Tp,_Tp&(_Tp::*)(const _Tp&)> struct copy_signature{ using type=_Tp; }; templ</class>…

簡単なパズルゲーム

ゲームプログラマになりたい人に対して基本的なアルゴリズムを考えさせるために、簡単なパズルゲームを作らせるのは良いのではないかと思われる。かと言って自分の作ったサンプルもないのはアレなので、一応GUI化して実装をしておく。 github.com ご覧の通り…