亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ret.hpp

?? support vector clustering for vc++
?? HPP
字號:
// Boost Lambda Library  ret.hpp -----------------------------------------

// Copyright (C) 1999, 2000 Jaakko J鋜vi (jaakko.jarvi@cs.utu.fi)
//
// 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


#ifndef BOOST_LAMBDA_RET_HPP
#define BOOST_LAMBDA_RET_HPP

namespace boost { 
namespace lambda {

  // TODO:

//  Add specializations for function references for ret, protect and unlambda
//  e.g void foo(); unlambda(foo); fails, as it would add a const qualifier
  // for a function type. 
  // on the other hand unlambda(*foo) does work


// -- ret -------------------------
// the explicit return type template 

  // TODO: It'd be nice to make ret a nop for other than lambda functors
  // but causes an ambiguiyty with gcc (not with KCC), check what is the
  // right interpretation.

  //  // ret for others than lambda functors has no effect
  // template <class U, class T>
  // inline const T& ret(const T& t) { return t; }


template<class RET, class Arg>
inline const 
lambda_functor<
  lambda_functor_base<
    explicit_return_type_action<RET>, 
    tuple<lambda_functor<Arg> >
  > 
>
ret(const lambda_functor<Arg>& a1)
{
  return  
    lambda_functor_base<
      explicit_return_type_action<RET>, 
      tuple<lambda_functor<Arg> >
    > 
    (tuple<lambda_functor<Arg> >(a1));
}

// protect ------------------

  // protecting others than lambda functors has no effect
template <class T>
inline const T& protect(const T& t) { return t; }

template<class Arg>
inline const 
lambda_functor<
  lambda_functor_base<
    protect_action, 
    tuple<lambda_functor<Arg> >
  > 
>
protect(const lambda_functor<Arg>& a1)
{
  return 
      lambda_functor_base<
        protect_action, 
        tuple<lambda_functor<Arg> >
      > 
    (tuple<lambda_functor<Arg> >(a1));
}
   
// -------------------------------------------------------------------

// Hides the lambda functorness of a lambda functor. 
// After this, the functor is immune to argument substitution, etc.
// This can be used, e.g. to make it safe to pass lambda functors as 
// arguments to functions, which might use them as target functions

// note, unlambda and protect are different things. Protect hides the lambda
// functor for one application, unlambda for good.

template <class LambdaFunctor>
class non_lambda_functor
{
  LambdaFunctor lf;
public:
  
  // This functor defines the result_type typedef.
  // The result type must be deducible without knowing the arguments

  template <class SigArgs> struct sig {
    typedef typename 
      LambdaFunctor::inherited:: 
        template sig<typename SigArgs::tail_type>::type type;
  };

  explicit non_lambda_functor(const LambdaFunctor& a) : lf(a) {}

  typename LambdaFunctor::nullary_return_type  
  operator()() const {
    return lf.template 
      call<typename LambdaFunctor::nullary_return_type>
        (cnull_type(), cnull_type(), cnull_type(), cnull_type()); 
  }

  template<class A>
  typename sig<tuple<const non_lambda_functor, A&> >::type 
  operator()(A& a) const {
    return lf.template call<typename sig<tuple<const non_lambda_functor, A&> >::type >(a, cnull_type(), cnull_type(), cnull_type()); 
  }

  template<class A, class B>
  typename sig<tuple<const non_lambda_functor, A&, B&> >::type 
  operator()(A& a, B& b) const {
    return lf.template call<typename sig<tuple<const non_lambda_functor, A&, B&> >::type >(a, b, cnull_type(), cnull_type()); 
  }

  template<class A, class B, class C>
  typename sig<tuple<const non_lambda_functor, A&, B&, C&> >::type 
  operator()(A& a, B& b, C& c) const {
    return lf.template call<typename sig<tuple<const non_lambda_functor, A&, B&, C&> >::type>(a, b, c, cnull_type()); 
  }
};

template <class Arg>
inline const Arg& unlambda(const Arg& a) { return a; }

template <class Arg>
inline const non_lambda_functor<lambda_functor<Arg> > 
unlambda(const lambda_functor<Arg>& a)
{
  return non_lambda_functor<lambda_functor<Arg> >(a);
}

