Пространства имён
Варианты
Действия

std::is_standard_layout

Материал из cppreference.com
< cpp‎ | types

 
 
 
Поддержка типов
Основные типы
Оригинал:
Basic types
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Основные типы
Исправлены типы целых ширину (C++11)
Числовые пределы
Оригинал:
Numeric limits
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
numeric_limits
С числовым ограничивает интерфейс
Время тип информации
Оригинал:
Runtime type information
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Тип черты
Оригинал:
Type traits
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Первичные категории типа
Оригинал:
Primary type categories
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
is_void(C++11)
is_array(C++11)
is_pointer(C++11)
is_enum(C++11)
is_union(C++11)
is_class(C++11)
is_function(C++11)
is_object(C++11)
is_scalar(C++11)
is_compound(C++11)
is_integral(C++11)
is_floating_point(C++11)
is_fundamental(C++11)
is_arithmetic(C++11)
is_reference(C++11)
is_lvalue_reference(C++11)
is_rvalue_reference(C++11)
is_member_pointer(C++11)
is_member_object_pointer(C++11)
is_member_function_pointer(C++11)
Тип свойства
Оригинал:
Type properties
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
is_const(C++11)
is_volatile(C++11)
is_pod(C++11)
is_empty(C++11)
is_polymorphic(C++11)
is_abstract(C++11)
is_trivial(C++11)
is_trivially_copyable(C++11)
is_standard_layout(C++11)
is_literal_type(C++11)
is_signed(C++11)
is_unsigned(C++11)
Поддерживаемые операции
Оригинал:
Supported operations
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
is_constructible
is_trivially_constructible
is_nothrow_constructible
(C++11)
(C++11)
(C++11)
is_default_constructible
is_trivially_default_constructible
is_nothrow_default_constructible
(C++11)
(C++11)
(C++11)
is_copy_constructible
is_trivially_copy_constructible
is_nothrow_copy_constructible
(C++11)
(C++11)
(C++11)
is_move_constructible
is_trivially_move_constructible
is_nothrow_move_constructible
(C++11)
(C++11)
(C++11)
is_assignable
is_trivially_assignable
is_nothrow_assignable
(C++11)
(C++11)
(C++11)
is_copy_assignable
is_trivially_copy_assignable
is_nothrow_copy_assignable
(C++11)
(C++11)
(C++11)
is_move_assignable
is_trivially_move_assignable
is_nothrow_move_assignable
(C++11)
(C++11)
(C++11)
is_destructible
is_trivially_destructible
is_nothrow_destructible
(C++11)
(C++11)
(C++11)
has_virtual_destructor(C++11)
Отношения собственности и запросов
Оригинал:
Relationships and property queries
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
is_same(C++11)
is_base_of(C++11)
is_convertible(C++11)
alignment_of(C++11)
rank(C++11)
extent(C++11)
Тип модификаций
Оригинал:
Type modifications
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
remove_cv
remove_const
remove_volatile
(C++11)
(C++11)
(C++11)
add_cv
add_const
add_volatile
(C++11)
(C++11)
(C++11)
make_signed(C++11)
make_unsigned(C++11)
Тип преобразования
Оригинал:
Type transformations
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
aligned_storage(C++11)
aligned_union(C++11)
decay(C++11)
enable_if(C++11)
conditional(C++11)
common_type(C++11)
underlying_type(C++11)
result_of(C++11)
Введите черта констант
Оригинал:
Type trait constants
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
integral_constant(C++11)
 
Определено в заголовочном файле <type_traits>
template< class T >
struct is_standard_layout;
(начиная с C++11)
Если T является стандартным типом раскладки (т. е. скалярный тип, стандарт-класса макета, или массив такого типа / класса, возможно, резюме квалифицированных), обеспечивает постоянный член value равных true. Для любого другого типа, value является false.
Оригинал:
If T is a standard layout type (that is, a scalar type, a standard-layout class, or an array of such type/class, possibly cv-qualified), provides the member constant value equal true. For any other type, value is false.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Стандартная раскладка-класс это класс, который
Оригинал:
A standard-layout class is a class that
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
1. не имеет не статические данные пользователей, которые не являются стандартными-макета
Оригинал:
1. has no non-static data members that aren't standard-layout
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
2. не имеет виртуальные функции и не виртуальных базовых классов
Оригинал:
2. has no virtual functions and no virtual base classes
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
3. имеет такой же контроль доступа для всех не-статических данных-членов
Оригинал:
3. has the same access control for all non-static data members
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
4. не имеет базовых классов, которые не являются стандартными-макета
Оригинал:
4. has no base classes that aren't standard-layout
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
5. либо не имеет базового класса с не статические данные члены или не имеет не статические данные члены в наиболее производный класс и только одна база с ними
Оригинал:
5. either has no base class with non-static data members or has no non-static data members in the most derived class and only one base with them
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
6. не имеет базовые классы одного и того же типа, что и первый не-статический член данных
Оригинал:
6. has no base classes of the same type as the first non-static data member
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

Унаследован от std::integral_constant

Member constants

value
[static]
true если T is a standard-layout type , false иначе
Оригинал:
true if T is a standard-layout type , false otherwise
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public static константа-член)

Member functions

operator bool
преобразует объект в bool, возвращает value
Оригинал:
converts the object to bool, returns value
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член)

Member types

Тип Definition
value_type bool
type std::integral_constant<bool, value>

[править] Заметки

Указатель на стандартных макетов классов могут быть конвертированы (с reinterpret_cast) к указателю на свой первый не статические данные члены и наоборот.
Оригинал:
A pointer to a standard-layout class may be converted (with reinterpret_cast) to a pointer to its first non-static data member and vice versa.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Если стандарт-макет союз имеет два или более стандартных макетов структуры, он имеет право инспектировать общую начальную часть из них.
Оригинал:
If a standard-layout union holds two or more standard-layout structs, it is permitted to inspect the common initial part of them.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Макрос offsetof могут быть использованы только со стандартным макетом классов.
Оригинал:
The macro offsetof can only be used with standard-layout classes.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Пример

#include <iostream>
#include <type_traits>
 
struct A {
    int m;
};
 
struct B {
    int m1;
private:
    int m2;
};
 
struct C {
    virtual void foo();
};
 
int main()
{
    std::cout << std::boolalpha;
    std::cout << std::is_standard_layout<A>::value << '\n';
    std::cout << std::is_standard_layout<B>::value << '\n';
    std::cout << std::is_standard_layout<C>::value << '\n';
}

Вывод:

true
false
false

[править] См. также

checks if a type is trivially copyable
(шаблон класса) [edit]
(C++11)
проверяет, является ли тип обычный старый данных (POD) типа
Оригинал:
checks if a type is plain-old data (POD) type
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон класса) [edit]
байтовое смещение от начала стандартной верстки типа указанного члена
Оригинал:
byte offset from the beginning of a standard-layout type to specified member
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция-макрос) [edit]