struct X;
それがあり、C++11 コンパイラ (gcc 4.7 など) を使用しているとします。場合に限り、いくつかのコードと属性を発行したいと思いますopt = true
。
template <bool opt>
struct X {
void foo() {
EMIT_CODE_IF(opt) {
// optional code
}
// ...common code...
}
int optional_variable; // Emitted if and only if opt is true
};
- コードに関しては、ノーマル
if
で十分だと思います。 - しかし、属性に関しては、未使用のままにしておくと (いつ
opt = false
)、コンパイラによって自動的に省略されるのでしょうか? 私は絶対にそこにいてほしくありませんopt = false
。