*/
template <typename T, typename U>
inline std::enable_if_t<
- std::is_floating_point_v<T> && std::is_floating_point_v<U>,
+ std::is_floating_point_v<T> && std::is_floating_point_v<U> &&
+ !std::is_same_v<T, U>,
typename ProductType<std::complex<T>, std::complex<U>>::type>
operator*(const std::complex<T> &left, const std::complex<U> &right)
{
*/
template <typename T, typename U>
inline std::enable_if_t<
- std::is_floating_point_v<T> && std::is_floating_point_v<U>,
+ std::is_floating_point_v<T> && std::is_floating_point_v<U> &&
+ !std::is_same_v<T, U>,
typename ProductType<std::complex<T>, std::complex<U>>::type>
operator/(const std::complex<T> &left, const std::complex<U> &right)
{
*/
template <typename T, typename U>
inline std::enable_if_t<std::is_floating_point_v<T> &&
- std::is_floating_point_v<U>,
+ std::is_floating_point_v<U> && !std::is_same_v<T, U>,
typename ProductType<std::complex<T>, U>::type>
operator*(const std::complex<T> &left, const U &right)
{
*/
template <typename T, typename U>
inline std::enable_if_t<std::is_floating_point_v<T> &&
- std::is_floating_point_v<U>,
+ std::is_floating_point_v<U> && !std::is_same_v<T, U>,
typename ProductType<std::complex<T>, U>::type>
operator/(const std::complex<T> &left, const U &right)
{
*/
template <typename T, typename U>
inline std::enable_if_t<std::is_floating_point_v<T> &&
- std::is_floating_point_v<U>,
+ std::is_floating_point_v<U> && !std::is_same_v<T, U>,
typename ProductType<T, std::complex<U>>::type>
operator*(const T &left, const std::complex<U> &right)
{
*/
template <typename T, typename U>
inline std::enable_if_t<std::is_floating_point_v<T> &&
- std::is_floating_point_v<U>,
+ std::is_floating_point_v<U> && !std::is_same_v<T, U>,
typename ProductType<T, std::complex<U>>::type>
operator/(const T &left, const std::complex<U> &right)
{