yohhoyの日記

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

2015-04-01から1ヶ月間の記事一覧

定数式中でのconstexpr関数はnoexcept指定相当

2020-08-13追記:C++17で言語仕様が調整され、constexpr関数であってもnoexceptは特別扱いされなくなった。詳細は c++ - `noexcept` behavior of `constexpr` functions - Stack Overflow 参照のこと。定数式(constant expression)中で呼び出すconstexpr関数…

index_tupleイディオム もしくは The Indices Trick

C++

C++においてタプル型に格納された可変個の値を、関数呼び出しの実引数などに展開するイディオム。C++14標準ライブラリでは同イディオムをサポートするstd::index_sequence, std::make_index_sequenceが提供される。 // C++14以降 #include <utility> #include <tuple> templa</tuple></utility>…

Perfect Initializationイディオム

型Tを値保持するクラステンプレートにおいて(pair, tupleなど)、型Tコンストラクタの explicit 性を継承するイディオム。「ある型Uからの暗黙型変換を許可するか否か」という性質を、型Tをラップするクラステンプレートへと引き継ぐ。2018-06-09追記:C++2…

sqrt(dx*dx + dy*dy)とhypot(dx, dy)

C C++

C/C++標準ライブラリで2点間距離 (x1,y1) - (x2,y2) を計算する方法。C99以降またはC++11以降では、sqrt関数の他にhypot関数も利用できる。*1 #include <cmath> // C++98 double dist = std::sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); // C++11以降 do</cmath>…