std::literals::complex_literals::operator""i, operator""if, operator""il
De cppreference.com
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
Ejecuta este código
#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) | |
Asigna el contenido. (función miembro pública) | |
Documentación de C para I
|