//
//  (C) Porkolab 2003
//
//  A.8.6.
//   
//  Order of the object at linking:


// file: t.h
template <class T>
T t(const T&)
{
    return s;
}

// file: a.cpp
#include "t.h"
static int s = 2;

int g()
{
    return t(1);
}

// file: b.cpp
#include "t.h"
static int s = 1;

int h()
{
    return t(1);
}

// file: main.cpp
#include <iostream>

extern int g();
extern int h();

int main()
{
    std::cout << g() << std::endl;
    std::cout << h() << std::endl;
    return 0;
}

// g++ main.cpp a.cpp b.cpp
// 2 2

// g++ main.cpp b.cpp a.cpp
// 1 1