Boost logo

Boost :

From: Doug Gregor (gregod_at_[hidden])
Date: 2001-01-13 21:03:10


On Saturday 13 January 2001 08:35, you wrote:
> Hi Doug,
>
> Thanks for the explanation.
>
> How about the case when the matrix size is a run-time value, instead
> of compile-time as in your example?

Our notion of literal tables can't handle run-time values. They were designed
to be analagous to C++ literals (int, float, string, bool, etc) for
high-level compiler optimizations and as such must be generated using only
static information.

However, Boost doesn't need the same functionality that literal tables were
designed for. Instead of literal tables, a one-way mapping from ID to value
could be used. Then, additional parameters could be specified at run-time:

template<typename Domain, int ID>
struct GetLiteral
{
  static Domain get() { /* ... */ }
};

This would allow something like:

template<typename T>
struct GetLiteral<Matrix<T>, 1>
{
  static Matrix<T> get(int rows, int cols) {
        return Matrix<T>(rows, cols, Matrix<T>::identity);
  }
};

        Doug Gregor
        gregod_at_[hidden]


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk