std::literals::complex_literals::operator""i, operator""if, operator""il
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <complex> で定義
|
||
constexpr complex<double> operator""i(long double arg); constexpr complex<double> operator""i(unsigned long long arg); |
(1) | (C++14以上) |
constexpr complex<float> operator""if(long double arg); constexpr complex<float> operator""if(unsigned long long arg); |
(2) | (C++14以上) |
constexpr complex<long double> operator""il(long double arg); constexpr complex<long double> operator""il(unsigned long long arg); |
(3) | (C++14以上) |
虚数を表す std::complex リテラルを形成します。
1) ゼロの実部と
arg の虚部を持つ std::complex<double> リテラルを形成します。2) ゼロの実部と
arg の虚部を持つ std::complex<float> リテラルを形成します。3) ゼロの実部と
arg の虚部を持つ std::complex<long double> リテラルを形成します。引数
| arg | - | 虚数の値 |
戻り値
ゼロの実部と arg の虚部を持つ std::complex リテラル。
ノート
これらの演算子は名前空間 std::literals::complex_literals で宣言されています。 literals と complex_literals は両方ともインライン名前空間です。 これらの演算子へのアクセスは using namespace std::literals, using namespace std::complex_literals, using namespace std::literals::complex_literals で得られます。
if は C++ のキーワードですが、ホワイトスペースで区切られた別個のトークンでないため、 operator ""if 形式のリテラル演算子および 1if や 1.0if などのリテラル式における ud-suffix になります。
実装例
| 1つめのバージョン |
|---|
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)};
}
|
| 2つめのバージョン |
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)};
}
|
| 3つめのバージョン |
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};
}
|
例
Run this code
#include <iostream>
#include <complex>
int main()
{
using namespace std::complex_literals;
std::complex<double> c = 1.0 + 1i;
std::cout << "abs" << c << " = " << abs(c) << '\n';
}
出力:
abs(1,1) = 1.41421
関連項目
| 複素数を構築します (パブリックメンバ関数) | |
| 内容を代入します (パブリックメンバ関数) | |
I の C言語リファレンス
| |