3
0
mirror of https://github.com/triqs/dft_tools synced 2024-10-31 19:23:45 +01:00

arrays : add experimental array_const_view

- not completely clear how to
manipulate this alias, in particular when
matching template function
(and portability : require C++11 compiler).
This commit is contained in:
Olivier Parcollet 2013-08-21 17:25:45 +02:00
parent 241d5636d7
commit 017394e17f
2 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,47 @@
/*******************************************************************************
*
* TRIQS: a Toolbox for Research in Interacting Quantum Systems
*
* Copyright (C) 2013 by O. Parcollet
*
* TRIQS is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* TRIQS 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. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* TRIQS. If not, see <http://www.gnu.org/licenses/>.
*
******************************************************************************/
#include "./common.hpp"
#include "./src/array.hpp"
#include <iostream>
//using std::cout; using std::endl;
using namespace triqs::arrays;
#include <type_traits>
template<typename U, ull_t opt, ull_t to, bool B>
void f (array_const_view<U,2,opt,to,B> const & a) {
std::cout << a << std::endl ;
}
int main(int argc, char **argv) {
array<long,2 > A (2,3);
A() =3;
f(A());
}

View File

@ -86,6 +86,13 @@ namespace triqs { namespace arrays {
}; };
#undef IMPL_TYPE #undef IMPL_TYPE
// This alias is experiemental !! on modern compilers only.
#ifndef TRIQS_COMPILER_IS_OBSOLETE
template <typename ValueType, int Rank, ull_t Opt=0, ull_t TraversalOrder=0, bool Borrowed=false>
using array_const_view = array_view<ValueType, Rank, Opt, TraversalOrder, Borrowed>;
#endif
//------------------------------- array --------------------------------------------------- //------------------------------- array ---------------------------------------------------
#define IMPL_TYPE indexmap_storage_pair< indexmaps::cuboid::map<Rank,Opt,TraversalOrder>, \ #define IMPL_TYPE indexmap_storage_pair< indexmaps::cuboid::map<Rank,Opt,TraversalOrder>, \