なまもの備忘録

気になったことをつらつらと書いていきます

typedefで配列型に名前をつける

typedefは基本的に以下のように使う。

typedef int size;//以降size型をint型として使うことができるようになる

ただ、配列をtypedefしたい場合は表記法が直感に反したものになる
例えばint型の配列をsizesと定義したい時は以下のように表記する。

typedef int size[];//typedef int[] sizeではない

これは例えばgccのarrayの定義などで使われている。/usr/include/c++/5/にあるarrayファイルには以下のようなコードがある(多分gccはここを見に行っている)。

template<typename _Tp, std::size_t _Nm>
    struct __array_traits
    {
      typedef _Tp _Type[_Nm];//<-ここ
    
…………    

    };

ここでは_Tp型の配列を_Typeとして使うために上記の構文を使用している。
わからないなあ、という話でした。