C++

Boost 1.70.0がリリースされました

C++

Version 1.70.0 - Boost C++ Libraries Boost 1.70.0リリースノート - boostjp リリースノートは、いつものようにboostjpサイトで翻訳 + 情報補完したものを公開しています。 新ライブラリは、expectedのバリエーションを提供するOutcomeライブラリ、多次元…

C++20を相談しながら調べる会、を開催しました

C++

C++20を相談しながら調べる会 - connpass C++20は3月の国際会議ですごく巨大なアップデートになって自分で調べるのがしんどくなってきました。 だれかに相談しながら調べたいな、と思って自社の会議室を使って少人数で集まっていました。 会の性質として、近…

lower_boundとupper_boundで区間抽出

C++

C++でlower_boundとupper_boundを用いて区間に含まれる個数を求める - @yumarimo Qiita lower_bound()とupper_bound()でこんなことができたんだなーと発見できて楽しかったので、時間で区間を指定して抽出するのをやってみました。 簡易的なBoost.Interval C…

C++ MIX #3 を開催します

C++

C++ MIX #3 - connpass 日程が決まりました。2019/04/17 (水) 19:00〜21:00です。 前回、抽選期間が長すぎたので、今回は1.5日程度で抽選します。このあたりはまだまだ試行錯誤しています。

noexceptがついてないファイルシステム操作

C++

C++17のファイルシステムライブラリは、エラー時に例外を投げるバージョンと、error_codeへの参照をパラメータにとって例外を投げないバージョンの2つが用意されています。 ですが後者についても一部、例外を投げる可能性がある関数があります。 戻り値でpat…

C++ MIX #2 開催案内

C++

C++ MIX #2 - connpass 2月に、C++周辺の勉強会であるC++ MIXを開催します。 今回、参加枠は先着順ではなく抽選になります。一部の方にはご不便をおかけすることになるかもしれませんが、ご了承ください。

Boost 1.69.0がリリースされました

C++

Version 1.69.0 - Boost C++ Libraries Boost 1.69.0リリースノート - boostjp Boost 1.69.0がリリースされました。リリースノートはいつものように、日本語訳 + 情報補完したものをboostjpサイトで公開しています。 今回、新ライブラリとして安全な整数演算…

C++の勉強会を新しく企画しました

C++

cppmix.connpass.com 「C++ MIX」という名前で、新しい勉強会を @okdshin さんと企画しました。 休日に勉強会開催をするのはパワーがすごく必要でたいへんなので、いまのところ継続性を重視して平日夜に2時間程度の開催ということにしています。 Boost.勉強…

cpprefjp : <filesystem>のリファレンス作成が完了しました

C++

<filesystem> - cpprefjp 2017年11月から作業していたので、10ヶ月もかかってしまいました。 引き続き、C++17のライブラリと言語仕様のメジャーな機能を優先的に作業し、C++20も合間を見て作業していきます。</filesystem>

Boostの創始者Beman Dawes氏が引退

C++

[boost] Twenty years and time to retire 1998年5月にBeman氏が提案したことからBoost C++ Librariesプロジェクトがはじまりました。そこから20年が経ったことを期に、Beman Dawes氏がBoostから引退されます。 彼が作成したFilesystem、Timer、Endianといっ…

Boost 1.68.0がリリースされました

C++

Version 1.68.0 - Boost C++ Libraries Boost 1.68.0リリースノート - boostjp Boost 1.68.0がリリースされました。 いつものように、リリースノートの日本語訳 + 情報補完したものを、boostjpサイトで公開しています。

文字列連結

C++

char配列、char、std::stringの任意の組み合わせを連結する関数を書きました。メモリ確保を一回だけします。 C++17の畳み込み式で、全体の文字列長を計算しています。 #include <string> #include <cstring> #include <utility> std::size_t string_length(const std::string& s) noexc</utility></cstring></string>…

Boost 1.67.0がリリースされました

C++

Version 1.67.0 - Boost C++ Libraries Boost 1.67.0リリースノート - boostjp Boost 1.67.0がリリースされました。リリースノートはいつものように、翻訳 + 情報補完したものをboostjpサイトで公開しています。 今回の新ライブラリは、契約プログラミングを…

1引数コンストラクタ以外に対するexplicit指定

C++

