yohhoyの日記

技術的メモをしていきたい日記

2016-10-01から1ヶ月間の記事一覧

-Wpessimizing-moveオプション と -Wredundant-moveオプション

LLVM/Clangでは、戻り値最適化(RVO; return value optimization)を阻害する/単に冗長なstd::move関数利用を警告するオプションが提供される。Clang 3.7で追加された警告オプション。両オプションとも -Wall オプション指定に含まれるため、個別に指定するケ…

wheelパッケージの対応アーキテクチャ確認

Python実行環境がサポートするwheelバイナリパッケージのアーキテクチャを確認する方法。 import pip print(pip.pep425tags.get_supported()) # [('cp34', 'none', 'win_amd64'), ('cp34', 'none', 'any'), ...] バイナリパッケージ(拡張子whl)のインスト…

return文と暗黙のムーブと型変換

プログラミング言語C++において、関数からの return 文と暗黙のムーブと型変換の関係についてメモ。*1下記コードfunc_implicit_move関数のように return 文にて型変換(unique_ptr→shared_ptr)を伴う場合、C++11/14言語仕様によって振る舞いが異なる。この…

お手軽__repr__メソッド実装

Pythonのユーザ定義クラスにおいて、__repr__メソッドを手軽に実装する方法。データ属性を名前順にダンプさせるためpprintモジュールを利用する。 import pprint class Node(object): def __init__(self, data, next = None): self.data = data self.next = …

生文字リテラル中の改行コード

C++

C++11で導入された生文字列リテラル(raw string literal)に含まれる改行は、ソースコードファイルの改行コードによらず'\n'(LF)として扱われる。 std::string s = R"(abc xyz)"; assert(s == "abc\nxyz"); C++11 2.14.5/p4より引用。 [Note: A source-file n…

From/Intoトレイトと反射律

Rust標準ライブラリが提供する std::convert::From トレイトは、任意の型に対して反射律(reflexive law)を満たす。Fromトレイトにより実装される std::convert::Into トレイトもまた反射律を満たす。[本記事はRust 1.12/Stable準拠] struct T; let v1: T =…