
On Tue, 31 Aug 2004 07:09:10 -0400, Arkadiy Vertleyb <vertleyb@hotmail.com> wrote:
"Peder Holt" <peder.holt@gmail.com> wrote
I think i am closing in on the ultimate typeof implementation.
Given the maximum depth of an expression = N (BOOST_MPL_LIMIT_VECTOR_SIZE) and the depth of the expression we are evaluating = m My earlier implementation was of the order (N^2) Arkadiys implementation (if I am correct) is of the order (m*N)
How do you estimate this? I believe my implementation has an order of N (BOOST_MPL_LIMIT_VECTOR_SIZE).
My new implementation is of the order (m) !!
Without automatically creating classes at the typeof invocation?
To be precise, m*N/2 To deduce the type of an expression int* a[10], sizeof(foo<n>(a)), n=1..N the compiler needs to generate the following types (names may vary) encode_array<T[10],1> encode_array<T[10],2> encode_pointer<T*,1> encode_array<T[10],3> encode_pointer<T*,2> encode_impl<int,1> encode_array<T[10],4> encode_pointer<T*,3> encode_impl<int,2> encode_dummy ... -> N. that is, N*m/2 types needs to be generated by the compiler. Please correct me if I'm wrong. My implementation generates the following types: encode_array<T[10],1> encode_pointer<T*,2> encode_impl<int,3> encode_dummy<4> (plus dummy functions due to lack of partial template specialization) m functions, m class types. m*2 template types On a conforming compiler, m template types. -- Peder Holt
Regards, Arkadiy
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost