3
私は長さがゼロの配列を持つレガシーC構造を扱っています。私はそれが有効ではないと思うが、我々はそれと一緒に生きなければならない。 私はマクロを書いていましたが、std :: decayを使って配列をポインタ型に崩壊したいのです。std :: decay長さゼロの配列
しかし、私は長さ0の配列がある場合 - ポインタ型へ
struct data {
key[0]; <<
};
std::decay<decltype(data::key)>
doesntの崩壊を。私は、関数の戻り値の型としてこれを使用しています、そして、それは不平を言う -
GCCエラー:
error: ‘function’ declared as function returning an array
を長さ> = 1
ソースコードを 'T key [0]'から 'T key []'に変更することはできますか? – kennytm
残念ながら私はそれをすることはできません。 std :: remove_extendのT [0]オーバーロードを追加してこの作業を行うことはできますか? – MGH
は 'T [0]' SFINAEコンテキストで、このようなタイプを形成する試みが控除障害を引き起こすため、標準的な要求、非常に奇妙な獣です。これは、通常の配列型を操作するために書かれたTMPコードの大規模な部分は、拡張のようなものをサポートしている実装であっても、それらではうまく動作しないことを意味します。このような –