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.Parámetros
| arg | - | El valor del número imaginario. |
Valor de retorno
El literal std::complex con la parte real igual a cero y la parte imaginaria igual a arg.
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
|
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};
}
|
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
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
| |