#include <iostream>
template<int i>
struct A
{
//static_assert(false, "");
constexpr static int value = 3;
};
template<int i>
struct B
{
constexpr static int value = i * i*i;
};
template<int i>
struct CheckVal
{
constexpr static int value = std::conditional<i == 1, B<3>, A<3>>::type::value;
};
int main()
{
CheckVal<1> cv;
std::cout << cv.value;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8aW50IGk+CnN0cnVjdCBBCnsKCS8vc3RhdGljX2Fzc2VydChmYWxzZSwgIiIpOwoJY29uc3RleHByIHN0YXRpYyBpbnQgdmFsdWUgPSAzOwp9OwoKdGVtcGxhdGU8aW50IGk+CnN0cnVjdCBCCnsKCWNvbnN0ZXhwciBzdGF0aWMgaW50IHZhbHVlID0gaSAqIGkqaTsKfTsKCnRlbXBsYXRlPGludCBpPgpzdHJ1Y3QgQ2hlY2tWYWwKewoJY29uc3RleHByIHN0YXRpYyBpbnQgdmFsdWUgPSBzdGQ6OmNvbmRpdGlvbmFsPGkgPT0gMSwgQjwzPiwgQTwzPj46OnR5cGU6OnZhbHVlOwp9OwoKaW50IG1haW4oKQp7CglDaGVja1ZhbDwxPiBjdjsKCXN0ZDo6Y291dCA8PCBjdi52YWx1ZTsKfQ==