Namespaces
Variants
Views
Actions

std::is_literal_type

From cppreference.com
< cpp‎ | types
Revision as of 16:51, 1 July 2013 by P12bot (Talk | contribs)

 
 
 
Type support
Basic types
Fundamental types
Fixed width integer types (C++11)
Numeric limits
C numeric limits interface
Runtime type information
Type traits
Primary type categories
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Type properties
(C++11)
(C++11)
(C++11)
(C++14)
(C++11)
is_literal_type
(C++11)
(C++11)
Supported operations
Relationships and property queries
(C++11)
(C++11)
(C++11)
(C++11)
Type modifications
(C++11)(C++11)(C++11)
Type transformations
(C++11)
(C++11)
(C++11)
Type trait constants
 
Defined in header <type_traits>
template< class T >
struct is_literal_type;
(since C++11)

If T is a literal type, provides the member constant value equal true. For any other type, value is false.

A literal type is any scalar type, any reference type or a class type that:

1. has a trivial destructor

2. all of its constructor calls and initializers for nonstatic data members are constant expressions

3. is an aggregate type or has at least one constexpr constructor that is not a copy or move constructor

4. all of its nonstatic data members and base classes are literal types

An array of literal types is also a literal type.

Contents

Inherited from std::integral_constant

Member constants

value
[static]
true if T is a literal type, false otherwise
(public static member constant)

Member functions

operator bool
converts the object to bool, returns value
(public member function)

Member types

Type Definition
value_type bool
type std::integral_constant<bool, value>

Notes

Only literal types may be used as parameters to or returned from constexpr functions. Only literal classes may have constexpr member functions.

Example

#include <iostream>
#include <type_traits>
 
struct A {
    int m;
};
 
struct B {
    virtual ~B();
};
 
int main()
{
    std::cout << std::boolalpha;
    std::cout << std::is_literal_type<A>::value << '\n';
    std::cout << std::is_literal_type<B>::value << '\n';
}

Output:

true
false