2011-06-27 26 views
0

ある種の形式(リスト)で(メタプログラムのコンパイル時に)利用可能なすべてのプリミティブ型のリストを返す関数はありますか? おかげC++のプリミティブ型のリスト

+3

言語がサポートしなければならないプリミティブ型を規定した言語標準を読み、[こちらをご覧ください](http://en.wikipedia.org/wiki/C_variable_types_and_declarations#Basic_types)。 –

+0

@Kerrek SB:必ずしも網羅的なリストではないことに注意してください。それは唯一のものであり、コンパイラは '__int128'を完全に自由に追加できます。 – MSalters

答えて

1

不適切な質問。

種類の一覧は何ですか? std::list<T>?または配列ですか?

std :: listの場合、Tとは何ですか? T = "std :: string"?

すべての種類のリストはC++標準で説明されています。

bool 
signed/unsigned char 
signed/unsigned short int 
signed/unsigned int 
signed/unsigned long 
size_t 
wchar_t 
float 
double 
+9

あなたは 'long double'と平易な' char'がありません。さらに、 'size_t'は一般に特殊な型ではなく、typedefです。 – MSalters

5

はありません - この種の実行時のイントロスペクションは、(あなたはあなたが実際に必要とするタイプ名のリストを与えるランタイム機能で何をしますか共通でも可能でもC++に有用ではありませんあなたのコードを最初に書く?)。

言語によってサポートされるプリミティブ型は、次のとおり

bool 
(unsigned,signed) char 
wchar_t 
(unsigned) short 
(unsigned) int 
(unsigned) long 
[(unsigned) long long] 

float 
double 
[long double] 

個々のコンパイラは、より多くのサポート、および多くの種類が一般的に利用可能なが、上記プリミティブ型(すなわちuint32_tなど)typedefingによって実現されます。

完全なリストについては、言語仕様を参照してください。

+2

上記のほとんどにも 'unsigned'バリアントがあります... –

+0

Jepp、私はリストを編集しました。ちょっと混乱しました: -/ –

+0

'long long'は標準タイプではありません。 –

3

あなたがC++標準§ 3.9.1に見つけることができる基本的なタイプの完全なリスト:

char 

signed char 
short int 
int 
long int 

unsigned char 
unsigned short int 
unsigned int 
unsigned long int 

wchar_t 

bool 

float 
double 
long double 

void 

signed charcharプレーン、およびunsigned charは三つの異なるタイプであること。 C++標準では、size_tptrdiff_tも定義されています(基本的ではありません)。

すべての標準準拠のコンパイラがこれらすべてのタイプをサポートすることが期待できます。各特定のコンパイラは、拡張としてサポートされるより多くの追加の型をサポートすることができます。

関連する問題