2014-05-01から1ヶ月間の記事一覧
はじめに お勉強のために Eqを創ってみる 型クラスとは 私は現時点では「Concept」のようだという印象を受けております 「その型(クラス)はどの関数で使用できるのか」とドキュメントであり かつ静的チェッカーの役割を担っているものだと Eqとは? 等価性を…
知った事など 継承させる struct Base1{}; struct Base2{}; // すべての型引数を継承 template<typename... Args> struct Derived : Args... { int a; }; int main(){ Derived<Base1,Base2> a; } mapして包含する(直接保持は無理) struct Base1{}; struct Base2{}; template<typename... Ts> struct holder</typename...></base1,base2></typename...>…
途中経過 http://melpon.org/wandbox/permlink/iKjxuweUPGP5Py9x
tuple_n<int,3>でtuple<int,int,int>になる型エイリアス http://melpon.org/wandbox/permlink/2WpxZNuDV1qNTrX2 使い所不明です</int,int,int></int,3>
std::map<T,U&> 知らなかった http://melpon.org/wandbox/permlink/0DxxCiaJpUKWw9nJ</t,u&>
function templateの型推論 function templateでは関数呼び出し時の引数によって型が推論されます template<typename T> T pow(T a,T b) return (b!=1) ? a : pow(a*a,b-1); } main(){ int a=3,b=3 pow(a,b); //pow<int>と推論される } class templateの型推論できない? 一方</int></typename>…
g++ではtype_info::name()で出力される 型名が人類には早すぎる文字列で出力されています #include<iostream> #include<typeinfo> int main(){ std::cout << typeid([](int)->int{}).name() << std::endl; // 型直接渡してもよい std::cout << typeid(int).name() << std::endl; </typeinfo></iostream>…
最近、boost::any、boost::shard_ptrの実装やBoost.TypeErasureの仕様書などを見て、 構造化され、ネストされた構造体や関数の中に「型安全の世界」があることにようやく気がつき始めました。 (情報科学ではこういうことを学ぶのでしょうか?) 何言ってる…
その1はどこ? その1(auto-delete)に関しては私が書く必要がないので省略する 本題 動的ポリモーフィズムをするときに役立つ特性を持っています 生ポインタで動的ポリモーフィズムするときにめんどくさい事 struct Base{}; struct Derived : Base {}; int…
メモ http://melpon.org/wandbox/permlink/E4zsyZ3fo2p9VBYq
部分特殊化したときのtypename Tは何型なのか? // template<typename T> class A { vector<T> v_; }; // 引数がポインタの場合 template<typename T> class A<T*> { vector<T*> v_; }; // 引数がT constの場合 template<typename T> class A<T const> { //vecotr<T const> v_ // これはill-formed vector<T> v_; }; int main() { A<int></int></t></t></t></typename></t*></t*></typename></t></typename>…
ただの雑感です 最近C++やC#以外の言語を調べているので、その中で「良いな~」と思ったものを 適当にリストアップしてみました switch-caseの亜種 GoやHaxeのswitch-caseは基本的にbreakが要らない仕様になっています わざわざ書かなくても勝手に排他的制御…