On Thu, 12 Mar 2009 23:56:55 +0300, BCS <a...@pathlink.com> wrote:
Reply to Denis,
Back on topic, I don't see anything wrong with this code. It defines
exactly one alias.
I also think that it should define exactly one /public/ alias:
template Blah(T)
{
private alias Foo!(T).A Tmp1;
private alias Bar!(Tmp1!(T)).B Tmp2;
static if (Tmp2.C!(T)) {
private alias Tmp2.ResultA Tmp3;
} else {
private alias Tmp2.ResultB Tmp3;
}
/*public*/ alias Tmp3!(Tmp2!(Tmp1!())).C Blah; }
That covers my one major concern with the exactly one rule; local values.
OTOH I have used template with many public value as a type of compile
time structs. It's an absolute must for anything thing that require data
structures like parsing of strings.
You could use a tuple or struct for that purpose:
template Blah(Stuff)
{
struct Blah
{
// code that defines multiple symbols here
}
}