タグ

関連タグで絞り込む (300)

タグの絞り込みを解除

c++に関するcrafのブックマーク (982)

  • Rust開発者のためのC++入門書:所有権と借用について | POSTD

    今日、ソーシャルサイト「reddit」を見ていたら、“ Rustの基礎を学んでからC++を始める場合 、何を勉強すればいいか”と問う投稿があり、私は自分のブログを復活させ、その中で質問への答えを書いたら面白いのではと考えました。 私にはRustを学んだ後にC++を扱う仕事に就いた経験があるため、Rustの経験を持つ人がC++に移行していく様子をまとめてみたいと思ったのです。 稿はC++の構文と特徴を既に知っていて、RustからC++の世界に移行する方法に興味を持っている読者を対象とします。 しかし、私は全てに精通しているわけではないので、稿では所有権(ownership)、借用(borrowing)、ライフタイム(lifetime)に焦点を当てて説明していきます。 所有権と移動 Rustの一番大きな特徴は所有権です。所有権は、プリミティブ型ではない値に対するデフォルトの動作として、コピ

    Rust開発者のためのC++入門書:所有権と借用について | POSTD
    craf
    craf 2017/03/14
  • Ruby extのためのVisual Studio Codeのclang extension用設定を書き出す - Islands in the byte stream

    Visual Studio Codeの C/C++ Clang extensionのためのいくらかの設定をすると、Ruby extensionを開発するときに補完が効くようになり、開発が楽になります。 C/C++ Clang - Visual Studio Marketplace ところでRuby extensionのCFLAGSなどの設定はわりと難しくて、実際のMakefileを読み込んでmakeを実行するのがてっとりばやいです。 というわけで、extconfを起動してMakefileをつくり、そこから必要なマクロを抜き出して .vscode/settings.json に書きだすためのタスクをつくってみました。 # additional Rake task for "ext/foo" namespace :vscode do desc "Setup Visual Studio Code

    Ruby extのためのVisual Studio Codeのclang extension用設定を書き出す - Islands in the byte stream
  • #Anthony Calandra / モダンC++の機能 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) (注:2017/02/07、タグが誤っていたので修正いたしました。) C++11/14/17 概要 C++11/14/17に関する記述や例の多くは、様々なリソース(詳しくは謝辞の項目をご覧ください)を参考にしており、それらを自分の言葉でまとめてみました。 C++17には、以下の新しい言語機能が導入されています。 クラステンプレートに対するテンプレート引数の推論 autoによる非型テンプレートパラメータの宣言 フォールド式 かっこ付き初期化リストを持つauto推論の新しい規則 constexprラムダ インライン変数 入れ子になった名前空間 構造化されたバインディング 初期化子によるステートメントの選択 constexpr if C++17には、以下の新しいライ

    #Anthony Calandra / モダンC++の機能 | POSTD
    craf
    craf 2017/01/24
  • C++1z クラステンプレートのテンプレート引数推論 - Faith and Brave - C++で遊ぼう

    C++1zでは、クラステンプレートのテンプレート引数が推論されるようになります。 例として、冗長なコードになりがちなstd::lock_guardクラスを使用した以下のコードは、 std::mutex m1; void f() { std::lock_guard<std::mutex> lk(m); } C++1zでは以下のようにstd::lock_guardクラスのテンプレート引数を省略して書けるようになります: std::mutex m; void f() { std::lock_guard lk(m); } この場合、mの型からstd::lock_guardクラスのテンプレート引数の型が推論されます。 C++1zでは、コンストラクタの引数からクラステンプレートのテンプレート引数が推論されます。std::lock_guardクラスの場合、先程のコンストラクタは以下のような宣言になってい

    C++1z クラステンプレートのテンプレート引数推論 - Faith and Brave - C++で遊ぼう
    craf
    craf 2016/12/28
  • Give Visual C++ a Switch to Standard Conformance - C++ Team Blog

    This post was written by Gabriel Dos Reis, Phil Christensen, and Andrew Pardoe The Visual C++ Team is excited to announce that the compiler in Visual Studio 2017 RC will feature a mode much closer to ISO C++ standards conformance than any time in its history. This represents a major milestone in our journey to full ISO C++ conformance.  The mode is available now as an opt-in via the /permissive- s

    Give Visual C++ a Switch to Standard Conformance - C++ Team Blog
    craf
    craf 2016/12/28
  • C++ Advent Calendar 2016 - Adventar

    #このカレンダーは C++に関することなら、プロ向けでも初心者向けでも、ライブラリでもコア言語でも、実行時でもコンパイル時でも、なんでもOK! #初心者C++er Advent Calendar 2016との違い 基的に、こっちのカレンダーはC++に関連してるなら何でもありです。 初心者を対象 に書きたいときは、 初心者C++er Advent Calendar 2016 に書くといいかもしれません(初心者が読んでくれる可能性が高まります)。 #ルール このAdvent Calendarは担当日中に書けば良いものとします。つまり12月1日担当の人は12月2日になる前に公開すればOKです。言うまでもありませんが日時間です。UTC+9です。

    C++ Advent Calendar 2016 - Adventar
    craf
    craf 2016/12/28
  • C++er は“合法”だとか“違法”だとか言いたくて仕方がないけれど、結局どういう意味? それより適合・適格・○○動作・○○規則・診断不要いろいろの関係が謎 - Qiita

    ※conditionally-supported は C++03 の時点では存在しなかったので、その翻訳である JIS に対応する概念は現れません。この記事では今後便宜のため「条件付き対応」などと呼称することにします。 日語訳は何やら微妙なものが多いですね。外から見た動作 や 診断を必要としない はもっと用語っぽくした方が良いのではという気がします (観測可能動作 とか 診断不要 なんていうのはどうかな)。それから ○○の動作 の「の」もない方がそれっぽい気がします。 更に、検索してみると NDR の訳は以下のように発散していてまるで統一されていません。 JIS X 3014:2013 より 診断の必要はない 診断は不要とする 診断は要求されない 診断は,不要とする 診断は,必要としない 診断は,必要ない 診断を必要としない 診断メッセージは不要とする 診断メッセージは必要としない 診断

    C++er は“合法”だとか“違法”だとか言いたくて仕方がないけれど、結局どういう意味? それより適合・適格・○○動作・○○規則・診断不要いろいろの関係が謎 - Qiita
    craf
    craf 2016/12/28
  • 「unique_ptrにポインタ以外のものを持たせるとき」で話したことと話さなかったこと - クリアボックス

    歌舞伎座.tech#8「C++初心者会」で「unique_ptrにポインタ以外のものを持たせるとき」というタイトルで発表したが、この記事ではそのまとめと、追加の話題について述べる。 発表資料はここにある。 TL;DR std::unique_ptrはハンドルがポインタライクな型のリソースでしか使用できない。それに対して、C++標準委員会のペーパーN4189で提案されているunique_resourceを使えば、ポインタ以外のハンドルで扱われ、排他的に所有されるリソースを自動管理できる。 実際に使用できるunique_resourceの実装はここにある。 unique_resourceは普通、カスタムデリータを設定して使用するが、デリータオブジェクトのコピーと実行が強い保証を満たしていない場合は例外安全性を担保するのが困難、もしくはほぼ不可能である。 デリータ型がムーブ代入不可能の場合(ラム

    「unique_ptrにポインタ以外のものを持たせるとき」で話したことと話さなかったこと - クリアボックス
    craf
    craf 2016/12/21
  • コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記

    僕は先日、「コンパイル時Cコンパイラ」なるプログラムをつくって、公開した。 「コンパイル時Cコンパイラ」とは、コンパイルするとC言語プログラムのコンパイルが行われるというようなC++プログラムである。 C++のコンパイル中に C言語プログラムのコンパイルを行う、 "コンパイル時Cコンパイラ"をつくりました #ELVMhttps://t.co/kKiLU3rLFX— うどん (@kw_udon_) 2016年11月18日 自分で書いておいてなんだが、「なんのこっちゃ」という感じではある。(ちゃんと記事中で説明する。) 実際、変なプログラムではあるのだが、とても嬉しいことに多くの人に面白がっていただき、予想だにしなかった大きな反響をいただいた。 Hacker Newsで1位になったり、LLVMの公式ブログで紹介されたり、果てはC++の作者であるBjarne Stroustrupにも言及されるに

    コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記
    craf
    craf 2016/12/04
  • Online C++11 Compiler

    craf
    craf 2016/11/27
  • 2016年、C言語はどう書くべきか (後編) | POSTD

    (前編はこちら: 2016年、C言語はどう書くべきか (前編) ) (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) システム依存の型 まだ「32 bitのプラットフォームでは32 bitのlong型、64 bitのプラットフォームでは64 bitのlong型がいい」という不満があるようですね。 プラットフォームに依存する2つの異なるサイズを使うため、 故意に コードを難しくすることを考えたくなければ、システム依存の型のために long を使おうとは思わないでしょう。 この状況では、プラットフォームのためにポインタ値を保持する整数型、 intptr_t を使うべきです。 モダン32-bitプラットフォームでは、 intptr_t は int32_t です。 モダン64-bitプラットフォームでは、 intptr_t は int64_t です。 int

    2016年、C言語はどう書くべきか (後編) | POSTD
    craf
    craf 2016/11/24
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
    craf
    craf 2016/11/24
  • C/C++はnull安全になる前に安全に差の絶対値を計算できるようになるべきではないか - Qiita

    Caution 記事中で符号なし整数の演算結果が負になる場合の挙動をUBとして紹介していますが、定義された動作でした。 N4318の As can be seen, per the standard the negative result wraps around from the maximum positive value for the simple minus operation の文章ちゃんと読んで、執筆時の私・・・ はじめに 最近、ツイッターを見ていると、プログラマの間でnull安全という言葉がバズっていますね。私も次のようなエントリを楽しく眺めていた訳です: null安全でない言語は、もはやレガシー言語だ null安全はいいぞ。だって、型安全はいいぞ。 null安全を誤解している人達へのメッセージ さてそんな中、少しだけ私の心に留まったエントリがこれです: null安全な言語

    C/C++はnull安全になる前に安全に差の絶対値を計算できるようになるべきではないか - Qiita
    craf
    craf 2016/11/24
  • Lock-Free Multi-Producer Multi-Consumer Queue on Ring Buffer | Linux Journal

    Nowadays, high-performance server software (for example, the HTTP accelerator) in most cases runs on multicore machines. Modern hardware could provide 32, 64 or more CPU cores. In such highly concurrent environments, lock contention sometimes hurts overall system performance more than data copying, context switches and so on. Thus, moving the hottest data structures from a locked to a lock-free de

  • Google Mock:はじめの一歩

    CodeZineでgtest(Google Test)を紹介したのは4年も前のこと。ひさしぶりにgtestのGitHubを覗いてみたらgtest 1.8.0がリリースされていました。この版の以前との大きな違いは"Mockのサポート"のようです。C++でMockを提供してくれるUnit Test Frameworkはそんなに多くはなかったと記憶しています。 Google製Mockの使い心地を試してみることにしました。 『Google製のC++ Unit Test Framework「Google Test」を使ってみる』(CodeZine) google/googletest(GitHub) Mockとは Unit Testは通常低いレイヤの関数/クラスから行われます。関数f()をテストするとき、f()がg()を呼んでいるなら、まずg()をテストして正しく動いてくれることを確認してからでない

    Google Mock:はじめの一歩
  • Building your C++ application with Visual Studio Code - C++ Team Blog

    Get notified in your email when a new post is published to this blog Did you know that you can build and debug C++ projects in Visual Studio Code with your compiler and debugger of choice? Although VS Code is a light-weight editor, you can set it up to resemble a full IDE, customizing IntelliSense, build, and debug configurations for your environment. There are two recommended approaches for build

    Building your C++ application with Visual Studio Code - C++ Team Blog
  • C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD

    私は多くの小規模プロジェクトで Make を使ってきましたが、より大きな規模のプロジェクトになると、それは非常にうんざりするようなものでした。最近までは、自分のビルドシステムに行いたいことが4つあったのですが、Makeでの方法が分かりませんでした。 out-of-sourceビルド(オブジェクトファイルが、ソースとは分離されたディレクトリにダンプ出力されます) 自動生成される(かつ正確!)ヘッダの依存関係 オブジェクト/ソースファイルのリストの自動的な決定 インクルードディレクトリのフラグの自動生成 以下にこれらの全てを行える、C、C++、およびアセンブリで動作するシンプルなMakefileを紹介します。 MAKEFILE TARGET_EXEC ?= a.out BUILD_DIR ?= ./build SRC_DIRS ?= ./src SRCS := $(shell find $(S

    C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD
    craf
    craf 2016/09/27
  • 高速なハッシュテーブルを設計する | POSTD

    (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) はじめに 稿では、高速で汎用的なハッシュテーブルを作るために行う、設計についての多くの意思決定事項を紹介します。最終的に、私の emilib::HashSet とC++11の std::unordered_set の間のベンチマークが出来上がりました。もし、ハッシュテーブルに興味があって、自分で設計したいなら(どのプログラミング言語かに関わらず)、稿がヒントになるかもしれません。 ハッシュテーブル は、素晴らしい発明です。 ならし計算量O(1) ( O(√N)時間 )で、挿入、削除、検索を行うことができます。ならし計算量とは、ハッシュテーブルの計算に平均でO(1)の計算量がかかることを意味しますが、時々、これよりも多くの時間がかかる場合があります。具体的には、ハッシュテーブルに空きがない場合で、挿入の

    高速なハッシュテーブルを設計する | POSTD
  • 【速報】Vcpkg: Windowsの公式C++ライブラリ管理ツール|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 昨日のVisual C++ Team Blogで、Vcpkgというライブラリ管理ツールが公開されました。 Linuxのapt-get、yumやMacのHomebrewなどのパッケージ管理ツールを強く意識していますが、マイクロソフトが公式に運営する点が大きいと思います。 GitHubリポジトリも合わせて公開されていますので、そこにあるFAQの概要をご紹介します。いずれ公式のドキュメントが日語化されると思いますので、詳しくはそちらをどうぞ。私が翻訳してよければやりますがw VcpkgのFAQより抜粋 Vcpkgとは、C++で書かれたオープンソースライブラリをWindows上で入手・リビルドするツールです。 誰でも貢献できる ガイドライン(英語)に従って、誰でも自分のライブラリをアップするなどして貢献できるとのことです。たぶん貢献をすっごく期

    【速報】Vcpkg: Windowsの公式C++ライブラリ管理ツール|TechRacho by BPS株式会社
  • C90, C99, C11, C++98, C++11で異なる動作をするコード | POSTD

    (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) C言語の規格のリビジョン間には微妙な違いがありますが、このことを利用して「C90、C99、C11のどれとしてコンパイルされたかどうかにより、違う挙動をする」というプログラムを作ることが可能です。同様に、C++はほぼC言語の上位互換ですが、C言語とC++で違った結果を生み出すプログラムも存在します。 これは2015年の International Obfuscated C Code Contest (難読Cコード・国際コンテスト)への Don Yangの投稿 において、 C89、C99、C11、C++98、C11のどれとしてコンパイルされるかによって異なる出力を生成するプログラムを作成するのに使われています。C90の場合は、以下のような星形を出力します。 **************************

    C90, C99, C11, C++98, C++11で異なる動作をするコード | POSTD
    craf
    craf 2016/09/20