Espacios de nombres
Variantes
Acciones

std::literals::complex_literals::operator""i, operator""if, operator""il

De cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
std::complex
Funciones miembro
Funciones no miembro
(C++11)
operator""ioperator""ifoperator""il
(C++14)(C++14)(C++14)
Funciones exponenciales
Funciones de potencias
Funciones trigonométricas
(C++11)
(C++11)
(C++11)
Funciones hiperbólicas
(C++11)
(C++11)
(C++11)
 
Definido en el archivo de encabezado <complex>
constexpr complex<double> operator""i(long double arg);
constexpr complex<double> operator""i(unsigned long long arg);
(1) (desde C++14)
constexpr complex<float> operator""if(long double arg);
constexpr complex<float> operator""if(unsigned long long arg);
(2) (desde C++14)
constexpr complex<long double> operator""il(long double arg);
constexpr complex<long double> operator""il(unsigned long long arg);
(3) (desde C++14)

Forma un literal std::complex que representa un número imaginario.

1) Forma un literal std::complex<double> con la parte real igual a cero y la parte imaginaria igual a arg.
2) Forma un literal std::complex<float> con la parte real igual a cero y la parte imaginaria igual a arg.
3) Forma un literal std::complex<long double> con la parte real igual a cero y la parte imaginaria igual a arg.

Contenido

[editar] Parámetros

arg - El valor del número imaginario.

[editar] Valor de retorno

El literal std::complex con la parte real igual a cero y la parte imaginaria igual a arg.

[editar] Notas

Estos operadores se declaran en el espacio de nombres std::literals::complex_literals, donde literals y complex_literals son espacios de nombres en línea. El acceso a estos operadores se puede obtener con using namespace std::literals, using namespace std::complex_literals y using namespace std::literals::complex_literals.

Aunque if es una palabra clave en C++, es un sufijo-ud del operador literal de la forma operator ""if y en las expresiones literales como 1if o 1.0if porque no está separado por espacios en blanco y no es un token independiente.


Macro de Prueba de característica
__cpp_lib_complex_udls

[editar] Posible implementación

Primera versión
constexpr std::complex<double> operator""i(unsigned long long d)
{
    return std::complex<double>{0.0, static_cast<double>(d)};
}
constexpr std::complex<double> operator""i(long double d)
{
    return std::complex<double>{0.0, static_cast<double>(d)};
}
Segunda versión
constexpr std::complex<float> operator""if(unsigned long long d)
{
    return std::complex<float>{0.0f, static_cast<float>(d)};
}
constexpr std::complex<float> operator""if(long double d)
{
    return std::complex<float>{0.0f, static_cast<float>(d)};
}
Tercera versión
constexpr std::complex<long double> operator""il(unsigned long long d)
{
    return std::complex<long double>{0.0L, static_cast<long double>(d)};
}
constexpr std::complex<long double> operator""il(long double d)
{
    return std::complex<long double>{0.0L, d};
}

[editar] Ejemplo

#include <iostream>
#include <complex>
 
int main()
{
    using namespace std::complex_literals;
    std::complex<double> c = 1.0 + 1i;
    std::cout << "abs" << c << " = " << std::abs(c) << '\n';
    std::complex<float> z = 3.0f + 4.0if;
    std::cout << "abs" << z << " = " << std::abs(z) << '\n';
}

Salida:

abs(1,1) = 1.41421
abs(3,4) = 5

[editar] Véase también

Construye un número complejo.
(función miembro pública) [editar]
Asigna el contenido.
(función miembro pública) [editar]