忍者ブログ

どっかのゆとりのチラシの裏

plasma_effectのメモ帳的ブログのようなsomething

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

不完全なStrongTypedef

自分でも何言ってるかわからないがStrongTypedefもどきができた。
以下のコード。
template<class Ty>class typedef_ :public Ty
{
public:
template<class... Ts>explicit typedef_(Ts... args) :Ty(args...){}
};


付け焼き刃感漂うっていうか実際付け焼き刃だし。
DXライブラリのラッパーライブラリ作るときにほぼ同じ構成のクラスがあったので作ってみた。
単純にpublic継承しただけ。なんだこれは。
ていうか普通にアップキャストできるしこれクソでは。
PR

DCLでtuple.hppを仮完成させた?

春合宿講座でリテラル文字列型を作ったという話をしたということはおそらく皆さん知っているであろう。それに関連してC++11対応のconstexprライブラリを作ってみようという企画である。といっても私ができることなどたかがしれてるのでとりあえず作れそうなものから作っていこうって話。
とりあえず作ってみようと思ったのは以下のファイル。

tuple.hpp
 コンパイル時に使えるタプル型
array.hpp
 コンパイル時静的配列ラッパー
algorithm.hpp
 constexprで定義されたfor_eachとかsortとかmatch_numとか
string.hpp
 リテラル文字列型
math.hpp
 constexpr算術関数


とりあえずと言ってもやはり先は長い。ていうか普通に難しい。
やっとこさtupleの最低限の機能を実装したのでアップロダに上げた。一応static_assertでコンパイル時にconstexpr定数版と右辺値版のgetが使えることは確認したがどこにバグがあるかわからないのではい、て感じ。コメント下さい。はい。

アップロダはブログの→から。githubの使い方がわからなかったとかいう言い訳。

一応リファレンス
namespaceはdcl

utility.hpp
standard include(utility cstddef type_traits)
using nullptr_t = decltype(nullptr)
using size_t = unsigned int
enable_if //std::enable_ifと同じ(実装の簡単のため)
conditional //std::conditonalと同じ
template<class Ty1,class Ty0>class pair //型の違う2変数を保持するクラス
template<size_t S>(Ty0 or Ty1) get(pair<Ty0,Ty1>) //pairの中身を参照返しする(const左辺値、左辺値、右辺値版がそれぞれある)

tuple.hpp
template<class... Ts>class tuple //リテラル型tuple
get<I>(tuple<Ts...>)//tupleの中身を参照返しする
template<size_t I,class T>class tuple_element//tupleのI番目の型をusingエイリアスでtypeにする
template<class T>class tuple_size//tupleの要素数をstatic constexpr size_tなメンバvalueに持つ

もうちょっと機能追加しようかなぁ(2つのtupleを結合して新たなtupleを作るとか)

Animal Jet

あほげー13回用のゲーム完成しました。
いつも通りVS2013のランタイムがいります。 ダウンロード

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

フリーエリア

最新CM

[02/12 kariya_mitsuru]
[10/14 どっかの京大生o]
[10/04 どっかのZ会生y]
[07/31 どっかのZ会生y]
[07/31 GNR]

プロフィール

HN:
plasma_effect
性別:
非公開

バーコード

ブログ内検索

最古記事

(06/08)
(06/18)
(06/21)

P R