Rokiのチラ裏

学生による学習のログ

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

桁毎の処理に特化したコンテナ的なもの

C++

を取り敢えず作っている。これからまだoperatorやその他機能(数値リテラルに対するアレコレなど)を付けるつもりだが一旦gitにコミットする。 使い方 このように桁毎に数値を分離してrangeにしたり、元の値に戻したり、range同士で加算が可能である。 #include<iostream></iostream>…

あ、ハッピーハロッウィンッ!

そんなわけで、2016年になってもう11ヶ月も経とうとしているわけだが世間はハッピーハロウィンである。渋谷が凄い。そんなわけで、デベロパツール上でパラパラアニメが見れるウェブサイトを公開した。 @530506 こんな感じで、無駄に動く。 pic.twitter.com/i…

多重継承でのEBO最適化

C++

EBOの有効的な用いられ方としてコピー禁止を明快に表現する方法がある。 class noCopyable{ noCopyable(const noCopyable&)=delete; noCopyable& operator=(const noCopyable&)=delete; protected: noCopyable()=default; ~noCopyable()=default; }; struct …

CRTPによる静的インターフェースクラスを用いた実装でインスタンス化せずにコンパイル時エラーを吐かせる

C++

CRTPによる静的インタフェースクラスによって派生クラスでの該当関数の実装を強要する。 template<class _Tp> struct base{ void f()const{static_cast<_Tp>(this)->f();} }; struct derived:private base<derived>{ void f()const{} }; int main() { derived().f(); } しかし、使わな</derived></_tp></class>…

Gentoo導入ログ

とてつもなく自由*1になりたかったのでGentooを導入する事とした。 パーティション作成 fdisk /dev/sda 40GBを単純に三つに切り、boot、swap、rootで構成。 フォーマット mkfs.ext4 /dev/sda1 mkfs.ext4 /dev/sda3 mkswap /dev/sda2 swapon /dev/sda2 マウン…

const lvalue reference constructorとuniversal reference in constructorの共存における問題の解決法

C++

帰ったらブログにでも書くよと言ってしまったので書く... 例題として、TypeErasureを利用した簡単なAnyを示す。こういったTypeErasureにはテンプレートコンストラクタを必要とするが該当部分でuniversal reference constructorを用いてPerfect Forwardingを…

ジェネリックなRAIIラッパーunique_resource

C++

標準化委員会による文書:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0052r2.pdf 通常RAIIを採用した場合、例外安全性とムーブコンストラクタ/代入演算子、リソース漏れなどに注意を払いながら確実に実装しなければならない。例えば、これは…

macOS SierraからDebianにVNC接続ログ

以前高校生へC++1zを教授するという機会で母校へ戻った時に、「もう本当動作重いし誰も使ってないからアゲルよこれ」との事で有り難く頂いたDell Vostro 1540。帰宅後、即Basix Linuxを入れた。自由なオペレーティングシステムとソフトウェアへ変貌したと共…

Type Erasureにおける質問

C++

とても有名な、Type Erasureによるダックタイピング。 #include<memory> struct X{ template<class _Tp> X(_Tp&& x):ptr(new Erasure<_Tp>(std::forward<_Tp>(x))){} void quack()const{ptr->quack();} private: struct ErasureBase{ virtual ~ErasureBase()=default; virtual void quack(</_tp></_tp></class></memory>…

C++標準バージョン毎のhas_iterator 実装方法と解説

C++

汎用オレオレライブラリ製作などに当たって標準コンテナに適応できるようiterator型に対する型特性を扱いたい時というのもまあまあ頻度としてある気がするので、既出ネタであるような気もするがC++03、11、14、1z毎のhas_iterator type traitsメタ関数の実装…

gitbookのセットアップログ

入門書、やっと制御文の項目に到達…gitbookに公開し始めるのは流石にまだかなあ。環境構築だけしとこう。— 五味 拓樹 (@530506) 2016年10月1日 というわけで、時代の流れ的には今頃な気がするが、一応環境だけ取り敢えず作っておく事にした。*1 % curl -o- h…