I know in case of if constexpr(bool_test)
compiler will throw away else
statement and it's body content or vice versa depending on if expression evaluates to true or false.
However if we have mutiple if
else if
do we need to specify constexpr
for each of if
statement or is one enough?
for example:
#include <type_traits>
class test { };
template <typename T>
struct is_test1 : public std::false_type { };
template <typename T>
struct is_test2 : public std::false_type { };
template <typename T>
struct is_test3 : public std::false_type { };
template<>
struct is_test3<test> : public std::true_type { };
int main()
{
if constexpr(is_test1<test>::value)
{
}
else if constexpr(is_test2<test>::value)
{
}
else if constexpr(is_test3<test>::value)
{
}
else
{
}
}
what happens if we declare if constexpr
only for first if
how does compiler handle other if
's are they compile time expressions that is does compiler throw away the rest even if no constexpr
is specified?
For example we could write this instead, but does compiler throw away all except one which evaluates to true:
int main()
{
if constexpr (is_test1<test>::value)
{
}
else if (is_test2<test>::value)
{
}
else if (is_test3<test>::value)
{
}
else
{
}
}