📄 expr.h
字号:
/****************************************************************************
* Copyright (C) 2001 Piece Wise Functions
* Carlo Galotto
* Italy
* Email: carlo.galotto@libero.it
* cgalotto@hotmail.com
*
*
* This framework is free software; you can redistribute it and/or modify
* it. This framework is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* The proposed framework is based upon the paper "Expression Templates" by
* Todd Veldhuizen.
****************************************************************************/
// Class: Expr
#ifndef __EXPR_H //Required for current class
#define __EXPR_H
#include <functional> // required for base classes
/****************************************************************************
* Expr is a wrapper class which contains a more interesting expression type, * such as IdentityExpr, LiteralExpr, or BinExpr. */
template <class exprT> class Expr : public std::unary_function<exprT::argument_type, exprT::result_type>
{
public:
typedef typename exprT expr_type;
typedef typename exprT::argument_type argument_type;
typedef typename exprT::result_type result_type;
private:
exprT expr;
public:
// Conversion constructor
explicit Expr(const exprT & e) : expr(e) {;}
//Default constructor
Expr() : expr() {;}
//Copy constructor
Expr(const Expr& anExpr ) : expr(anExpr.expr ) {}
//Operator=
Expr& operator= (const Expr& anExpr)
{
if(&anExpr != this) expr = anExpr.expr;
return *this;
}
// Evaluator
result_type operator ()(const argument_type& x) const { return expr(x); }
// Destructor
~ Expr() {}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -