Martin Sebor wrote: > >One comment on the design of the tests: template instantiation >is very expensive both in terms of compiler cycles and in terms >of disk space taken up by the generated object code. We need to >avoid instantiating more than the bare minimum of code. So for >example, in tests/utilities/20.meta.help.cpp, >test_integral_constant() would ideally be an ordinary function >with the expected and tested values being passed in by the macro. >Also, if there's a way to avoid using function templates (such >as test_is_same_type) and use class templates instead it should >save us some cycles (especially with optimization) and disk >space.
This is an excellent point, and a relatively easy fix to apply in most cases. A quick question on this subject. In many cases it is convenient to use traits in testing other traits. As an example I would like to use std::is_same<T,U>::value when testing traits like std::is_const. If I test is_same using hard coded values, is it acceptable to use is_same when testing other traits like add_const? If I don't use std::is_same, then I would need to write something similar to is_same [either a class or function template] to give me the answer. What does everyone think? >As an aside, tests don't need to use the _STD macro. The test >config header testdefs.h does the necessary magic to let us use >the name std directly even when _RWSTD_NO_NAMESPACE is #defined. Hah, necessary magic equals #define. Yeah, I noticed this. I'll update my tests. > >Martin >