2018-01-01から1年間の記事一覧
線形補完をいろんな方法で実装して、生成されるアセンブリを比較してみたいと思います 素直な実装 float lerp(float t, float v0, float v1) { return (1-t) * v0 + t * v1; } 加減算が2, 乗算が2の実装です t=0の時v0,t=1の時v1が保証されます(多分) g++ 8…
以下のコードはコンパイルに失敗します struct Foo { // error: 'constexpr const Foo Foo::s' has incomplete type static constexpr Foo s = {}; }; constexpr Foo Foo::s; constexprは宣言と初期化を一緒にしないといけないので、以下のようにしてもコン…
constexprでも頑張ればメンバオフセットを取得できるみたいです。constexpr版offsetofですね コードはこのGithubでの議論あたりを参考にしました。 コンパイルにはc++17が必要です gcc 7.0 / clang 6.0 あたりでコンパイルできます。 msvcは VS2017 15.8 Pre…
settings.jsonに以下を追加すればよい "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe", "terminal.integrated.shellArgs.windows": [ "/K","C:\\msys64\\msys2_shell.cmd -mingw64 -defterm -no-start -here -full-path -c fish & …
こんにちは。c++ネタ。 flexible array member プログラミングをしていると、大きさのわからない配列を扱いたい時があります。 間接参照を挟まず、構造体に直接配列を埋め込む手法はCなどではよく使われています こういった配列を扱うため、C99からはフレキ…
ちょっと調べたのでメモ 以下のコードはg++ 7.1、g++7.2でコンパイルに失敗します。 #include <variant> template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; }; template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>; using v = std::variant<double, long, bool>; constexpr const cha</double,></ts...></class...></class...></variant>…