c++に関するbehironのブックマーク (3)

  • テンプレートの実体化の実装方法とODR違反について

    問題 以下のC++コードを考える。 int plus( int a, int b ) { return a + b ; } double plus( double a, double b ) { return a + b ; } このC++コードは、int型とdouble型以外、コードはほぼ同じである。 しかし、ほとんどのコンピューターではint型とdouble型は操作方法が異なるため、この2つの関数は、全く別のコンピューターが処理できるコードに変換される。 ところで、古典的なC言語やC++コンパイラーの実装方法として、ソースコードのファイルをそれぞれ、一つ一つの翻訳単位としてコンパイルし、翻訳単位ごとにオブジェクトファイルを生成し、リンカーで複数のオブジェクトファイルを結合(リンク)して、単一のプログラムを生成するというものがある。 よくある実装では、オブジェクトファイルは、その翻訳単位

    behiron
    behiron 2022/04/29
  • C++魔術回路構成法 - Qiita

    はじめに これはC++ Advent Calendar 2017の25日目の記事です。 皆さん、C++は好きですか? 僕は好きではありません。 愛 し て ま す ! C++魔術回路って? C++ってちょっと凝ったことするときにどういう風にすれば実現できるのか。 そういった黒魔術を書くときに使うテクニックを僕は C++魔術回路 と呼んでます。 まあ、普段使いできる程度に簡単なテクニックだと思います。 オーバーロード魔術回路 基礎テクニック。 テンプレートに型制約をもたせ、またそれを利用しオーバーロードを呼び分ける。 ところでオーバーロードってなんかカッコイイ響きだよねぇ。 SFINAE 特定の操作が可能な型を引数にとるということが可能である。C++11からの仕様。 テンプレートが実体化に失敗してもエラーにならず別のオーバーロードを探してくれる仕様になっており、これを利用してオーバーロード解

    C++魔術回路構成法 - Qiita
    behiron
    behiron 2022/04/27
  • C++ の学習サイトを作りました - Qiita

    はじめに C++ って他の言語に比べると勉強しづらくないですか? 書籍や学習サイトの内容が古い、または少ないんですよね。ただでさえ言語仕様が複雑なのに、それを手助けする情報も少ないと初学者には辛いんじゃないかと思います。というか僕がそうでした。 そんなわけで、もう少し今風な学習サイトを作ろうと思って作成しました。 ゼロから学ぶ C++ ちゃんとスマホでも読めるようになっています。 C++11 をベースに作っているので、このサイトももはや古い方に入るかも知れませんが、C++20 が浸透してきたらアップデートしようと思います。 よかったらご活用下さい。 ゼロから学ぶ Python(姉妹サイト) 『ゼロから学ぶ Python』というサイトも作成しています。あわせてご活用下さい。 さいごに 上記のサイトはどちらも GitHub でソースコードを管理しています。 スターを付けてもらうと励みになります

    C++ の学習サイトを作りました - Qiita
    behiron
    behiron 2020/11/23
  • 1