// Boost Lambda Library -- control_constructs_common.hpp ------------------- | |
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) | |
// Copyright (C) 2000 Gary Powell (powellg@amazon.com) | |
// | |
// Distributed under the Boost Software License, Version 1.0. (See | |
// accompanying file LICENSE_1_0.txt or copy at | |
// http://www.boost.org/LICENSE_1_0.txt) | |
// | |
// For more information, see www.boost.org | |
// -------------------------------------------------------------------------- | |
#if !defined(BOOST_CONTROL_CONSTRUCTS_COMMON_HPP) | |
#define BOOST_CONTROL_CONSTRUCTS_COMMON_HPP | |
namespace boost { | |
namespace lambda { | |
// special types of lambda functors, used with control structures | |
// to guarantee that they are composed correctly. | |
template<class Tag, class LambdaFunctor> | |
class tagged_lambda_functor; | |
template<class Tag, class Args> | |
class tagged_lambda_functor<Tag, lambda_functor<Args> > | |
: public lambda_functor<Args> | |
{ | |
public: | |
tagged_lambda_functor(const Args& a) : lambda_functor<Args>(a) {} | |
tagged_lambda_functor(const lambda_functor<Args>& a) | |
: lambda_functor<Args>(a) {} | |
// for the no body cases in control structures. | |
tagged_lambda_functor() : lambda_functor<Args>() {} | |
}; | |
} // lambda | |
} // boost | |
#endif // BOOST_CONTROL_CONSTRUCTS_COMMON_HPP | |