// { dg-do assemble  }
// Source: Neil Booth, from PR # 106. 4 Dec 2000.

template <bool b> class bar
{
};

class A_a
{
  public:
   static const bool b = true;
};

class B_b
{
  public:
   static const bool b = false;
};

template <class A, class B> class foo
{
};

template <class A, class B>
bar<(A::b || B::b)> do_funky(const foo<A, B>&);

int main()
{
  bar<true> a_bar = do_funky(foo<A_a, B_b>());
}
