Skip to content

Instantly share code, notes, and snippets.

View bolero-MURAKAMI's full-sized avatar

Bolero MURAKAMI bolero-MURAKAMI

View GitHub Profile
namespace std {
// 24.7, range access:
template <class C> auto begin(C& c) -> decltype(c.begin())
{ return c.begin(); }
template <class C> auto begin(const C& c) -> decltype(c.begin())
{ return c.begin(); }
template <class C> auto end(C& c) -> decltype(c.end())
{ return c.end(); }
template <class C> auto end(const C& c) -> decltype(c.end())
{ return c.end(); }
C++1y標準ライブラリ関数のconstexpr指定の検討
Auther: Bolero MURAKAMI
URL: https://gist.github.com/bolero-MURAKAMI/9283758
* モチベーション
C++14 では、constexpr関数の制限緩和をはじめとして、constexprについて多くの機能が強化・改善された。
 墓の下で妹が死んでいる。
 血を吐いて死んだぼくの妹は、中学の制服ごと化学的に徹底的に分解されつくして、最後は塩みたいなひとにぎりの白い結晶になった。
 それはかつて妹の肉体を構成していた分子には違いなかったけれど、そこに二一グラムもの魂が残っているとはとても思えなかった。
 魂なんてものを当然ぼくは信じていない。けれど唯一神を信じていなくたってクリスマスは祝うし、地元の神社にまつられている神さまの名前さえ知らなくても初詣には行く。墓参りもおなじことだ。実在するかどうかよりも、想いだすきっかけにさえなる物ならなんでも構わない。
 だとしても、均質で清潔なさらさらした結晶の中に妹のおもかげを想像することは難しかったし、両親もそれには同意した。かつて妹だった結晶は、家族みなの合意のもと共同収納所にしまいこまれて、ほかのたくさんの死者たちの白い結晶と見わけがつかなくなった。だから、そこに妹の墓はない。
 いま『死んだ妹』として存在するのは、物質的ななにかじゃなく、もちろん魂でもなかった。
 ぼくはオルタナを起動して〈墓地〉にアクセスする。
 拡張視覚が展開されて、からっぽだった空間をピンクの壁紙の部屋が上書きする。机のうえでPCのアクセスランプが青く点滅している。妹の部屋だ。死んだ妹の部屋のまんなかに、ぼくと妹がむかいあっている。
「兄さんおひさ。見ないうちに老けた? その髭、すっごい似合わないんだけど」
「そりゃショックだ……ぼくはけっこう気に入ってるんだが」

 墓の下で妹が死んでいる。  血を吐いて死んだぼくの妹は、中学の制服ごと化学的に徹底的に分解されつくして、最後は塩みたいなひとにぎりの白い結晶になった。  それはかつて妹の肉体を構成していた分子には違いなかったけれど、そこに二一グラムもの魂が残っているとはとても思えなかった。  魂なんてものを当然ぼくは信じていない。けれど唯一神を信じていなくたってクリスマスは祝うし、地元の神社にまつられている神さまの名前さえ知らなくても初詣には行く。墓参りもおなじことだ。実在するかどうかよりも、想いだすきっかけにさえなる物ならなんでも構わない。  だとしても、均質で清潔なさらさらした結晶の中に妹のおもかげを想像することは難しかったし、両親もそれには同意した。かつて妹だった結晶は、家族みなの合意のもと共同収納所にしまいこまれて、ほかのたくさんの死者たちの白い結晶と見わけがつかなくなった。だから、そこに妹の墓はない。  いま『死んだ妹』として存在するのは、物質的ななにかじゃなく、もちろん魂でもなかった。  ぼくはオルタナを起動して〈墓地〉にアクセスする。  拡張視覚が展開されて、からっぽだった空間をピンクの壁紙の部屋が上書きする。机のうえでPCのアクセスランプが青く点滅している。妹の部屋だ。死んだ妹の部屋のまんなかに、ぼくと妹がむかいあっている。 「兄さんおひさ。見ないうちに老けた? その髭、すっごい似合わないんだけど」 「そりゃショックだ……ぼくはけっこう気に入ってるんだが」

// ループ用変数を定義
size_t n = end - begin;
size_t s = v.size(); // vは、メンバ変数として保持される、`vector<result_type>`型のシード列オブジェクト
auto m = max(s + 1, n);
// 分布用変数を定義
auto t = (n >= 623) ? 11 : (n >= 68) ? 7 : (n >= 39) ? 5 : (n >= 7) ? 3 : (n - 1) / 2;
auto p = (n - t) / 2;
auto q = p + t;

Sprout C++ Libraries

Welcome to the Sprout C++ Libraries

C++11 constexpr based Containers, Algorithms, Random numbers, Parsing, Ray tracing, Synthesizer, and others.
###############################################################################
Sprout C++ Libraries
###############################################################################
*******************************************************************************
Welcome to the Sprout C++ Libraries
*******************************************************************************
| C++11 constexpr based Containers, Algorithms, Random numbers, Parsing, Ray tracing, Synthesizer, and others.

all_of

Interface

C++

template<typename InputIterator, typename Predicate>

// サンプル数 : デフォルト = 44100
#ifndef CMP_SAMPLE
# define CMP_SAMPLE 44100
#endif
// 長さ[sec] : デフォルト = 1
#ifndef CMP_LENGTH
# define CMP_LENGTH 1
#endif
#if defined(COMPOST_LOADING_SOURCE_VERSION)
COMPOST_SRC_VERSION(0)
#elif defined(COMPOST_LOADING_SOURCE_INFO)
1,
1,
44100,
88200,