2016-01-01から1年間の記事一覧
なんとなく弄りたくなった。導入。 % sudo apt-get install freeglut3 freeglut3-dev 取り敢えず、空のウィンドウを出力してみる。 #include<GL/glut.h> int main(int argc,char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA); glutCreateWindow("</gl/glut.h>…
規格書(N4606 § 20.5.2)には載っていないが、Wandbox上でのclang HEAD 4.0.0では、以下のコードが通る。 [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ std::tuple<int,int>(std::experimental::make_array(42,42)); まずヘッダーファイルを見てみないとなんとも言えないので、実機</int,int>…
普段からGCCばかり使うので、Clangのアップデートを怠っていた。 Clang - Getting Startedの通りに実行するだけだ。一連の流れをスクリプトに起した。 #!/bin/zsh emulate -R sh sudo apt-get build-dep -y llvm clang sudo apt-get install -y subversion c…
デフォルトインストールされているlessコマンドはsyntax highlightをしないが、vimのmacroにあるless.shはそれが可能である。視覚的に分かりやすいため、そちらをデフォルトに設定する。 単純にエイリアスを設定すれば良い。vimのバージョンごとにディレクト…
.zshrcに筆者が設定している内容。 ブログにコードを貼り付ける際、筆者はコマンド1つでテキストファイル内容をコピーしたいので、実行環境がMacである場合は以下のようなエイリアスを設定している。 alias clipbd='(){cat $1|pbcopy}' Linuxの各ディストリ…
考えれば分かる事だが、ウェブサイトを書いていて一考えしたので、一応メモ。 縦横中奥に配置するには、CSSのみで設定することができる。 #holder{ position:relative; } #title { position:absolute; top:-50%; left:50%; transform:translate(-50%,-50%);}…
自宅のタワーPCにUbuntu16.04LTSを入れた。今も、そのUbuntu 16.04から、ブログを投稿している。まず、インストールして、スクリプトを走らせて一通り設定したが、動作がかなり安定している。しばらくLinuxを触っていなかったので(Ubuntuなるディストリビュ…
ツイッターから見させて頂いたこちらのエントリ。 http://www.atnnn.com/p/operator-larrow/内容としては、クラスのポインタを持っていて関数を呼び出したい時、rigth arrow operatorを用いる事でそのメゾットを呼び出す事ができる。では、関数ポインタがあ…
Teaching Assistantをしていて、こういった質問をしばしば受ける。このエントリタイトルの問題は周知の事実なので、書く必要もない気がするが、自分が伝える上でどのような例を出して説明すると、他人が理解しやすいかを残しておきたいので、綴ろうと思う。 …
C++標準化委員会の文書:Propose to adopt make_array into the IS make_arrayを規格に導入する提案。 auto ar=std::make_array(1,2,3); // std::array<int,3> ar{1,2,3}; 折角なので、実装してみた。 namespace std{ template<class... Args> constexpr decltype(auto) make_array</class...></int,3>…
C++03まででは>>の記述は全てrigth shift operatorとコンパイラに解釈されていたため template<class _Tp>struct X{}; X<X<int> >(); とテンプレートの入れ子記述を示すためにスペースを空けなければならなかったが、C++11以降は解釈を変更したためスペースなしでも通る。これ</x<int></class>…
stackoverflow.com をぼんやり見ていたのだが、この問題は直ぐに解決されるだろう。 C++標準化委員会の文書:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0257r1.pdf 今までchar,signed char,unsigned charによって1バイトを表現する事が出来…
標準化委員会の文書:Unqualified enumerators in case labels switch文内でスコープ解決を行っているコード。 enum struct foo{bar,baz}; namespace n{ enum n_foo{pub,bar,tavern}; }; auto f(const foo& f,const n::n_foo& n_f)->const std::pair<int,int>&& { std</int,int>…
C++14までではレガシー配列とstd::initializer_list*1がconstexprに対応していた*2が、C++17以降、std::arrayはfillとswapメンバ関数以外の全てを、constexpr化するとの事。 #include<array> template<class _Tp> using Container_value_t=typename _Tp::value_type; template<class _Tp> </class></class></array>…
値として-1をsize_tなどのunsigned integerへ代入(下記コードでは初期化)した時、同型の最大値となるとの事。また、その内容が規格として保証されているとの事。 constexpr std::size_t max=-1; // max==ULLONG_MAX in 64bit constexpr unsigned int ov=max+…
int main() { using ullint=unsigned long long int; using ulint=unsigned long int; std::cout<
メンバ関数ポインタ、メンバ変数ポインタを記述する際のシンタックスを忘れているのでメモメモ。 struct X{ const unsigned int x=999; const unsigned int f()const noexcept{return x;} }; int main() { { const unsigned int (X::*ptr_f)()const noexcept…
今回の話題はPointer variableがデータメンバとして定義されている場合のデフォルトコピーコンストラクタの挙動について。ヤバイ。超基礎的な事忘れてる。生成されるデフォルトコピーコンストラクタと代入演算子がメンバのポインタ変数に対してシャローコピ…
通常C++プログラマがvirtual functionを宣言する理由は、virtualメソッドへの関数ポインタが格納されているvtableを暗黙に作り出させ、動的なポリモーフィズムを実現させるためである。 しかし、vtable経由で動的に関数を間接的に呼び出すという事は、コンパ…
// a.cpp int global_array[1]; extern void access(); int main() { global_array[0]=10; // 10 というアドレス値として扱われてしまう予定 access(); } // b.cpp extern int *global_array; void access(){global_array[0]=1; // 書き込もうとする} 各ファ…
七夕という事で...無意味に作ってみた。 pic.twitter.com/xKQlNHrN40— 五味 拓樹 (@530506) 2016年7月7日 何事もありませんように。
僕は、個人的に、手ぶらで外に出たく、バッグを抱えたり肩にかけるのが好きではない。しかしそれだと当然ラップトップを持ち出す手段がなく、出先で小さなテストコードを実行したい時、よく困っていた。パッとやはりコマンドラインから打ち込める環境が欲し…
このシリーズ何だか久しぶりな気がする。今回は、知ってはいるものの、なんだかぼんやりしているものをメモしてみる事にする。 特殊メンバ関数のdefault/delete宣言 クラスを定義した際に暗黙定義される特殊メンバ関数を制御するための命令。defaultは暗黙定…
便利に思ったものをメモ。 Command line stack ESC-qでコマンドラインをスタックする事が出来、実行後自動的にスタック内容をコマンドラインにセットしてくれる。デフォルトだとスタック内容を目視する手段がないため、それを可能にするスクリプトをzshrcに…
と思ったこの頃。復習がてらに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>
色々zshプラグインを管理できるらしい。 % pwd /Users/rroki % git clone https://github.com/zsh-users/antigen.git % mv antigen .antigen % echo "source ~/.zshrc.antigen" >> .zshrc % vim .zshrc.antigen % source .zshrc 以下は.zshrc.antigen。 if […
$ cat /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh /usr/bin/screen $ chsh -s /bin/zsh Changing…
を学校でしたので備忘録的にあげてみる。設定した高さとスクロールに応じてTopにジャンプするボタンを表示させる 文字の大きさを変動させる 乱数 ボタンの設定 凄くセマンティックスが直接的なシンタックスだなあ。是非ともC++を触りたくな〜る
手持ちのOS Xでtreeコマンドが通らなかった。 $ brew install tree そのまま使ってみたら文字化けした。.bashrcに追記した。 alias tree="tree -NC -a -h" 文字化けを防止するついでにドットのつく隠しファイルを表示しカラーリングをしファイルサイズを表示…
使う機会が増えたので、軽くシンタックスぐらいは把握しておこうという事で、一通り取り敢えず確認してみる事にした。適当にググり、一番上に出てきたものを参考とする。また、実行は一々ブラウザに表示させるのも面倒なので、jscをシェル上で走らせ、動作確…