この記事は C++ Advent Calendar 2021の5日目の記事です。 2021年ももうすぐ終わりそうですが、みなさんはC++20を使っているでしょうか? C++20では、符号付き整数型のビット表現が二の補数であると規定されました。 また、ビット表現を保ったまま別の型に変換する関数であるstd::bit_castが標準ライブラリに実装されました。 これら二つの機能追加により、値のビット表現に依存したプログラムを書くことが非常に容易になりました。 この記事では、なぜstd::bit_castを使わなければならないかを説明します。 もちろん、それ以外の時にstd::bit_castを使うべきではないということではありません。 ビット表現を保ったまま別の型に変換したい時にはいつでもstd::bit_castを使う、という方針もありでしょう。 std::bit_castを使わなければなら
This project has been archived and is no longer actively maintained. The Sanitizers project, which includes AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer, and more, is now archived. The core code for these sanitizers resides within the LLVM repository. This repository will be retained for archival purposes, providing access to historical documentation, bugfixes, and helper code
興味深いものだけ解説。 [PDF] P0550R0: Transformation Trait uncvref decayとよく似たtraits、uncvrefの追加。 uncvref<T>::typeはTからCV修飾子とリファレンスを取り除いた型になる。decay<T>::typeとは違い、配列からポインター、関数から関数ポインターへの変換は行わない。 あるべきだ。 [PDF] P0551R0: Thou Shalt Not Specialize std Function Templates! std名前空間内の関数テンプレートはユーザーが特殊化してはいけないというルールを作ろうと言う提案。関数テンプレートはC++11から特殊化できるようになったので、これまで考慮されてこなかった問題が出てきた。 [PDF] P0552R0:enable_if vs. requires 既存のenable
C++言語の持つオシャレな機構の一つにADL(Argument Dependent Lookup)というものがあります。 和訳すると「実引数依存の名前検索」となり、読んで字の如く、「実引数」に依存した「名前検索」となります。なるほどわからん。 ADLの挙動 コードを見ながら順を追って理解してみましょう。
This question is for the people who know both Haskell (or any other functional language that supports Higher-kinded Types) and C++... Is it possible to model higher kinded types using C++ templates? If yes, then how? EDIT : From this presentation by Tony Morris: Higher-order Polymorphism : Languages such as Java and C# have first-order polymorphism because they allow us to abstract on types. e.g.
中3女子です。 今回は、みんな大好きユーザ定義リテラルについて。 ユーザ定義リテラルは、値(整数、不動小数点数、文字列)に対するプログラマブルなサフィックスを定義することができる機能である。 例えば糖衣構文や単位を持った値を扱うために用いられる。 { constexpr auto duration = 4_mins + 33_secs; } ユーザ定義リテラルはいらない子か ところで、このユーザ定義リテラルは、方々で微妙な子扱いされている。 というのも、そもそもユーザ定義リテラルは直観的な記述を可能とするものであるはずなのだが、その用法には一見非直観的な落とし穴がある。 例えばユーザ定義リテラルの識別子は、アンダースコアで始めなければならない。 なぜなら、アンダースコアで始まらないサフィックスは、すべて予約されているからだ。 プログラマがアンダースコアで始まらないユーザ定義リテラルを定義し
と、いうことで C++なうで注目を浴び、巷で話題沸騰中の metaparse で Haskell を書いてみました。 まぁ Haskell はあんまり書けないんですけどね! [metaparse] metaparse.pdf - github meta_hs - github [ソース] #define BOOST_MPL_LIMIT_STRING_SIZE 50 #define MPLLIBS_STRING_MAX_LENGTH BOOST_MPL_LIMIT_STRING_SIZE #include <meta_hs.hpp> #include <double_number.hpp> #include <mpllibs/metaparse/string.hpp> #ifdef _S #error _S already defined #endif #define _S MPLLIBS_
[なかなか悪くないHTML] N3880: Improving the Verification of C++ Programs ようやく、C++論文で許せるマークアップのHTMLを読んだ気がする。 この論文は、C++にプログラムの検証を支援するための機能の必要性を提案している。 プロジェクトを始めるにあたって、どのプログラミング言語を選ぶかということは重要である。プログラミング言語ごとに利点や欠点があるので、考慮される。考慮に上がる対象に、検証可能性は重い。標準規格に、検証のための標準の規格がないのは、C++の利用を妨げる要因となっている。 この論文は、検証を標準規格でサポートするための必要性を提起するものであり、具体的な新機能の提案は含まれていない。ただし、現在のC++で改良できる分野として、いくつかの点を上げている。 たとえば、static_assertのメッセージを改良するだとか、
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
第127回 Ruby vs Java ダックタイピングとインタフェースで見る多態性 - bingo_nakanishiの他言語出身者のためのPerl入門 を読んで、「静的な型付け言語もやればできる子なんです」と言うところを少しは見せる事ができればと、今さらなネタですが書き起こしてみました。ただし、ジェネリックに対応した言語である必要があります。 元の記事では Java でしたが、Java の環境がなかったので C++ で記述しています。Java も Java 5.0 以降(?)からジェネリックを取り入れたらしいので大きな違いはないと思います。 前置き いま、このようにhumanがtouchすると、おのおのの動物が鳴くソースを書いてみる。duck(アヒル)はhuman(人間)に触られると「ガーガー」と鳴き、dog (犬)はhuman(人間)に触れると「ワンワン」と鳴くとする。 第127回 R
openFrameworks is an open source C++ toolkit for creative coding. download Grab the most recent release (0.12.1) and follow the setup guide to get openFrameworks running. documentation Reference for openFrameworks classes, functions and addons. You can also check the tutorials section. forum The forum is a place to meet other people working with openFrameworks. It's a place to share your work, or
This is an example of simple usage. // include cmdline.h #include "cmdline.h" int main(int argc, char *argv[]) { // create a parser cmdline::parser a; // add specified type of variable. // 1st argument is long name // 2nd argument is short name (no short name if '\0' specified) // 3rd argument is description // 4th argument is mandatory (optional. default is false) // 5th argument is default value
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く