// Example 2-1: Disambiguating declarations.
#include <iostream>
#include <ostream>

class T
{
public:
  T()    { std::cout << "T()\n"; }
  T(int) { std::cout << "T(int)\n"; }
};

int a, x;

int main()
{
  T(a);          // Variable named a of type T, not an
                 // invocation of the T(int) constructor.
  T b();         // Function named b of no arguments,
                 // not a variable named b of type T.
  T c(T(x));     // Declaration of a function named c,
                 // with one argument of type T.
}
