2014-01-01から1年間の記事一覧

座標系のオレオレクラスを作成中(1)

C++

せっかくなのでconstexpr対応しつつ、ちょこちょこ書いてます クラスを設計する事より、constexprを学ぶ事がメイン(本末転倒) 進捗その1 http://melpon.org/wandbox/permlink/Rnq8D2etXIvLfmfx 進捗その2 http://melpon.org/wandbox/permlink/RLVRvHYCfS…

readonlyなpublicメンバ変数

C++

普通のクラス設計でpublicメンバ変数は定義しないと思いますが 座標系のクラスを作っているときにいちいちgetterから呼び出すのに 変な違和感を覚えます readonlyなpublicメンバが欲しいです C#ではpublic readonly int x;とかpublic int x{get; private set…

Keyが文字列なオレオレmapラッパでemplace

C++

前にpush_backで作った奴のemplace版です テスト項目を増やしました http://melpon.org/wandbox/permlink/76HSVvDSWz8lhG2U 追記:dictのTがchar*の引数コンストラクタを持っている場合に対応しました http://melpon.org/wandbox/permlink/oHlbOyB12ItmOVz6 …

素数の個数を求める

http://ideone.com/5A9Zxg をC++で置き換えてみた http://ideone.com/e5xgrV C++14版 http://melpon.org/wandbox/permlink/3vZnPjuGYRG6Hyvj http://melpon.org/wandbox/permlink/cTbebcWZhqmdFz77 (2014,4/5) 今気が付いたのですが、単位がおかしいですね・…

constexprの実体化?

C++

昔、constexpr文字列を使ったときと同様のノリで static constexprメンバ変数として数字配列を作成したらリンクエラーがでました class Hoge{ public: static constexpr auto array = {1,2,3,4}; // Error static constexpr auto word = (char*)"hoge"; // O…

TMPいろいろ試してみた

C++

Variadic TemplateをつかったSTLのTemplate Template parameter イディオム 後ついでにmember関数の有無をチェックするヘルパクラスを使ったSFINAE http://melpon.org/wandbox/permlink/usQueFzSHaHzzzLN ↓ declval() → T() の方がコンパイル時間が早い? ht…

TMPの条件分岐を記載する場所

C++

返り値型がvoid型 template<typename T> typename enable_if< /*条件式*/>::type func(T t) { } template<typename T> typename enable_if::type func(T t) { } 返り値型が引数型に依存 その(1) template<typename T> typename enable_if< /*条件式*/,T>::type func(T t) { } template<typename T> typename</typename></typename></typename></typename>…

コンテナの内部型が特定のコンストラクタを所有しているか否かで関数のオーバーロード分岐(SFINAE)

C++

やり方 is_constructibleを使えばよかったようです http://melpon.org/wandbox/permlink/HmXdOTNXMO53kIUy

TMPわからん

C++

テンプレーメタプログラミング(TMP)というものをC++においてよく見かけます 私の理解が曖昧なので、とりあえずまとめることにします 前提知識として 関数のオーバーロード C言語とC++の言語使用の違いの例として、よく「同一の名前を持つ関数を複数定義で…

Softetherを使ってみようと思う(1)

自宅のパソコンに出先からアクセスすることが可能になるVPN構築ソフトウェア 「Softether」を使ってみました サーバー:Linux(Linux Mint 16) ← 今回はこれの話 サーバーの操作・管理:windows7 クライアント:Windows8.1 サーバー側の設定(インストール…

C++14の汎用lambda

C++

generic lambdaがすごく便利ですね ファンクタの定義はTemplateを使うか、lambdaを使うかの2択で 前者はメンバ関数内では使用できないし、 後者は引数の型を明示しなくてはならないため、 foreachなどのコンテナアルゴリズムを使う場合は Template引数毎に同…

equal_rangeでrange based for loop が使えなかった

C++

BOOST_FOREACHでは使用できたのですが forではerrorになりました C++14以降では対応してくれるのかな? やはりできないらしい 参考:http://d.hatena.ne.jp/gintenlabo/20110122/1295714441