Imagine um tipo de matriz, implementado como um B.TE any e uma série de structs representando matrizes ordinárias, etc. Ele tem um conjunto de operações, digamos, transpose, etc. transpose deve retornar uma matriz. Isso pode ser implementado em B.TE? Algo como:
BOOST_TYPE_ERASURE_FREE(transpose);
struct ordinary_matrix_impl {};
using matrix =
any<mpl::vector<copy_constructible<>, has_transpose<matrix(_self&)>>>;
auto transpose(ordinary_matrix_impl&) {
// ...
return matrix(ordinary_matrix_impl(/*...*/));
}
Mas o uso matrix = ...
não compila (erro: 'matrix' não foi declarado neste escopo).
Existe uma solução?