  // Due to a language restriction, lambda functors cannot be made to
  // accept non-const rvalue arguments. Usually iterators do not return 
  // temporaries, but sometimes they do. That's why a workaround is provided.
  // Note, that this potentially breaks const correctness, so be careful!

// any lambda functor can be turned into a const_incorrect_lambda_functor
// The operator() takes arguments as consts and then casts constness
// away. So this breaks const correctness!!! but is a necessary workaround
// in some cases due to language limitations.
// Note, that this is not a lambda_functor anymore, so it can not be used
// as a sub lambda expression.

template <class LambdaFunctor>
struct const_incorrect_lambda_functor {
  LambdaFunctor lf;
public:

  explicit const_incorrect_lambda_functor(const LambdaFunctor& a) : lf(a) {}

  template <class SigArgs> struct sig {
    typedef typename
      LambdaFunctor::inherited::template 
        sig<typename SigArgs::tail_type>::type type;
  };

  // The nullary case is not needed (no arguments, no parameter type problems)

  template<class A>
  typename sig<tuple<const const_incorrect_lambda_functor, A&> >::type
  operator()(const A& a) const {
    return lf.template call<typename sig<tuple<const const_incorrect_lambda_functor, A&> >::type >(const_cast<A&>(a), cnull_type(), cnull_type(), cnull_type());
  }

  template<class A, class B>
  typename sig<tuple<const const_incorrect_lambda_functor, A&, B&> >::type
  operator()(const A& a, const B& b) const {
    return lf.template call<typename sig<tuple<const const_incorrect_lambda_functor, A&, B&> >::type >(const_cast<A&>(a), const_cast<B&>(b), cnull_type(), cnull_type());
  }

  template<class A, class B, class C>
  typename sig<tuple<const const_incorrect_lambda_functor, A&, B&, C&> >::type
  operator()(const A& a, const B& b, const C& c) const {
    return lf.template call<typename sig<tuple<const const_incorrect_lambda_functor, A&, B&, C&> >::type>(const_cast<A&>(a), const_cast<B&>(b), const_cast<C&>(c), cnull_type());
  }
};

// ------------------------------------------------------------------------
// any lambda functor can be turned into a const_parameter_lambda_functor
// The operator() takes arguments as const.
// This is useful if lambda functors are called with non-const rvalues.
// Note, that this is not a lambda_functor anymore, so it can not be used
// as a sub lambda expression.

template <class LambdaFunctor>
struct const_parameter_lambda_functor {
  LambdaFunctor lf;
public:

  explicit const_parameter_lambda_functor(const LambdaFunctor& a) : lf(a) {}

  template <class SigArgs> struct sig {
    typedef typename
      LambdaFunctor::inherited::template 
        sig<typename SigArgs::tail_type>::type type;
  };

  // The nullary case is not needed: no arguments, no constness problems.

  template<class A>
  typename sig<tuple<const const_parameter_lambda_functor, const A&> >::type
  operator()(const A& a) const {
    return lf.template call<typename sig<tuple<const const_parameter_lambda_functor, const A&> >::type >(a, cnull_type(), cnull_type(), cnull_type());
  }

  template<class A, class B>
  typename sig<tuple<const const_parameter_lambda_functor, const A&, const B&> >::type
  operator()(const A& a, const B& b) const {
    return lf.template call<typename sig<tuple<const const_parameter_lambda_functor, const A&, const B&> >::type >(a, b, cnull_type(), cnull_type());
  }

