Вот на таком коде, содержащем ошибку микрософтовский компилер (8.0.50727.42) падает. На солярке gcc (3.4.6) не падает и успешно диагностирует ошибку. Другого юникса под рукой не было. Посмотрите, как жуется на 4 версии gcc
struct s1{};
struct s2{};
struct s3{};
class bug
{
public:
	template <typename T> const T & get()
	{
	    throw std::runtime_error("not specialized");
	}
	template <> const s1 & get()
	{
	    return gets1();
	}
	template <> const s2 get(const s3 & _s3);
	{
	    return gets2(_s3);
	}
	private;
	s1 locals1;
	s2 locals2;
	const s1 & gets1()
	{
	    return locals1;
	}
	const s2 & gets2(const s3 & _s3)
	{
	    return locals2;
	}
};
int main()
{
    return 0;
}







