Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Support for Compiler Intrinsics

Boost , Chapter 1. Boost.TypeTraits , Chapter 1. Boost.TypeTraits

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Есть некоторые черты, которые не могут быть реализованы в рамках текущего языка C++: чтобы заставить эти черты «просто работать» с определяемыми пользователем типами, требуется какая-то дополнительная помощь от компилятора. В настоящее время (апрель 2008 года) Visual C++ 8 и 9, GNU GCC 4.3 и MWCW 9 предоставляют по крайней мере некоторые из необходимых внутренних компонентов, и другие компиляторы, без сомнения, последуют в свое время.

Следующие классы признаков всегда нуждаются в поддержке компилятора, чтобы сделать правильные вещи для всех типов (но все имеют безопасные резервные позиции, если эта поддержка недоступна):

Следующие классы признаков не могут быть портативно реализованы на языке C++, хотя на практике реализации действительно делают правильные вещи на всех компиляторах, о которых мы знаем:

Следующие классы признаков зависят от одного или нескольких из вышеперечисленных:

Крючки для компиляторно-внутренней поддержки определены вboost/type_traits/intrinsics.hpp, добавление поддержки для новых компиляторов - это просто вопрос определения одного из следующих макросов:

Table 1.9. Macros for Compiler Intrinsics

BOOST_ALIGNMENT_OF(T)

Следует оценить соответствие требованиям типа Т

BOOST_IS_ABSTRACT(T)

Должен оценивать истинность, если Т является абстрактным типом

BOOST_IS_BASE_OF(T,U)

Должен оценивать истинность, если T является базовым классом U

BOOST_IS_CLASS(T)

Должна быть дана оценка истинности, если Т является типом класса

BOOST_IS_CONVERTIBLE(T,U)

Должен оценивать истинность, если T конвертируется в U

BOOST_IS_EMPTY(T)

Должна быть дана оценка истинности, если Т является пустой структурой или союзом

BOOST_IS_ENUM(T)

Должна ли оценка истинности Т - это число

BOOST_IS_FINAL(T)

Должна быть дана оценка истинности, если T является классом, объявленным с конечным спецификатором

BOOST_IS_NOTHROW_MOVE_ASSIGN(T)

Должна оцениваться, чтобы истинное Т имело оператора назначения движения без броска.

BOOST_IS_NOTHROW_MOVE_CONSTRUCT(T)

Должна оцениваться истинное Т, имеющее конструктор движения без броска.

BOOST_IS_POLYMORPHIC(T)

Должна быть дана оценка истинности Т полиморфного типа

BOOST_IS_POD(T)

Должна быть дана оценка истинности, если T является типом POD

BOOST_IS_UNION(T)

Должен оценивать истинность, если Т является союзным типом

BOOST_HAS_NOTHROW_ASSIGN(T)

Должна быть дана оценка истинности, если<T t, u; t= u>не может бросить

BOOST_HAS_NOTHROW_CONSTRUCTOR(T)

Если<T x;>не может бросить

BOOST_HAS_NOTHROW_COPY(T)

Должна быть дана оценка истинности, если<T(t)>не может бросить

BOOST_HAS_TRIVIAL_ASSIGN(T)

Следует оценить истинность, если T имеет тривиального оператора назначения (и поэтому может быть заменен вызовом memcpy)

BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)

Должен оценить истинность, если конструктор по умолчанию для T тривиален (т.е. не имеет эффекта)

BOOST_HAS_TRIVIAL_COPY(T)

Следует оценить истинность, если T имеет тривиальный конструктор копий (и поэтому может быть заменен вызовом memcpy)

BOOST_HAS_TRIVIAL_DESTRUCTOR(T)

Следует оценить истинность, если T имеет тривиальный деструктор (т.е. ~T() не имеет эффекта)

BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T)

Следует оценить истинность, если T имеет тривиальный конструктор ходов (и поэтому может быть заменен вызовом memcpy)

BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T)

Должна быть дана оценка истинности, если T имеет тривиального оператора назначения движения (и поэтому может быть заменен вызовом memcpy)

BOOST_HAS_VIRTUAL_DESTRUCTOR(T)

Должен оцениваться истинный T, имеющий виртуальный деструктор



PrevUpHomeNext

Статья Support for Compiler Intrinsics раздела Chapter 1. Boost.TypeTraits Chapter 1. Boost.TypeTraits может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 1. Boost.TypeTraits ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:45:31/0.009005069732666/1