  template<class A, class B, class C>
  typename sig<tuple<const const_parameter_lambda_functor, const A&, const B&, const C&>
>::type
  operator()(const A& a, const B& b, const C& c) const {
    return lf.template call<typename sig<tuple<const const_parameter_lambda_functor, const A&, const B&, const C&> >::type>(a, b, c, cnull_type());
  }
};

template <class Arg>
inline const const_incorrect_lambda_functor<lambda_functor<Arg> >
break_const(const lambda_functor<Arg>& lf)
{
  return const_incorrect_lambda_functor<lambda_functor<Arg> >(lf);
}


template <class Arg>
inline const const_parameter_lambda_functor<lambda_functor<Arg> >
const_parameters(const lambda_functor<Arg>& lf)
{
  return const_parameter_lambda_functor<lambda_functor<Arg> >(lf);
}

// make void ------------------------------------------------
// make_void( x ) turns a lambda functor x with some return type y into
// another lambda functor, which has a void return type
// when called, the original return type is discarded

// we use this action. The action class will be called, which means that
// the wrapped lambda functor is evaluated, but we just don't do anything
// with the result.
struct voidifier_action {
  template<class Ret, class A> static void apply(A&) {}
};

template<class Args> struct return_type_N<voidifier_action, Args> {
  typedef void type;
};

template<class Arg1>
inline const 
lambda_functor<
  lambda_functor_base<
    action<1, voidifier_action>,
    tuple<lambda_functor<Arg1> >
  > 
> 
make_void(const lambda_functor<Arg1>& a1) { 
return 
    lambda_functor_base<
      action<1, voidifier_action>,
      tuple<lambda_functor<Arg1> >
    > 
  (tuple<lambda_functor<Arg1> > (a1));
}

// for non-lambda functors, make_void does nothing 
// (the argument gets evaluated immediately)

template<class Arg1>
inline const 
lambda_functor<
  lambda_functor_base<do_nothing_action, null_type> 
> 
make_void(const Arg1& a1) { 
return 
    lambda_functor_base<do_nothing_action, null_type>();
}

// std_functor -----------------------------------------------------

//  The STL uses the result_type typedef as the convention to let binders know
//  the return type of a function object. 
//  LL uses the sig template.
//  To let LL know that the function object has the result_type typedef 
//  defined, it can be wrapped with the std_functor function.


// Just inherit form the template parameter (the standard functor), 
// and provide a sig template. So we have a class which is still the
// same functor + the sig template.

template<class T>
struct result_type_to_sig : public T {
  template<class Args> struct sig { typedef typename T::result_type type; };
  result_type_to_sig(const T& t) : T(t) {}
};

template<class F>
inline result_type_to_sig<F> std_functor(const F& f) { return f; }


} // namespace lambda 
} // namespace boost

#endif







