Rokiのチラ裏

学生による学習のログ

C++

SFINAEの動作に納得がいかない

C++

と思ったこの頃。復習がてらにSFINAEを用いたコードを書いたのだが template<class std_class> auto size(std_class c)->decltype(c.size(),bool()){return true;} auto size(...)->bool{return false;} int main() { std::cout<</class>

Explicit operator bool overload実装の経緯と標準ライブラリによる使用例

C++

Explicit operator boolを用いた値の比較において、operator==を用いたif文は、オーバーロードなどを定義しない限り、コンパイルが通らない。 class A{ bool data; public: A(bool arg):data(arg){} explicit operator bool()const noexcept{return data;} }…

エイリアステンプレート

C++

なんだか忘れてしまっていたのか、知らなかったのか分からないが、便利なのでメモメモ。 template<class _Tp,class Allocator=std::allocator<_Tp>> std::vector<_Tp,Allocator> twice(std::vector<_Tp,Allocator> v) { for(typename std::vector<_Tp,Allocator>::iterator i=std::begin(v); i!=std::end(v); ++i)*i*=2; // なんだか視覚的にわかりにくい</_tp,allocator></_tp,allocator></_tp,allocator></class>…

初期化lambdaキャプチャー

C++

こんなものがあったのか。知らなかったのでメモ。 まず、初期化lambdaキャプチャーにより、以下のように書ける。 #include<functional> int main() { typedef std::function<int()> function_i; int data{}; function_i f=[i=data]{return i;},g=[data=data]{return data;}, h=[</int()></functional>…

Standard attributes(since C++11)

C++

独断と偏見による個人的に重要そうなattribute達のメモ。 noreturn void report(){throw "error";} int f(int x) { if(x>0)return x; report(); } int main() { f(1); } 例外送出をラップしたこのようなコードにおいては、コンパイラはその関数が返らないこ…

GCCインデントミスの警告機能

$ cat test.cpp int main() { auto f=[]{}; auto b=[]{}; if(true) f(); b(); } $ g++ -std=c++0x -Wmisleading-indentation test.cpp test.cpp: 関数 ‘int main()’ 内: test.cpp:5:2: 警告: this ‘if’ clause does not guard... [-Wmisleading-indentation]…

decltype(auto)

C++

仕事先の休憩スペースにて休憩時間中に投稿。 decltype autoの提案時、僕はC++に触れていなかったため、実装までの過程と脈略が分からず、その必要性がハッキリしなかったのだが、様々な資料を参考に、その必要性を学んだ。そのログをここに残してみる。 結…

気になる内容メモ about C++1z #4

C++

今回も仕事帰りの電車の中、スマホからの投稿。iPhoneを用いているのだが、コードを随時一応コンパイルにかけたいのもあってCppCodeというiOSのアプリを使ってみているのだが、非常に辛い。そもそも、エラーメッセージを見る事ができないし、当然だがC++1zに…

OS X EI Capitan 10.11.2に最新版のGCCをBuildした作業ログ

最新版のファイルをダウンロード、解凍、整理。 $ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-6.1.0/gcc-6.1.0.tar.gz $ tar zxvf gcc-6.1.0* $ rm gcc*tar.gz && cd gcc-* 依存パッケージのインストールとシンボリックリンクを張る作業…

気になる内容メモ about C++1z #3

C++

C++1zで気になる内容のメモ。スマホからの投稿。 static_assertのメッセージ省略 式を真であるか否かを確かめるだけの時にコンパイル時アサートを使う時、メッセージを一々書かなければならないのが面倒くさい。C++14まではマクロを用いて実質的な省略を実現…

C++を思い出す・・・#3

C++

paiza.ioという実行結果を表示する恐らくC++11に対応していると思われる良いサービスを見つけたので実行結果が必要なものは今回からそれを使い貼り付けてみる事にした。 マニピュレータによる数値的な書式設定 取り敢えず動作が確認できるコードをざっと書い…

気になる内容メモ about C++1z #1

C++

最近あまりジャンル的には無関係な映像制作や発信業務やその他諸々が毎日あったりで、中々デスク前に座って自分のやりたい事に没頭できないでいてモヤモヤしている。このエントリーも、仕事帰りの電車の中からの投稿になる。 こういう時は、以下のようなC++…

C++を思い出す・・・#2

C++

まずC++とは何なのか。 1970年代に開発されたC言語を機能拡張したもので1980年頃、AT&Tベル研究所のBjarne Stroustrup博士によって原型が生み出され、1988年ANSI/ISO規格により標準化されたプログラミング言語。その後C++03,C++TR1,C++11(0x),C++14(1y)と、…

C++を思い出す・・・#1

C++

今回から二年の間に忘れてしまったであろうC++のsyntaxやあれこれを思い出す為に色々試行錯誤していこうと思う。 参考教材 猫でもわかるC++プログラミング 第2版 (猫でもわかるプログラミング)作者: 粂井康孝出版社/メーカー: ソフトバンククリエイティブ発…