Prevent copying with internal::noncopyable.

This commit is contained in:
Chen-Pang He 2013-07-07 19:34:13 +08:00
parent 9e2b4eeac0
commit 55ec3cc6d5
7 changed files with 13 additions and 29 deletions

View File

@ -21,8 +21,8 @@ namespace Eigen {
* expected to be an instantiation of the Matrix class template.
*/
template <typename MatrixType>
class MatrixExponential {
class MatrixExponential : internal::noncopyable
{
public:
/** \brief Constructor.
@ -43,10 +43,6 @@ class MatrixExponential {
private:
// Prevent copying
MatrixExponential(const MatrixExponential&);
MatrixExponential& operator=(const MatrixExponential&);
/** \brief Compute the (3,3)-Pad&eacute; approximant to the exponential.
*
* After exit, \f$ (V+U)(V-U)^{-1} \f$ is the Pad&eacute;

View File

@ -34,7 +34,7 @@ namespace Eigen {
template <typename MatrixType,
typename AtomicType,
int IsComplex = NumTraits<typename internal::traits<MatrixType>::Scalar>::IsComplex>
class MatrixFunction
class MatrixFunction : internal::noncopyable
{
public:
@ -65,7 +65,7 @@ class MatrixFunction
* \brief Partial specialization of MatrixFunction for real matrices
*/
template <typename MatrixType, typename AtomicType>
class MatrixFunction<MatrixType, AtomicType, 0>
class MatrixFunction<MatrixType, AtomicType, 0> : internal::noncopyable
{
private:
@ -111,8 +111,6 @@ class MatrixFunction<MatrixType, AtomicType, 0>
private:
typename internal::nested<MatrixType>::type m_A; /**< \brief Reference to argument of matrix function. */
AtomicType& m_atomic; /**< \brief Class for computing matrix function of atomic blocks. */
MatrixFunction& operator=(const MatrixFunction&);
};
@ -120,7 +118,7 @@ class MatrixFunction<MatrixType, AtomicType, 0>
* \brief Partial specialization of MatrixFunction for complex matrices
*/
template <typename MatrixType, typename AtomicType>
class MatrixFunction<MatrixType, AtomicType, 1>
class MatrixFunction<MatrixType, AtomicType, 1> : internal::noncopyable
{
private:
@ -176,8 +174,6 @@ class MatrixFunction<MatrixType, AtomicType, 1>
* separation constant is set to 0.1, a value taken from the
* paper by Davies and Higham. */
static const RealScalar separation() { return static_cast<RealScalar>(0.1); }
MatrixFunction& operator=(const MatrixFunction&);
};
/** \brief Constructor.

View File

@ -21,7 +21,7 @@ namespace Eigen {
* entries are close to each other.
*/
template <typename MatrixType>
class MatrixFunctionAtomic
class MatrixFunctionAtomic : internal::noncopyable
{
public:
@ -44,10 +44,6 @@ class MatrixFunctionAtomic
private:
// Prevent copying
MatrixFunctionAtomic(const MatrixFunctionAtomic&);
MatrixFunctionAtomic& operator=(const MatrixFunctionAtomic&);
void computeMu();
bool taylorConverged(Index s, const MatrixType& F, const MatrixType& Fincr, const MatrixType& P);

View File

@ -28,7 +28,7 @@ namespace Eigen {
* \sa class MatrixFunctionAtomic, MatrixBase::log()
*/
template <typename MatrixType>
class MatrixLogarithmAtomic
class MatrixLogarithmAtomic : internal::noncopyable
{
public:
@ -71,10 +71,6 @@ private:
std::numeric_limits<RealScalar>::digits<= 64? 8: // extended precision
std::numeric_limits<RealScalar>::digits<=106? 10: // double-double
11; // quadruple precision
// Prevent copying
MatrixLogarithmAtomic(const MatrixLogarithmAtomic&);
MatrixLogarithmAtomic& operator=(const MatrixLogarithmAtomic&);
};
/** \brief Compute logarithm of triangular matrix with clustered eigenvalues. */

View File

@ -38,7 +38,7 @@ class MatrixPowerRetval : public ReturnByValue< MatrixPowerRetval<MatrixType> >
};
template<typename MatrixType>
class MatrixPowerAtomic
class MatrixPowerAtomic : internal::noncopyable
{
private:
enum {
@ -257,7 +257,7 @@ MatrixPowerAtomic<MatrixType>::computeSuperDiag(RealScalar curr, RealScalar prev
* Output: \verbinclude MatrixPower_optimal.out
*/
template<typename MatrixType>
class MatrixPower
class MatrixPower : internal::noncopyable
{
private:
typedef typename MatrixType::Scalar Scalar;

View File

@ -24,7 +24,7 @@ namespace Eigen {
* \sa MatrixSquareRoot, MatrixSquareRootTriangular
*/
template <typename MatrixType>
class MatrixSquareRootQuasiTriangular
class MatrixSquareRootQuasiTriangular : internal::noncopyable
{
public:
@ -253,7 +253,7 @@ void MatrixSquareRootQuasiTriangular<MatrixType>
* \sa MatrixSquareRoot, MatrixSquareRootQuasiTriangular
*/
template <typename MatrixType>
class MatrixSquareRootTriangular
class MatrixSquareRootTriangular : internal::noncopyable
{
public:
MatrixSquareRootTriangular(const MatrixType& A)
@ -370,7 +370,7 @@ class MatrixSquareRoot<MatrixType, 0>
// ********** Partial specialization for complex matrices **********
template <typename MatrixType>
class MatrixSquareRoot<MatrixType, 1>
class MatrixSquareRoot<MatrixType, 1> : internal::noncopyable
{
public:

View File

@ -16,7 +16,7 @@ namespace Eigen {
* \brief Stem functions corresponding to standard mathematical functions.
*/
template <typename Scalar>
class StdStemFunctions
class StdStemFunctions : internal::noncopyable
{
public: