Esempio n. 1
0
  //============================================================================
  template<class T> inline std::size_t ndims( T const& xpr )
  {
    typename meta::call<tag::extent_(T const&)>::type sz  = nt2::extent(xpr);
    std::size_t i = sz.size();

    while((i != 0) && (sz[i-1] == 1)) { i--; }
    return std::max ( std::size_t(2)
                    , (i == 0 ? sz.size() : std::max(std::size_t(2),i)) 
                    );
  }
Esempio n. 2
0
  //============================================================================
  template<class T> inline std::size_t nbdims( T const& xpr )
  {
    typename meta::call<tag::size_(T const&)>::type sz  = nt2::size(xpr);
    std::size_t                                     i   = sz.size();

    if(i != 0)
    {
      while(sz(--i) == 1); return i>0 ? i : sz.size();
    }
    else // Not sure 0D should return 0 or 2 here
      return 0;
  }