最終更新日時(UTC): 2026年02月08日 09時00分28秒
yoh が更新

履歴 編集

concept
<ranges>

# std::ranges::uses-nonqualification-pointer-conversion(C++20)

    namespace std::ranges {
      template<class From, class To>
        concept uses-nonqualification-pointer-conversion =  // 説明専用コンセプト
          is_pointer_v<From> && is_pointer_v<To> &&
          !convertible_to<remove_pointer_t<From>(*)[], remove_pointer_t<To>(*)[]>;
    }

## 概要

`uses-nonqualification-pointer-conversion`は、直接変換できない型同士のポインタの変換が必要かどうかを表す。`ranges::subrange`の定義において、`ranges::subrange<const T* const*>`を`T*[]`から構築するなどの時に必要になるポインタの変換を許容するために使用される。

## バージョン

### 言語

- C++20

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 関連項目

- `ranges::subrange`
- `convertible-to-non-slicing`
- `pair-like-convertible-from`

## 参照

- LWG 3470 `convertible-to-non-slicing` seems to reject valid case