2018-01-01から1年間の記事一覧
気になったので考察してみました。 結論 std::shared_ptr 以外で参照を持つのは寿命管理が難しい 動機 オブジェクトが参照型である言語の場合、普通にクラスに別オブジェクトを持った場合それは参照になります。例えばJavaだと class A { private int value;…
C++20にコルーチンが提案されており、Visual Studio 2015以上で使うことが出来るため試してみました。この記事のコードはVisual Studio 2017 Update8で動作を確認しました。コンパイラオプションに /await が必要です。 コルーチン自体の説明は省略します。…
Boost 1.67.0から Boost.HOF というライブラリが追加されました。 HOFはHigher Order Functions(高階関数)の略で、関数や関数オブジェクトのユーティリティを提供するライブラリです。 ヘッダーオンリーでC++11以上の環境で使えます。 3つのコンポーネントが…
WinAPIで普通にボタンなどのコントロール(WinAPI的にはWindow)を作ると昔ながらのデザインになってしまいます。各Windowsのバージョンのデザインのコントロールを使いたいですよね? そんな時、Visual Styleを設定します。 Visual Styleの設定はプロジェクト…
こちら github.com 動機 既にCMakeのテンプレートはいくつか存在しています。例えば github.com などです。しかしこれらはファイルや設定の量が多く、もしかしたら大規模なプロジェクトや設定したことが多い場合では良いのかもしれないですが、もっと小さい…
やりたかったこと ローカルのiTunesの曲を更新したらGoogle Play Musicが同期して、Android端末で聴けるようにしたかった。iTunesで曲を入れたときに、iPodをUSBで接続して同期するのが面倒だったため。 Google Play MusicにローカルのiTunesと同期する設定…
モチベーション 自分が使ってるサーバーはcentos 6で、既にnginxが導入済みであり、http2に対応させたかったのが発端です。 ChromeはALPNのみ対応していますが、ALPN対応のopensslは1.0.2以上であり、CentOS 6のopensslは1.0.1系のため 自分でビルドしてopen…
ハマったので記録します。 $ cat /etc/redhat-release CentOS release 6.5 (Final) な環境で、 yum install(update) git をしても1.7.1しか入りませんでした。gitのバージョンが古いことでgit cloneなどが一部使えなくなったためgitを更新することにしました…
Visual Studio 2017の15.6からC++17から入るParallel Algorithmsが部分的に実装されました。 以下の並列for_eachコードが動きようになります。 #include <algorithm> #include <execution> #include <iostream> #include <vector> int main() { // サイズ10のvectorを作って0, 1, 2, ..., 9で埋める s</vector></iostream></execution></algorithm>…
知らなかった。std::bindとstd::mem_fnはデータメンバを束縛して関数風にアクセスすることが出来ます。もちろんそのスコープでアクセス可能なデータメンバに限ります。 #include <functional> #include <iostream> struct X { int data = 3; }; int main() { X x; auto x1 = std::b</iostream></functional>…