C++03では、ひとつの引数をとるコンストラクタで変換コンストラクタ以外に対してはexplicitを付ける、という慣習がありました (別の言い方をすると、パラメータ付き構築にexplicitを付ける)。 C++11では、波カッコ構文による「一様初期化 (Uniform Initializ…

最近のC++の学び方について発表しました

C++

Modern C++ Learning - SlideShare Modern C++ Learning from Akira Takahashi 英語の資料ですが、PFNの社内セミナーで「最近のC++の学び方」をテーマにして発表しました。(このブログではとくに書いてなかったですが、2017年10月からPreferred Networks社に…

C++17対応の『C++ポケットリファレンス』 第3版

C++

2018年2月15日に、『C++ポケットリファレンス』の第3版が発売となります。 [改訂第3版]C++ポケットリファレンス - 技術評論社 [改訂3版]C++ポケットリファレンス - Amazon.co.jp 今回の改訂では、C++17 (ISO/IEC 14882:2017) に対応しています。 執筆関…

Boost 1.66.0がリリースされました

C++

Version 1.66.0 - Boost C++ Libraries Boost 1.66.0リリースノート - boostjp リリースノートはいつものように、日本語訳 + 情報補完したものをboostjpサイトで公開しています。 今回、新ライブラリはBeast (HTTPライブラリ)、CallableTraits (関数呼び出し…

C++17がISOから発行されました

C++

ISO/IEC 14882:2017 - Programming languages -- C++ C++17がISO/IEC 14882:2017として発行されました。 cpprefjpサイトでのC++17解説は、鋭意製作中です。 C++17 - cpprefjp C++日本語リファレンス 言語機能解説のタスク ライブラリやIssueの対応状況

静的なメンバ定数を参照するとリンクエラーとなる

C++

クラス内にstatic constexpr Tで宣言した定数を、std::vector::emplace_back()関数とかに渡すと、リンクエラーになる場合があります。 ミニマムなコードとしては、以下のようになります: struct X { static constexpr int x = 3; }; template <class T> void f(T&&) </class>…

書籍 C++ Templates: The Complete Guide, 2nd Edition

C++ Templates: The Complete Guide, 2nd Edition - InformIT C++ Templates: The Complete Guide (2nd Edition) - Amazon.co.jp 書籍『C++ Templates: The Complete Guide』の第2版が発売しました。 初版はC++03でしたが、今回の改訂でC++17対応しています。…

Boost 1.65.1リリース

C++

Version 1.65.1 - Boost C++ Libraries Boost 1.65.1リリースノート - boostjp Boost 1.65.0に重大なバグが何件かあったため、パッチバージョンアップしたBoost 1.65.1がリリースされました。1.65.0はスキップして1.65.1を使用してください。 1.65.1のリリー…

Boost 1.65.0リリース

C++

Version 1.65.0 - Boost C++ Libraries Boost 1.65.0リリースノート - boostjp Boost 1.65.0がリリースされました。リリースノートの日本語訳は、いつものようにboostjpサイトで公開しています。 新ライブラリとして、PolyCollectionとStacktraceが追加され…

標準C++の欠陥解決は、過去のバージョンに遡って適用される

C++

C++17で入る予定の、可変引数でミューテックスを受け取ってスコープを抜けたらロック解除するscoped_lockクラスですが、C++17がDIS (Draft International Standard) の段階になり、仕様の手直しがもうほぼできない段階になってから、引数順の変更が行われま…

インクルードするディレクトリをマクロ定数として持つ

C++

とある事情から「インクルードするディレクトリが長いので何度も書きたくない」という状況になり、インクルードするディレクトリをマクロ定数に持って、インクルードするファイル名と連結してインクルードしたい、ということがありました。 そんなときの対応…

C++17標準ライブラリの細かい変更いろいろ その1

C++

最近cpprefjpに書いたものを列挙します。 assertマクロがconstexpr関数内で使用できるようになった std::next()関数のイテレータ要件がForward IteratorからInput Iteratorに緩和された std::addressof()がconst T&&の引数を禁止にした。addressof<const T>(T())のよ</const>…

標準ライブラリの実装で追加のnoexceptが付いている場合がある

C++

標準ライブラリの仕様でnoexceptが付いているものは、実装にもnoexceptを付けることが求められます。 しかし、標準ライブラリの仕様でnoexceptが付いていない場合、実装にnoexceptを付けないことは求められません。 たとえば、libc++のstd::vectorクラスでは…

Boost 1.64.0がリリースされました

C++

Version 1.64.0 - Boost C++ Libraries Boost 1.64.0リリースノート - boostjp Boost 1.64.0がリリースされました。リリースノートを日本語翻訳したものは、いつものようにboostjpサイトで公開しています。 新ライブラリ Process マルチプラットフォームで動…

C++1zの言語拡張まとめ

2017年中に改訂される予定のC++14の次のバージョン、仮称C++1zの更新内容をまとめました。正式名称はISO/IEC 14882:2017、通称C++17になる予定です。 C++1zの概要 C++17は、C++11ほど大きな変更はありませんが、重要な言語機能(構造化束縛とか)や、広く適用…

C++1z using宣言のパック展開

C++

using宣言 (using-declaration) には、2つの用途があります: メンバ関数を、基本クラスと派生クラスでオーバーロードする 識別子の名前空間を省略できるようにする これらusing宣言に指定する識別子が、ひとつだけでなく、カンマ区切りで複数指定できるよう…

C++1z shared_ptr::use_count()の仕様を明確化し、unique()を非推奨化

C++

std::shared_ptrクラスのメンバ関数use_count()とunique()は参照カウンタがいくつあるか (リソースを共有しているユーザーが何人いるか) を返すもので、デバッグ目的にしか使用しません。また、複数スレッドから使用するには、仕様が不明確でした。 use_coun…