0
私は、次の最小限の例のようなコードを使用します。型テンプレートパラメータがないため、サイズがゼロの配列を持つクラステンプレート:警告を防ぐ方法?
#include <stdint.h>
constexpr uint8_t size = 0; // sort of global config option
template<typename T = char, uint8_t L = size>
struct A {
T f() {
if constexpr(L > 0) {
return data[0];
}
return T{0};
}
int x = 0;
T data[L];
};
int main() {
A x;
x.f();
}
は今、私は-pedanticするように設定をコンパイラ(G ++)を変更し、私は次の警告を得る:これは絶対に大丈夫です
ISO C++ forbids zero-size array [-Wpedantic]
をしかし、私はこのメッセージをどうやって防ぐことができるのだろうか?あなたはL == 0
ケースのためのあなたのA
構造体を特殊化でき
あなたは警告を無効にしたい場合、または 'サイズ== 0 'メンバーを持っていませんか? – Jarod42
メンバーを省略するのが最善の方法だと思います。 – wimalopaan