Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
以下はC++03のinsertの原理である。 template < typename T > class container { private : alignas(T) char storage[ sizeof(T) ] ; T * ptr = nullptr ; public : void insert( const T & x ) { ptr = ::new(storage) T( x ) ; } } ; insertとは、何らかの方法で確保されたストレージ上に、オブジェクトを構築するのだ。placement newを使えば、任意の生のストレージ上に、オブジェクトを構築することができる。 push_backのようなメンバーは、insertのやや特殊なものである。 C++11では、ムーブセマンティクスを取り入れたため、insertにはrvalueリファレンスをとるものが追加された。 v
なんか、こじらせた。 これだけではLispになりませんが、もだった材料はそろうみたいなので、できそうな気がします。たぶん。 #include <iostream> // 等値 template<typename T, typename U> struct Eq { static const bool condition = false; }; template<typename T> struct Eq<T, T> { static const bool condition = true; }; // 論理和 template<typename T, typename U, bool cond = T::condition> struct Or; template<typename T, typename U> struct Or<T, U, true> { static const bo
激しく今更感ありますが、Linuxのターミナル等で動くTwitterクライアントを作ってみました。 (Update 2014-07-25) Windows環境(MSYS2のminttyなど)でも使用できます。 単純な投稿と検索とホーム表示という一応最低限な実装はしています。 1ラインで投稿とかできるので、cronと併用してBOT的な使い方もできます。 Githubにコードを置いたので、実際のコードはここを見てください。 https://github.com/chromabox/cmdline_twitter あと、バイナリはありません。各自アプリのキーをとってきてコンパイルしてください。 ライセンスは一応MITライセンスになってます。 一応テストはしましたが、未保証です。 事の経緯 c++でTwitterクライアントを実装する場合は多分すでに良いライブラリがありそうですが、自分で色々理解し
C++14には、decltype(auto)が追加された。これは、autoと似ているが、微妙に違う。decltype(auto)は、初期化子の式をdecltype()の中に書いたのと同じ挙動をする。 つまり、以下のようになる。 int i = 0 ; int && f() ; auto a1 = i ; // int decltype(auto) a2 = i ; // int auto b1 = (i) ; // int decltype(auto) b2 = (i) ; // int & auto c1 = f() ; // int decltype(auto) c2 = f() ; // int && 単に、初期化子の式がiの場合は、autoもdecltype(auto)も変わりはない。 初期化子の式が(i)の場合は、型が違ってくる。なぜならば、括弧で囲った式は、decltype指定
この記事は Vim Advent Calendar 269 日目の記事になります. きつねさんとおぼえる!Clang という本を読んでいて,clang 周りで色々役立ちそうなツールがあることを知ったので,その中でも C や C++ のソースコードを整形する clang-format というツールの Vim への応用について書きます. clang-format とは clang-format とは,入力した C や C++(Objective-C は未確認)のソースコードを一定のルールに従って自動整形して出力してくれるツールです.clang の静的解析機能を使っています.インストールは LLVM project の clang のサイトを参照してください. 例えば,次のようなソースコードがあったとします. #include <iostream> #define TEST_CPP_FOR_OP
GCC, the GNU Compiler Collection - GNU Project - Free Software Foundation (FSF) GCC 4.9がリリースされた。少なくとも、公式Webサイトのトップページからは、リリースされたことになっている。ただし、なぜかリンクをたどると GCC 4.9 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) GCC 4.9がリリースされた。興味深い変更点を上げると。 大昔の、もはや保守もテストもされていないようなプラットフォームのサポートがobsolete扱いになった。もし、活発な活動が行われない場合、次のリリースでは取り除かれるそうだ。特に、Solaris 9が挙げられている。 Cla
2017/6/3に開催されたUnity道場 博多スペシャルの講演スライドです。 講師:安原 祐二(ユニティ・テクノロジーズ・ジャパン合同会社) 講演動画:https://youtu.be/uKWLPU8gfIY 知ってはいるけれどピンとこない、知ってはいるけれどピンとこない、そんなクォータニオンについて基本となる概念からたっぷりと、丁寧に説明していきます。行列についても解説しますので、これからシェーダプログラミングに取り組もうとするエンジニアにも役に立つ内容です。数学に苦手意識のある人も、この機会にマスターしてしまいましょう! こんな人におすすめ ・プログラマ全般および数学に興味のある人 受講者が得られる知見 ・クォータニオンの意味 ・行列とクォータニオンの関係 ・数学的な背景 Unityのイベント資料はこちらから: https://www.slideshare.net/UnityTech
Variadic Templatesである。Variadic Templatesとは、そもそも何か。 Variadic functionというものがある。最も身近な例は、printfである。 int printf ( char const * format, ... ) ; printf( "number: %d, string: %s", 123, "hello" ) ; このように、任意の数の引数をとることができる関数を、Variadic functionという。 Variadic Templatesは、任意の数の、テンプレート引数を取れるテンプレートである。 これまで、型安全に任意の数の引数を取る方法はなかった。もちろん、関数はオーバーロードできる。 template < typename T1 > T f( T1 const & t1 ) ; template < typename
Getting Lazy with C++ Posted by Bartosz Milewski under Atomics, C++, Concurrency, Functional Programming, Metaprogramming, Monads, Multithreading, Parallelism, Programming [38] Comments Lazy evaluation can be a powerful tool for structuring your code. For instance, it can let you turn your code inside out, inverting the flow of control. Many a Haskell program take advantage of laziness to express
Streams is a C++14 library that provides lazy evaluation and functional-style transformations on the data, to ease the use of C++ standard library containers and algorithms. Streams support many common functional operations such as map, filter, and reduce, as well as various others. Please see the API reference for complete details. To use streams download them from Github. To use, simply #include
C++14で導入されるdecltype(auto)を使うと、returnとreturn (…)で戻り値の型が変わる。前者は値、後者は参照となる。 decltype(auto) f() { static int value = 3; return value; } decltype(auto) g() { static int value = 3; return (value); } int main() { int f_result = f(); int& g_result = g(); } 参照 C++11/14 and return( … ) vs return - StackOverflow C++14 通常の関数の戻り値型を推論
1. 中3女子でもわかる! constexpr Boost.勉強会 #7 bolero_MURAKAMI 2011/12/3 2. ◆⾃⼰紹介 • 名前 : 村上 原野 (むらかみ げんや) @bolero_MURAKAMI, id:boleros • 棲息地: ⼤都会岡⼭ • 仕事 : 猪⾵来美術館陶芸指導員 ・普段はやきものの修⾏をしたり、 縄⽂⼟器をつくったりしています ・趣味は constexpr です 3. ◆⾃⼰紹介 • 好きな C++11 の機能: constexpr • 嫌いな C++11 のキーワード: constexpr • 次期 C++ で強化されてほしい機能: constexpr • 次期 C++ で消えてほしいキーワード: constexpr
1. はじめに 本ページでは、精度保証付き数値計算を行うためにC++で作成した ライブラリ群を公開している。 特に非線形計算の精度保証を行うとき、template機能によって 複雑な数値型をすっきり記述でき、なおかつ "zero-overhead principle" で 計算速度が遅くならないC++は、非常に適していると言える (ほぼ唯一無二であると作者は考えている。)。 精度保証付き数値計算とkvライブラリの概要については、 このスライドを見て欲しい。 kv-intro.pdf (全84ページ) 2007年秋頃~2013年春頃の間は、区間演算を行うのにboostに含まれている intervalライブラリを用いて開発していたが、 boost.intervalは残念ながら不完全な部分が多く ライブラリ本体に手を入れざるを得なかった。 boost全体がアップデートする度にinterval部分
coe は次数 i ごとの任意の係数, radix は基数. 具体的には std::vector の template 引数に coe を指定し配列の添え字を i とする. 実装 準備 まずクラスに与えられるべき必要な template parameters を確認する. template< class UInt = std::uint16_t, class DoubleUInt = std::uint32_t, class DoubleInt = std::int32_t, DoubleUInt BitNum = sizeof(UInt) * CHAR_BIT > class integer; class UInt = std::uint16_t ここには coe の型を指定する. coe で表現できる最も大きな値 + 1 が radix になる. class DoubleUInt =
江添亮 仕事: C++エヴァンジェリスト(ドワンゴ) http://cpplover.blogspot.jp/ boostcpp@gmail.com GitHub: EzoeRyou Themes Sky - Beige - Simple - Serif - Night - Default Transition Styles Cube - Page - Concave - Zoom - Linear - Fade - None - Default C++のメモリの種類 静的ストレージ スレッドストレージ 自動ストレージ 動的ストレージ 静的ストレージ 名前空間スコープの変数 static指定されたクラススコープ 関数のブロックスコープの変数など よくある実装例 プログラムファイルに格納 例:ELFにおける.dataや.bss スレッドストレージ thread_local指定された変数 よく
C++11の文法と機能(C++11: Syntax and Feature) Copyright (C) 2013 江添亮. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GN
Game Programming PatternsBehavioral Patterns Intent Give behavior the flexibility of data by encoding it as instructions for a virtual machine. Motivation Making games may be fun, but it certainly ain’t easy. Modern games require enormous, complex codebases. Console manufacturers and app marketplace gatekeepers have stringent quality requirements, and a single crash bug can prevent your game from
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く