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 に Relaxing constraints on constexpr functions が実装されました。 C++11 の constexpr 関数はいろいろと制限があったんですが、C++14 ではこれが緩和され、一般ユーザー(非中3女子)にも扱いやすくなります。 例え…
以前、『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>…
元ネタ:終了処理をするメンバ関数の違いを吸収してくれるカスタムデリータ - 凹み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++Now 2013 の資料の中からその場で決める予定です。 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しくださいまし。
さて、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 がリリースされました。 Version 1.54.0 - boost Boost 1.54.0 では以下の3つのライブラリが新しく追加されます。 Boost.Log 2.0 The Type Traits Introspection Library Boost.TypeErasure これでやっと Boost.TypeErasure が使うことができま…
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 の機能は前回紹介しましたが、上記の記事によると製品版で…
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++Now 2013 の資料の中からその場で決める予定です(こんどこそ! 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しくださいまし。
元ネタ : 誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめ 昨日に続いて同じネタなんですが Boost がなかったのと Boost.Date_Time あまり使ったことがないので練習がてら書いてみました。 [現在時刻のD…
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を完…
なんか簡単に出来そうな感じがしたのでやってみました。 [ソース] #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++Now! 2013 の資料を読みあさっていました。 いくつか気になる資料があったので次回はその中から読む資料を決めて読みたいと思います。 個人的には『Dy…
本日20:00〜から C++オンライン読書会を行います。 今日読む資料は C++Now 2013 の資料の中からその場で決める予定です。 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しください。
この手の処理はいくつか手段があると思うのですが、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 を 試してみました。 [ソース] #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>…
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 では新しいライ…
すっかり忘れてしまっていたんですが13日から(日本時間だと14日ですが)C++Now! 2013 が開催されています。 C++Now 2013 is Underway! - cppnow それに伴い、発表資料なんかも github で公開され始めているみたいです。 boostcon/cppnow_presentations_2013…
Clang の方はちょくちょく確認しているんですが GCC がどれぐらい対応しているのか知らなかったので調べてみた。 と、いうかいつの間にか 4.9 が出てたのか。 C++1y/C++14 Support in GCC [gcc 4.9 で実装済み] Tweak to certain C++ contextual conversions…
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 を再生したい場合、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>…
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++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++ Concurrency』になります。 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しください。
簡単に描画できるらしいのでちょっと使ってみた。 [ソース] #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>…
この記事は Vim Advent Calendar 2012 149日目の記事になります。 さて、最近では C++ のライブラリも git や svn で公開・開発されている事が多くなってきたと思います。 これらのライブラリを使用する場合は git clone でリポジトリを落としてきたり git p…
Qt の connect は便利なんですが slot で簡単な処理を行う場合にわざわざ QObject を継承したクラスのメンバ関数で処理を書かなければいけなかったり、Q_OBJECT を付ける必要があったり、クラスは独立したヘッダーファイルで定義しなければいけなかったりと…
最新版の Clang では C++1y の機能がいくつか実装されているみたいなので試してみた。 現在、実装されている機能 Binary literals Member initializers and aggregates C++11 で実装された Uniform initialization と Member-initializers は併用して使用す…
ClangCheck の -fixit オプションを使用すればエラーメッセージで出力される『did you mean 〜』の辺りをいい感じに修正してくれます。 [main.cpp] void func1(int n) const{ } int main(){ typedef int integer; integre n = 0; func(n); return 0 } [コマ…