std::ranges::view_interface<D>:: operator bool
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
| Member functions | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
operator bool
|
||||
|
constexpr
explicit
operator
bool
(
)
requires
/* 下記参照 */
;
|
(1) | (C++20以降) |
|
constexpr
explicit
operator
bool
(
)
const
requires
/* 下記参照 */
;
|
(2) | (C++20以降) |
operator bool メンバ関数のデフォルト実装は、ビューが空でないかどうかをチェックします。これにより、派生型は 文脈的に bool へ変換可能 になります。
derived
を
static_cast
<
D
&
>
(
*
this
)
と定義する。requires節内の式は
requires
{
ranges::
empty
(
derived
)
;
}
と等価であり、関数本体は
return
!
ranges::
empty
(
derived
)
;
と等価である。
derived
が
static_cast
<
const
D
&
>
(
*
this
)
である点が異なる。
目次 |
戻り値
false 派生型の値が空の場合( std::ranges::empty によって判定)、 true それ以外の場合。
注記
C++20では、標準ライブラリ内の std::ranges::view_interface から派生した型は、独自の operator bool を提供しません。これらの型のほとんど全てがデフォルト実装を使用しています。
注目すべき例外は
std::ranges::basic_istream_view
です。そのイテレータ型は決して
forward_iterator
を満たさないため、このビューは継承された
operator
bool
を使用できません。
例
#include <array> #include <iostream> #include <ranges> int main() { const std::array ints {0, 1, 2, 3, 4}; auto odds = ints | std::views::filter([](int i) { return 0 != i % 2; }); auto negs = ints | std::views::filter([](int i) { return i < 0; }); std::cout << std::boolalpha << "Has odd numbers: " << (!!odds) << ' ' << '\n' << "Has negative numbers: " << (!!negs) << ' ' << '\n'; }
出力:
Has odd numbers: true Has negative numbers: false
関連項目
|
(C++20)
|
範囲が空かどうかをチェックする
(カスタマイゼーションポイントオブジェクト) |
派生ビューが空かどうかを返す(
sized_range
または
forward_range
を満たす場合のみ提供)
(公開メンバ関数) |
|
|
(C++17)
|
コンテナが空かどうかをチェックする
(関数テンプレート) |