C++

昨日書いたコードを C++11 で記述してみた

C++

昨日書いたコードは C++14 の仕様だったんですが、比較するために C++11 版のコードも書いてみました。 [ソース] constexpr int abs(int x){ return x < 0 ? -x : x; } template<int Size> constexpr int max_impl(int const (&array)[Size], int result, int index){ </int>…

Clang(svn) に Relaxing constraints on constexpr functions が実装されていた

多分、先月末だと思うんですが Clang に Relaxing constraints on constexpr functions が実装されました。 C++11 の constexpr 関数はいろいろと制限があったんですが、C++14 ではこれが緩和され、一般ユーザー(非中3女子)にも扱いやすくなります。 例え…

Boost.TypeErasure の any で暗黙の型変換が行われるようになっていた

以前、『Boost.TypeErasure の any は暗黙の型変換が行われない』という記事を書いたのですが、リリース版の Boost.TypeErasure(Boost 1.54.0)ではこの挙動が変更されており、暗黙の型変換が行われるようになっていました。 [ソース] #include <boost/type_erasure/any.hpp> #include <boost/type_erasure/operators.hpp> </boost/type_erasure/operators.hpp></boost/type_erasure/any.hpp>…

Boost.TTI を使ってみる

元ネタ:終了処理をするメンバ関数の違いを吸収してくれるカスタムデリータ - 凹みTips Boost.TTI が利用できるよさげなネタがあったので書いてみました。 [ソース] #include <boost/tti/has_member_function.hpp> BOOST_TTI_HAS_MEMBER_FUNCTION(close) // => has_member_function_close struct </boost/tti/has_member_function.hpp>…

本日20:00〜から C++オンライン読書会を行います

C++

本日20:00〜から C++オンライン読書会を行います。 今日読む資料は C++Now 2013 の資料の中からその場で決める予定です。 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しくださいまし。

Boost.Optional で Ruby の || 演算子のような挙動を行う

さて、Ruby の || 演算子は次のような挙動になります。 n1 = 42 || 12 puts n1 # => 42 n2 = false || 12 puts n2 # => 12 n3 = 42 || false puts n3 # => 42 このように Ruby の || 演算子は最初に真になった値を返します。 これを Boost.Optional を使って…

Boost 1.54.0 がリリース

Boost 1.54.0 がリリースされました。 Version 1.54.0 - boost Boost 1.54.0 では以下の3つのライブラリが新しく追加されます。 Boost.Log 2.0 The Type Traits Introspection Library Boost.TypeErasure これでやっと Boost.TypeErasure が使うことができま…

Visual Studio 2013 のリリース版で更に追加される予定の C++11 の言語機能

C++

C++11/14 STL Features, Fixes, And Breaking Changes In VS 2013 - Visual C++ Team Blog C++ Conformance Roadmap - Somasegar’s blog さて、Visual Studio 2013 Preview で実装されている C++11 の機能は前回紹介しましたが、上記の記事によると製品版で…

Visual Studio 2013 で追加される予定の C++11 の言語機能

C++

What’s New for Visual C++ Developers in VS2013 Preview - Visual C++ Team Blog 上記の記事によると、 Default template arguments for function templates. Delegating constructors. Explicit conversion operators. Initializer lists and uniform ini…

本日20:00〜から C++オンライン読書会を行います

C++

本日20:00〜から C++オンライン読書会を行います。 今日読む資料は C++Now 2013 の資料の中からその場で決める予定です(こんどこそ! 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しくださいまし。

Boost で日付処理

元ネタ : 誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめ 昨日に続いて同じネタなんですが Boost がなかったのと Boost.Date_Time あまり使ったことがないので練習がてら書いてみました。 [現在時刻のD…

LLVM 3.3 がリリース

LLVM 3.3 がリリースされました。 Download LLVM 3.3 LLVM 3.3 Release Notes Clang 3.3 Release Notes 予定より2週間ほど遅れていたんですが無事にリリースされました。 既知の通り Clang 3.3 では C++11 の機能が完全実装されています。 ClangがC++11を完…

Qt5 を使用して C++ で Webサイトのスクリーンショットを保存する

C++

なんか簡単に出来そうな感じがしたのでやってみました。 [ソース] #include <QtWidgets/QApplication> #include <QtGui/QPixmap> #include <QtWebKitWidgets/QWebView> #include <QtWebKitWidgets/QWebFrame> #include <iostream> int main(int argc, char* argv[]){ QApplication app(argc, argv); QWebView view; view.load(QUrl("https://www.google.c…</iostream></qtwebkitwidgets/qwebframe></qtwebkitwidgets/qwebview></qtgui/qpixmap></qtwidgets/qapplication>

第14回C++オンライン読書会を行いました

C++

第14回 C++オンライン読書会 その場で読む資料を決めて読もうと思っていたんですが、個々で面白そうな C++Now! 2013 の資料を読みあさっていました。 いくつか気になる資料があったので次回はその中から読む資料を決めて読みたいと思います。 個人的には『Dy…

本日20:00〜から C++オンライン読書会を行います

C++

本日20:00〜から C++オンライン読書会を行います。 今日読む資料は C++Now 2013 の資料の中からその場で決める予定です。 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しください。

Boost.Interprocess でアプリケーショの多重起動を防止する

この手の処理はいくつか手段があると思うのですが、Boost.Interprocess で書いてみました。 [ソース] #include <boost/interprocess/managed_shared_memory.hpp> #include <cstdio> #include <string> #include <cstdlib> int main(int argc, char* argv[]){ namespace ipc = boost::interprocess; try{ ipc::shared_memory_object se</cstdlib></string></cstdio></boost/interprocess/managed_shared_memory.hpp>…

Qt5 の connect を lambda expressions で試してみた

なんとか手元で Qt5 を動かすことが出来たので connect で lambda expressions を 試してみました。 [ソース] #include <QtWidgets/QApplication> #include <QtWidgets/QPushButton> #include <QtWidgets/QSlider> #include <iostream> #include <string> int main(int argc, char* argv[]){ QApplication app(argc, argv); int count = 10; QPushB</string></iostream></qtwidgets/qslider></qtwidgets/qpushbutton></qtwidgets/qapplication>…

Boost 1.54.0 では新しいライブラリとして Log, TTI, TypeErasure が追加される

Version 1.54.0 - boost.org Log: Logging library, from Andrey Semashev. TTI: Type Traits Introspection library, from Edward Diener. Type Erasure: Runtime polymorphism based on concepts. ついに…!という感じですが Boost 1.54.0 では新しいライ…

C++Now 2013 が始まったみたいです

すっかり忘れてしまっていたんですが13日から(日本時間だと14日ですが)C++Now! 2013 が開催されています。 C++Now 2013 is Underway! - cppnow それに伴い、発表資料なんかも github で公開され始めているみたいです。 boostcon/cppnow_presentations_2013…

GCC の C++14 の対応状況

C++

Clang の方はちょくちょく確認しているんですが GCC がどれぐらい対応しているのか知らなかったので調べてみた。 と、いうかいつの間にか 4.9 が出てたのか。 C++1y/C++14 Support in GCC [gcc 4.9 で実装済み] Tweak to certain C++ contextual conversions…

netlib で HTTP Server を書いてみた

C++

Boost.Asio だけだとしんどそうだったので netlib でちょっと書いてみました。 [環境] netlib 0.9.5 Boost 1.53.0 Visual Studio 2010 [ソース] #include <boost/network/include/http/server.hpp> struct hello_world{ typedef boost::network::http::server<hello_world> server; void operator ()(server::requ</hello_world></boost/network/include/http/server.hpp>…

Qt 4.8 の QtWebkit で Flash を再生する

Qt 4.8 の QtWebkit で Flash を再生したい場合、QWebSettings::PluginsEnabled を有効にする必要があります。 [ソース] #include <QtGui/QApplication> #include <QtWebKit/QtWebKit> int main(int argc, char* argv[]){ QApplication app(argc, argv); QWebView view; view.load(QUrl("http://yana</qtwebkit/qtwebkit></qtgui/qapplication>…

LLVM 3.3 は 6月5日にリリース予定

The LLVM Compiler Infrastructure LLVM 3.3 のリリーススケジュールは以下の通りです。 05月06日 - Branching for 3.3 release 05月06日〜11日 - Phase I testing 05月12日〜18日 - Bug fixing from Phase I 05月19日〜25日 - Phase II testing 〜Random wi…

Clang に部分的ではあるが C++14 の機能がいくつか実装された

C++

Clang に部分的ではありますが、C++14 の機能がいくつか実装されました。 C++1y implementation status - Clang Return type deduction for normal functions Runtime-sized arrays with automatic storage duration Relaxing requirements on constexpr fun…

本日20:00〜から C++オンライン読書会を行います

C++

本日20:00〜から C++オンライン読書会を行います。 今日読む資料は『C++ Concurrency』になります。 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しください。

QtWebKit を使ってみた

簡単に描画できるらしいのでちょっと使ってみた。 [ソース] #include <QtGui/QApplication> #include <QtWebKit/QtWebKit> int main(int argc, char* argv[]){ QApplication app(argc, argv); QWebView view; view.load(QUrl("http://www.google.com/")); view.show(); return app.exec(); } [出力] </qtwebkit/qtwebkit></qtgui/qapplication>…

neobundle.vim で github の C++ ライブラリを管理する

この記事は Vim Advent Calendar 2012 149日目の記事になります。 さて、最近では C++ のライブラリも git や svn で公開・開発されている事が多くなってきたと思います。 これらのライブラリを使用する場合は git clone でリポジトリを落としてきたり git p…

Qt4.8 の slot に関数オブジェクトやラムダ式を渡せるようなラッパーを書いてみた

Qt の connect は便利なんですが slot で簡単な処理を行う場合にわざわざ QObject を継承したクラスのメンバ関数で処理を書かなければいけなかったり、Q_OBJECT を付ける必要があったり、クラスは独立したヘッダーファイルで定義しなければいけなかったりと…

Clang で実装されている C++1y を使用してみた

最新版の Clang では C++1y の機能がいくつか実装されているみたいなので試してみた。 現在、実装されている機能 Binary literals Member initializers and aggregates C++11 で実装された Uniform initialization と Member-initializers は併用して使用す…

ClangCheck を使用してソースファイルのエラー箇所を自動的に修正する

ClangCheck の -fixit オプションを使用すればエラーメッセージで出力される『did you mean 〜』の辺りをいい感じに修正してくれます。 [main.cpp] void func1(int n) const{ } int main(){ typedef int integer; integre n = 0; func(n); return 0 } [コマ…