annotate armadillo-3.900.4/include/armadillo_bits/access.hpp @ 84:55a047986812 tip

Update library URI so as not to be document-local
author Chris Cannam
date Wed, 22 Apr 2020 14:21:57 +0100
parents 1ec0e2823891
children
rev   line source
Chris@49 1 // Copyright (C) 2008-2013 NICTA (www.nicta.com.au)
Chris@49 2 // Copyright (C) 2008-2013 Conrad Sanderson
Chris@49 3 //
Chris@49 4 // This Source Code Form is subject to the terms of the Mozilla Public
Chris@49 5 // License, v. 2.0. If a copy of the MPL was not distributed with this
Chris@49 6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
Chris@49 7
Chris@49 8
Chris@49 9 //! \addtogroup access
Chris@49 10 //! @{
Chris@49 11
Chris@49 12
Chris@49 13 class access
Chris@49 14 {
Chris@49 15 public:
Chris@49 16
Chris@49 17 //! internal function to allow modification of data declared as read-only (use with caution)
Chris@49 18 template<typename T1> arma_inline static T1& rw (const T1& x) { return const_cast<T1& >(x); }
Chris@49 19 template<typename T1> arma_inline static T1*& rwp(const T1* const& x) { return const_cast<T1*&>(x); }
Chris@49 20
Chris@49 21 //! internal function to obtain the real part of either a plain number or a complex number
Chris@49 22 template<typename eT> arma_inline static const eT& tmp_real(const eT& X) { return X; }
Chris@49 23 template<typename T> arma_inline static const T tmp_real(const std::complex<T>& X) { return X.real(); }
Chris@49 24
Chris@49 25 //! internal function to work around braindead compilers
Chris@49 26 template<typename eT> arma_inline static const typename enable_if2<is_not_complex<eT>::value, const eT&>::result alt_conj(const eT& X) { return X; }
Chris@49 27 template<typename eT> arma_inline static const typename enable_if2< is_complex<eT>::value, const eT >::result alt_conj(const eT& X) { return std::conj(X); }
Chris@49 28 };
Chris@49 29
Chris@49 30
Chris@49 31 //! @}