Namespaces
Variants

std:: is_literal_type

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
is_literal_type
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
ヘッダーで定義 <type_traits>
template < class T >
struct is_literal_type ;
(C++11 以降)
(C++17 で非推奨)
(C++20 で削除)

std::is_literal_type UnaryTypeTrait です。

(この型特性は非推奨となり [1] 、削除されました [2] 。ジェネリックコードに対してほとんど価値がないためです。)

T LiteralType の全ての要件を満たす場合、メンバ定数 value true に等しい。それ以外の型の場合、 value false となる。

std:: remove_all_extents_t < T > が不完全型であり、かつ(CV修飾された可能性のある) void でない場合、動作は未定義です。

プログラムが std::is_literal_type または std::is_literal_type_v に対する特殊化を追加する場合、動作は未定義です。

目次

テンプレートパラメータ

T - チェックする型

ヘルパー変数テンプレート

template < class T >
constexpr bool is_literal_type_v = is_literal_type < T > :: value ;
(C++17 以降)
(非推奨)
(C++20 で削除)

std::integral_constantから継承

メンバ定数

value
[static]
true T がリテラル型の場合、 false それ以外の場合
(公開静的メンバ定数)

メンバ関数

operator bool
オブジェクトを bool に変換し、 value を返す
(公開メンバ関数)
operator()
(C++14)
value を返す
(公開メンバ関数)

メンバ型

定義
value_type bool
type std:: integral_constant < bool , value >

注記

リテラル型のみが constexpr関数 のパラメータまたは戻り値として使用できます。リテラルクラスのみがconstexprメンバ関数を持つことができます。

#include <type_traits>
struct A { int m; };
static_assert(std::is_literal_type_v<A> == true);
struct B { virtual ~B(); };
static_assert(std::is_literal_type_v<B> == false);
int main() {}

欠陥報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2015 C++11 T は境界が不明な不完全クラス型の
配列である可能性があった
この場合の動作は
未定義である

外部リンク

  1. Alisdair Meredith. "is_literal 特性の非推奨化" . C++17における遺物ライブラリ機能の非推奨化 . " is_literal 型特性はジェネリックコードに対してほとんど価値がなく、実際に必要なのは特定の構築が定数初期化を生成するかどうかを知る能力である。"
  2. Alisdair Meredith, Stephan T. Lavavej, Tomasz Kamiński. "非推奨型特性" . C++20に向けたC++17の非推奨機能の見直し . " 強い推奨: ゾンビとして存続できる特性を削除する。[...] トロントレビュー: 強い推奨を承認し、C++20から削除する。"