タグ

c++に関するnharukiのブックマーク (198)

  • Nifty Fold Expression Tricks

    template <typename H, typename ... T> auto add(H head, T... tail) { return (head + ... + tail); // expands to: head + tail[0] + tail[1] + ... } If we’re willing to abuse operator evaluation rules and fold expressions, we can do a lot more. This blog posts collects useful tricks. Whenever possible, we should process a parameter pack with fold expression instead of using recursion: It is less code t

    Nifty Fold Expression Tricks
    nharuki
    nharuki 2020/05/06
    人類にfold expressionは早すぎる・・・
  • 【C++】iterator_traitsに準拠する方法 - std::iteratorの問題と非推奨への対応

    iterator_traits std::iterator_traitsはイテレータの型情報やカテゴリを表現する型特性クラスです。 #include <iterator> template<class Iterator> struct iterator_traits { using difference_type = typename Iterator::difference_type; // 減算演算時の型 using value_type = typename Iterator::value_type; // 値型 using pointer = typename Iterator::pointer; // ポインタ型 using reference = typename Iterator::reference; // 参照型 using iterator_category = typ

    nharuki
    nharuki 2019/12/09
  • C++ Core Guidelines タイトル日本語訳 - Qiita

    C++ Core Guidelinesの各ルールのタイトルの日語訳です。 間違いを見つけた場合は編集してもらえると助かります Core Guidelinesがそれなりに高頻度で更新されているので、以下のルールのリストや原文は古い可能性があります ただし、Core Guidelinesは機械的にチェックして警告を出すことも行われているので、ルールが消滅することは稀だと思われます Abstact 和訳 In: Introduction / 導入 (略) P: Philosophy / 指針 P.1: Express ideas directly in code (アイデアをコードで直接表現する) P.2: Write in ISO Standard C++ (ISO標準C++で書く) P.3: Express intent (意図を表現する) P.4: Ideally, a program

    C++ Core Guidelines タイトル日本語訳 - Qiita
    nharuki
    nharuki 2019/10/25
  • C++標準ライブラリの数学定数への道のり - Faith and Brave - C++で遊ぼう

    P0631R8 Math Constants C++20で数学定数が入ることが決まりましたね。やっと標準ライブラリの範囲で円周率を定数として使えるようになります。 ここまでの道のりですが、 constexpr (C++11) 変数テンプレート (C++14) インライン変数 (C++17) 数学定数 (C++20) とても長かったですね。 #include <iostream> #include <numbers> template <class T> T degree_to_radian(T x) { return x * std::numbers::pi_v<T> / static_cast<T>(180.0); } int main() { float y = degree_to_radian(90.0f); std::cout << y << std::endl; // 1.570

    C++標準ライブラリの数学定数への道のり - Faith and Brave - C++で遊ぼう
    nharuki
    nharuki 2019/08/22
    涙なしでは語れない
  • C++のWebフレームワーク oat++ を試す | DevelopersIO

    C++のWEBフレームワークoat++を使って、REST風のAPIサーバーを試してみました。外部ライブラリの依存関係がなく手軽に試すことができました。 はじめに 福岡のyoshihitohです。先日 GitHubTrending でC++のWebアプリケーションフレームワークの oat++ が紹介されていました。C++のフレームワークは珍しいなーと思い、どんな感じか試してみました。 oatpp-examples のリポジトリで色んなサンプルが紹介されています。今回は crud を参考にREST風のAPIサーバーを作ってみます。 検証環境 macOS: 10.13.6 Command Line Tools for Xcode: 10.0.0.0.1.1535735448 Premake: 5.0 alpha 13 CMake: 3.9.0 oat++? 特徴 公式サイトによると以下の特徴が

    C++のWebフレームワーク oat++ を試す | DevelopersIO
  • 4つのauto、4つのC++規格 - Qiita

    template <auto N> auto func(auto x) { auto r = N + x; return r; } // 呼出し例 assert( func<1>(0.5) == 1.5 ); この記事では、C++言語仕様改定により導入された各autoキーワードの役割を説明します。同時に、該当用法が存在しなかった時代でもコンパイル可能なソースコードへの書換えも行います。 C++20時代 C++20では 関数パラメータ型にautoを書ける ようになります。これはC++言語仕様へのコンセプト(Concept)導入とともに追加された、関数テンプレート定義の短縮記法 です。

    4つのauto、4つのC++規格 - Qiita
    nharuki
    nharuki 2019/03/25
    “C++20では 関数パラメータ型にautoを書けるように”
  • Twitterで話題のC++ quiz time!の解説を誰も書かないので書く - Qiita

    問題 C++ quiz time! Without checking, what does this print (assume an LP64 / LLP64 system): short a = 1; std::cout << sizeof(+a)["23456"] << std::endl; — Richard Smith (@zygoloid) March 18, 2019 こんなツイートが人気を博していた。 #include <iostream> #include "typename.h" int main() { short a = 1; std::cout << sizeof(+a)["23456"] << std::endl; } 答えは四択で1,3,4,6のどれですか?というもの。 だれか解説書くだろと思ったが、みんなTwitter上で満足してしまったらしい(見落としてた

    Twitterで話題のC++ quiz time!の解説を誰も書かないので書く - Qiita
    nharuki
    nharuki 2019/03/25
    “6”・・・だまされたンゴ
  • C++ Insights

    C++ Insights - See your source code with the eyes of a compiler.

    C++ Insights
    nharuki
    nharuki 2019/03/06
    C++の糖衣構文をコンパイラが実際に解釈している文に置き換えるサービス
  • プログラミング言語Rustのススメ - Qiita

    導入 皆さんこんにちは。趣味Rustを使ってコンパイラを作ってるらいパン粉です。 プログラミング言語Rustの良さを雑にあっぴるしていきます。 では、早速cargo run!(このコマンドでRustのプログラムが実行される) C,C++のコードが出てくるので覚悟してください。 Rustとは Mozillaが応援している言語 Microsoftも注目している 2006年から開発が始まった新しめの言語 2016年、2017年、2018年のStack Overflow Developer Surveyで「最も愛されているプログラミング言語」で一位を獲得している C/C++と同等の処理速度 C/C++の代替えを目指している 静的に型が付く、コンパイラ言語 静的に変数の寿命もわかり、自動でメモリを解放(GCより速い!) 関数内部限定での極めて賢い型推論 C/C++と比べて極めて安全 オブジェクト指

    プログラミング言語Rustのススメ - Qiita
  • Announcing JFrog Artifactory Community Edition for C/C++

    Today, JFrog announces a great new release for the Conan ecosystem: JFrog Artifactory Community Edition for C/C++, a completely free of charge server for Conan repositories. This product provides all the power and flexibility of the Artifactory repository for Conan and generic binaries to the entirety of the Conan community for any team’s needs. JFrog Artifactory has been on the market for 10 year

    nharuki
    nharuki 2018/03/29
    WebUI付きConanサーバ“JFrog Artifactory Community Edition for C++”がでた!
  • C++完全理解ガイド Rev1.4.01 - Qiita

    はじめに C++を完全理解したので完全理解ガイドを書く。 最初に言っておくがタイトルは詐欺で、実際はポエムである。 僕は仕事C++を書いたことはないのでなんか変なことを言っているかも知れない。 ところで無職になったので、普通にC++で職がほしい。 2018年6月から受託で仕事をもらい、毎日C++17を書いています。 2018年9月から雇用され、毎日C++17を書いています。 かなり雑に書いているはずなので、コメント等でどんどんマサカリを投げてほしい。 僕は何者か 工学部を卒業して4年ほど高校の理科教師をやっていたが、現在無職になった人。 工学部を卒業して4年ほど高校の理科教師をやっていた。 最初は良かったのですが、授業に慣れ、このまま自分の成長が止まってしまうのかとなぁと思い、辞めて無職に。 一ヶ月無職を楽しんだあと、某から受託でC++を書く仕事をもらい、C++17を書いている。 主にツ

    C++完全理解ガイド Rev1.4.01 - Qiita
    nharuki
    nharuki 2018/03/28
  • Compiler Explorer

    Add new...Clone CompilerExecutor From ThisOptimizationStack UsagePreprocessorASTLLVM IROpt PipelineDeviceRust MIRRust HIRRust Macro ExpansionGHC CoreGHC STGGHC CmmGCC Tree/RTLGNAT Debug TreeGNAT Debug Expanded CodeControl Flow Graph

    Compiler Explorer
    nharuki
    nharuki 2018/03/28
    リアルタイム&インタラクティブアセンブラ
  • volatileが必要な場面を見つけ出す

    1#include<signal.h> 2 3sig_atomic_t interrupted; 4 5void sigint_handler(int signum){ 6 interrupted = 1; 7} 8 9int main(){ 10 signal(SIGINT, sigint_handler); 11 while(!interrupted){ 12 [何かの処理] 13 } 14 return 0; 15} このコードは sig_atmoic_t interrupted にvolatileが付いていないので最適化するとバグります。 main()からの読み取りは、コンパイラの最適化によって削除されてしまう可能性がある。 真っ先に思ったこと:「知らねぇぇぇ・・・ & なんで??」 最適化によって削除されたり、変更されたりする変数を把握することができません。 **つまり、vola

    volatileが必要な場面を見つけ出す
    nharuki
    nharuki 2018/02/20
    回答も有用だがそれ以上にその先のディスカッションが有用
  • C++コードのデトックス - Qiita

    -pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused project(detox) cmake_minimum_r

    C++コードのデトックス - Qiita
  • Kaitai Struct: declarative binary format parsing language

    Reading and writing binary formats is hard, especially if it’s an interchange format that should work across a multitude of platforms and languages. Have you ever found yourself writing repetitive, error-prone and hard-to-debug code that reads binary data structures from files or network streams and somehow represents them in memory for easier access? Kaitai Struct tries to make this job easier

    nharuki
    nharuki 2017/11/14
    バイナリフォーマットデータのパーサジェネレータ
  • Effective Modern C++ メモ - Qiita

    自分にとっての要点メモ。 Effective C++の著者のScott MeyersによるC++11/14の定番(らしい) ※知らずに買ったら英語だったので、なんとか通読しましたが理解は随所怪しいと思われます。誤りは是非ご指摘ください。 2015/11/02追記: 日語版が出ています。稿は日語訳が出る前に書いたのなので目次の訳は一致しません。ご注意ください。 https://www.oreilly.co.jp/books/9784873117362/ 第1章: 型推論 autoやdecltypeによる型推論はコードの冗長性を減らす強力な機構だが、型推論の動きをしっかり理解していないとmodern C++での効率的なプログラミングはほぼ不可能。 1: テンプレート型推論を理解しろ 関数テンプレートtemplate<typename T> void f(ParamType param)

    Effective Modern C++ メモ - Qiita
    nharuki
    nharuki 2017/11/10
  • vector の話 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    vector は vector に対して特殊化されていて、領域を無駄にしないように、ビット単位で格納されるようになっています。 これは使用する領域が少なくなる反面、 &v[0]+i == &v[i] であるという、vector としての特徴の一つを満たさなくなってしまいます。 他にもいくつか、bool 以外の vector と異なる動作をする箇所があります。 そのため、Twitter掲示板等で vector の話が出るたびに必ずといっていいほど「あれは使うな。失敗作だ」とか「あれはもう忘れろ」という趣旨の発言が見られます。 そういった場面に遭遇するたびに自分は微妙な気分になります。 実際のところ、「大量のビットを格納したいけれどもメモリを無駄にしたくない」という状況がある*1とき、vector 以外の選択肢はどの程度あるんでしょうか? まず自分で作るという選択肢、これはほとんどの場合は

    vector の話 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
    nharuki
    nharuki 2017/10/26
    std::vector<bool>の注意点。注意点さえ把握していればどうという事はない
  • Introducing Abseil, a new common libraries project

    The latest news from Google on open source releases, major projects, events, and student outreach programs. Today we are open sourcing Abseil, a collection of libraries drawn from the most fundamental pieces of Google’s internal codebase. These libraries are the nuts-and-bolts that underpin almost everything that Google runs. Bits and pieces of these APIs are embedded in most of our open source pr

    Introducing Abseil, a new common libraries project
    nharuki
    nharuki 2017/09/27
    Google謹製汎用C++ライブラリ
  • C++メタ関数のまとめ - Qiita

    メタ関数とは? メタ関数とは、コンパイル時に型情報を取得できる関数のようなもの 実際には、関数の形を取らず、クラスになっていることがほとんどだが 関数にすることもできる 例えば型Tと型Uが同一かどうかを確かめたい場合は とすれば is_sameはT,Uが同じ型ならネストされたメンバ変数valueはtrue T,Uが違う型ならfalseを返す 他には、どのようなことができるのか? 標準ライブラリを見ていこう! 標準ライブラリ<type_traits>のメタ関数一覧 メタ関数はC++11から追加された標準ライブラリ<type_traits>に定義されている C++14ではis_nullptr とis_finalが仲間入りした C++17からはis_literal_type、が非推奨になる また、 has_unique_object_representations、 is_swappable_w

    C++メタ関数のまとめ - Qiita
    nharuki
    nharuki 2017/08/08
    メッタメタにしてやんよー
  • Conan 2.0: C and C++ Open Source Package Manager

    It works in all operating systems including Windows, Linux, OSX, FreeBSD, and others, and it can target any platform, including desktop, server, and cross-building for mobile (Android and iOS), as well as embedded and bare metal devices. It integrates with other tools like Docker, MinGW, WSL, and with all build systems such as CMake, MSBuild, Makefiles, Meson, SCons. It can even integrate with any

    nharuki
    nharuki 2017/07/19
    C++開発向けパッケージマネージャ