C++ 编译时三元条件

C++ compile time ternary conditional

请帮我弄清楚 C++ 中编译时三元条件的语法:

#include <iostream>
#include <type_traits>
int main(void)
{
 //const auto y = constexpr(std::is_null_pointer_v<decltype(nullptr)>) ? 777 : 888.8;
 const auto y = constexpr(std::is_null_pointer_v<decltype(nullptr)> ? 777 : 888.8);
 std::cout<<y<<std::endl;
}

以上两个选项都给了我error: expected primary-expression before ‘constexpr’(gcc-11.2.0;用g++ -std=c++17编译)。

非常感谢您的帮助!

虽然我在编程时提供了一种解决方案,但我建议其他解决方案: 制作你的consteval tenary函数模板,因为它可以处理其中的不同类型。

template<bool T,auto A, auto B>
consteval auto tenary() {
    if constexpr (T) {
        return A;
    }
    else {
        return B;
    }
}

#include <iostream>
#include <type_traits>
int main(void)
{
    const auto y = tenary<std::is_null_pointer_v<decltype(nullptr)>,777,888.8>();
    std::cout << y << std::endl;
}