sfunctor.hpp
来自「矩阵运算源码最新版本」· HPP 代码 · 共 166 行
HPP
166 行
// Software License for MTL// // Copyright (c) 2007 The Trustees of Indiana University. All rights reserved.// Authors: Peter Gottschling and Andrew Lumsdaine// // This file is part of the Matrix Template Library// // See also license.mtl.txt in the distribution.#ifndef MTL_SFUNCTOR_INCLUDE#define MTL_SFUNCTOR_INCLUDE#include <boost/numeric/mtl/concept/std_concept.hpp>namespace mtl { namespace sfunctor {template <typename Value1, typename Value2>struct plus{ typedef typename Addable<Value1, Value2>::result_type result_type; static inline result_type apply(const Value1& v1, const Value2& v2) { return v1 + v2; } result_type operator() (const Value1& v1, const Value2& v2) const { return v1 + v2; }}; template <typename Value1, typename Value2>struct minus{ typedef typename Subtractable<Value1, Value2>::result_type result_type; static inline result_type apply(const Value1& v1, const Value2& v2) { return v1 - v2; } result_type operator() (const Value1& v1, const Value2& v2) const { return v1 - v2; }};template <typename Value1, typename Value2>struct times{ typedef typename Multiplicable<Value1, Value2>::result_type result_type; static inline result_type apply(const Value1& v1, const Value2& v2) { return v1 * v2; } result_type operator() (const Value1& v1, const Value2& v2) const { return v1 * v2; }};template <typename Value1, typename Value2>struct divide{ typedef typename Divisible<Value1, Value2>::result_type result_type; static inline result_type apply(const Value1& v1, const Value2& v2) { return v1 / v2; } result_type operator() (const Value1& v1, const Value2& v2) const { return v1 / v2; }};template <typename Value1, typename Value2>struct assign{ typedef Value1& result_type; static inline result_type apply(Value1& v1, const Value2& v2) { return v1= v2; } result_type operator() (Value1& v1, const Value2& v2) const { return v1= v2; }}; template <typename Value1, typename Value2>struct plus_assign{ typedef Value1& result_type; static inline result_type apply(Value1& v1, const Value2& v2) { return v1+= v2; } result_type operator() (Value1& v1, const Value2& v2) const { return v1+= v2; }}; template <typename Value1, typename Value2>struct minus_assign{ typedef Value1& result_type; static inline result_type apply(Value1& v1, const Value2& v2) { return v1-= v2; } result_type operator() (Value1& v1, const Value2& v2) const { return v1-= v2; }};template <typename Value1, typename Value2>struct times_assign{ typedef Value1& result_type; static inline result_type apply(Value1& v1, const Value2& v2) { return v1*= v2; } result_type operator() (Value1& v1, const Value2& v2) const { return v1*= v2; }};template <typename Value1, typename Value2>struct divide_assign{ typedef Value1& result_type; static inline result_type apply(Value1& v1, const Value2& v2) { return v1/= v2; } result_type operator() (Value1& v1, const Value2& v2) const { return v1/= v2; }};}} // namespace mtl::sfunctor#endif // MTL_SFUNCTOR_INCLUDE
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?