?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产调教视频一区| 欧美一级理论片| 狠狠狠色丁香婷婷综合激情 | 精品一区二区三区欧美| 亚洲一区二区三区美女| 亚洲美女精品一区| 亚洲视频一区二区在线| 亚洲天堂成人网| 一区二区三区毛片| 亚洲一区二区三区四区在线免费观看 | 欧美大片一区二区三区| 91精品国产麻豆国产自产在线 | 欧洲精品一区二区| 一本在线高清不卡dvd| 国产午夜一区二区三区| 日韩视频在线永久播放| 精品国产99国产精品| 久久夜色精品国产欧美乱极品| 精品国产一区久久| 久久久久九九视频| 国产精品嫩草影院com| 国产精品亲子伦对白| 亚洲黄色在线视频| 亚洲午夜av在线| 午夜精品久久久久久久99水蜜桃 | 欧美午夜一区二区三区免费大片| 欧美视频完全免费看| 日韩一区二区免费在线电影| 久久久亚洲午夜电影| 国产精品久久久久一区二区三区共| 国产精品色哟哟| 亚洲男同性恋视频| 亚洲成av人综合在线观看| 日韩成人一区二区| 成人一区二区三区| 91福利精品视频| 欧美一区二区三区四区五区| 久久精品欧美日韩精品| 亚洲综合一二区| 久久99深爱久久99精品| 成人黄色免费短视频| 欧美精品丝袜久久久中文字幕| 欧美一级艳片视频免费观看| 中文一区二区在线观看| 日韩二区三区四区| 成人av电影免费观看| 欧美日韩国产一区| 国产精品美女久久福利网站| 午夜a成v人精品| 成人免费视频一区二区| 欧美丰满一区二区免费视频 | 一区二区三区在线视频播放| 日本最新不卡在线| 色婷婷亚洲一区二区三区| 久久久噜噜噜久久人人看| 亚洲成人自拍一区| www.欧美日韩| 精品99999| 日韩精品视频网站| 色综合咪咪久久| 国产亚洲美州欧州综合国| 日韩和欧美一区二区三区| jlzzjlzz国产精品久久| 精品国产区一区| 日本在线播放一区二区三区| 91免费观看视频在线| 中文字幕精品三区| 国产一区二区三区在线看麻豆| 欧美剧情电影在线观看完整版免费励志电影 | 成人美女视频在线看| 日韩欧美高清一区| 久久机这里只有精品| 91精品国模一区二区三区| 亚洲精品ww久久久久久p站 | 欧美午夜精品一区| 亚洲精品国产视频| 91日韩在线专区| 自拍av一区二区三区| gogo大胆日本视频一区| 国产精品美女久久久久aⅴ | 国产欧美在线观看一区| 狠狠久久亚洲欧美| 久久精品网站免费观看| 成人av网址在线观看| 综合婷婷亚洲小说| 色诱视频网站一区| 亚洲影院免费观看| 欧美日韩国产一级二级| 麻豆精品视频在线观看免费| 精品国产百合女同互慰| 国产麻豆午夜三级精品| 国产精品丝袜91| 成人国产精品视频| 亚洲日本青草视频在线怡红院| 日本韩国欧美一区| 日韩精品亚洲一区| 久久久精品综合| 色综合天天综合给合国产| 亚洲精品国产成人久久av盗摄| 欧美日韩高清影院| 久久机这里只有精品| 国产精品日韩成人| 欧美性受xxxx黑人xyx性爽| 青青国产91久久久久久| 久久综合色之久久综合| 一本久道久久综合中文字幕| 亚瑟在线精品视频| 久久久久久久久久久久久女国产乱| 成人av高清在线| 丝袜亚洲另类欧美综合| 久久丝袜美腿综合| 在线观看免费视频综合| 久久99热这里只有精品| 亚洲日本va午夜在线电影| 精品视频免费在线| 国产98色在线|日韩| 香蕉影视欧美成人| 国产精品国产三级国产有无不卡 | 精品嫩草影院久久| 色呦呦一区二区三区| 久久精品理论片| 亚洲精品大片www| 久久久精品影视| 91 com成人网| 色综合久久66| 国产成人自拍高清视频在线免费播放| 一区av在线播放| 中文字幕第一区| 欧美大片免费久久精品三p| 一本一本大道香蕉久在线精品 | 亚洲欧美日韩一区二区 | 成人av在线看| 美女尤物国产一区| 一区二区三区高清不卡| 欧美国产一区视频在线观看| 欧美日韩不卡在线| 91视频你懂的| 成人美女视频在线观看| 乱一区二区av| 日韩av网站在线观看| 亚洲第一会所有码转帖| 最新高清无码专区| 中文字幕成人网| 国产精品素人视频| 国产欧美精品一区| 久久久99久久精品欧美| 欧美变态凌虐bdsm| 精品久久久久99| 久久综合色播五月| 精品嫩草影院久久| 26uuu欧美| 久久久久久一二三区| 欧美精品一区二区三区蜜桃| 日韩欧美一二区| 日韩欧美国产精品一区| 欧美一区二区高清| 日韩视频免费观看高清在线视频| 欧美日韩视频在线观看一区二区三区 | 精品国产乱码久久| 精品国产91乱码一区二区三区| 日韩欧美国产系列| 久久久久久影视| 中文av一区二区| 国产精品人人做人人爽人人添 | 4438成人网| 欧美裸体一区二区三区| 91精品在线免费观看| 精品乱码亚洲一区二区不卡| 欧美成人一级视频| 亚洲精品在线电影| 国产精品进线69影院| 亚洲精品欧美激情| 午夜精品aaa| 国产呦萝稀缺另类资源| 99久久精品一区| 欧美色视频一区| 日韩欧美久久久| 中文字幕国产一区| 亚洲女同一区二区| 韩国av一区二区三区在线观看| 国产麻豆日韩欧美久久| 99久久伊人网影院| 91精品91久久久中77777| 正在播放一区二区| 国产午夜亚洲精品理论片色戒| 国产精品你懂的| 免费不卡在线视频| 成人涩涩免费视频| 91精品国产色综合久久ai换脸 | 91香蕉国产在线观看软件| 欧美日韩国产在线播放网站| 国产欧美日韩在线视频| 一区二区国产视频| 国产麻豆精品在线| 欧美精品日韩精品| 国产精品久久久久久久久搜平片| 日日欢夜夜爽一区| 色综合久久99| 国产喷白浆一区二区三区| 日日摸夜夜添夜夜添精品视频|