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

Struct template protect

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference

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

Struct template protect

boost::proto::protect — A PrimitiveTransform which prevents another PrimitiveTransform from being applied in an ObjectTransform.

Synopsis

// In header: <boost/proto/transform/make.hpp>
template<typename PrimitiveTransform> 
struct protect :  proto::transform< protect<PrimitiveTransform> > {
  // member classes/structs/unions
  template<typename , typename , typename > 
  struct impl {
    // types
    typedef PrimitiveTransform result_type;
  };
};

Description

При построении трансформаций более высокого порядка с помощью< proto::make<> >или< proto::lazy<> >, вы иногда хотели бы создавать типы, которые параметризуются с помощью трансформаций Прото. В таких трансформациях в стиле лямбда Proto без посторонней помощи найдет все вложенные трансформации и применит их, даже если вы не хотите, чтобы они применялись. Рассмотрим следующее преобразование, которое заменит<proto::_>в<Bar<proto::_>()>на<proto::terminal<int>::type>:

template<typename T>
struct Bar
{};
struct Foo :
  proto::when<proto::_, Bar<proto::_>() >
{};
proto::terminal<int>::type i = {0};
int main() {
  Foo()(i);
  std::cout << typeid(Foo()(i)).name() << std::endl;
}

Если вы действительно хотите построить объект по умолчанию<Bar<proto::_>>, вы должны защитить<_>, чтобы предотвратить его применение. Вы можете использовать<proto::protect<>>следующим образом:

// OK: replace anything with Bar<_>()
struct Foo :
  proto::when<proto::_, Bar<proto::protect<proto::_> >() >
{};


PrevUpHomeNext

Статья Struct template protect раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:16:39/0.0053098201751709/1