このコード スニペットを検討してください。
template<bool b>
struct other
{
static const bool value = !b;
};
template<bool b>
struct test
{
static const bool value = b || other<b>::value;
};
int main()
{
bool value = test<true>::value;
}
other<true>
インスタンス化がまったく不要と思われる上記のような状況で、コンパイラはインスタンス化しますか? または、私が構文 を書いたからといって、 ?other<b>::value
の値の計算にまったく貢献しないという事実に関係なく、コンパイラはそれをインスタンス化する必要があります。test<true>::value
a) 標準で何が要求されているか、b)さまざまなコンパイラで実際に実装されているものは何ですか? 規格の関連セクションを歓迎します。