|
Boost : |
From: Kevin Spinar (spinarkm_at_[hidden])
Date: 2006-09-21 15:50:30
On 9/21/06, Neal Becker <ndbecker2_at_[hidden]> wrote:
> Maybe I'm missing something obvious. How do I get a compile-time constant
> for the numDim from a multi_array?
>
> For example:
>
> template<typename matrix_t>
> void F (matrix_t const& m) {
> typedef typename matrix_t::value_type value_type;
> const int dim = ???
Maybe I'm missing something too, but I couldn't find member for that.
Is there some reason you aren't doing:
template<typename T, int Dims>
void F(boost::multi_array<T, Dims>& m) {
typedef T value_type;
const int dim = Dims;
}
Alternatively, you could use this class:
template<typename Matrix>
struct get_dims {};
// partial template specialization
template<typename T, int Dims>
struct get_dims<boost::multi_array<T, Dims> > {
const int dims = Dims;
};
template<typename matrix_t>
void F (matrix_t const& m) {
typedef typename matrix_t::value_type value_type;
const int dim = get_dims<matrix_t>::dims;
// ...
Which perhaps is a little more flexible.
Kevin Spinar
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk