32 #ifndef VSMC_THREAD_BLOCKED_RANGE_HPP 
   33 #define VSMC_THREAD_BLOCKED_RANGE_HPP 
   37 #define VSMC_RUNTIME_ASSERT_THREAD_BLOCKED_RANGE(begin, end, func) \ 
   38     VSMC_RUNTIME_ASSERT((begin < end), ("**"#func"** INVALID RANGE")) 
   55         begin_(begin), end_(end), grainsize_(
grainsize)
 
   58     template <
typename Split>
 
   60         begin_(other.begin_), end_(other.end_), grainsize_(other.grainsize_)
 
   63             begin_ = begin_ + (end_ - begin_) / 2;
 
   70     const_iterator 
begin ()
 const {
return begin_;}
 
   72     const_iterator 
end ()
 const {
return end_;}
 
   74     size_type 
size ()
 const {
return static_cast<size_type
>(end_ - begin_);}
 
   78     bool empty ()
 const {
return !(begin_ < end_);}
 
   84     const_iterator begin_;
 
   91 #endif // VSMC_THREAD_BLOCKED_RANGE_HPP 
bool is_divisible() const 
size_type grainsize() const 
const_iterator end() const 
BlockedRange(T begin, T end, size_type grainsize=1)
#define VSMC_RUNTIME_ASSERT_THREAD_BLOCKED_RANGE(begin, end, func)
BlockedRange(BlockedRange< T > &other, Split)
const_iterator begin() const