I require `constexpr if` in some part of my templated codebase, but since it is not available in C++11, I decided to come up with my own version of a simpler constexpr if-then-else.

Below is my implementation of constexpr if-then-else. I am not entirely sure if it is correct, and was unable to find any relevant content anywhere which suitably explains it. It would be really helpful if someone could verify this, and/or possibly point out alternative implementations.

```cpp
template <typename T, typename F>
constexpr F static_ite(std::false_type, T &&, F &&f) { return f; }

template <typename T, typename F>
constexpr T static_ite(std::true_type, T &&t, F &&) { return t; }

template <bool cond, typename T, typename F>
constexpr auto static_ite(T &&t, F &&f)
    -> decltype(static_ite(std::integral_constant<bool, cond>{}, std::forward<T>(t), std::forward<F>(f)))
{
    return static_ite(std::integral_constant<bool, cond>{}, std::forward<T>(t), std::forward<F>(f));
}

```

I intend to use it as a generic template. Any help would be appreciated.