--- /dev/null
+// Compiler: egcs-2.91.12 980302
+// Error: compiler error in ctor of 'foo::bar<T>::bar(T const &)'
+
+struct foo
+{
+ template <typename T>
+ struct bar
+ {
+ bar(T const &t) : tt(t) {}
+ T tt;
+ };
+};
+
+int main()
+{
+ foo::bar<int> fb(3);
+ return 0;
+}
--- /dev/null
+// Build don't link:
+
+template < class T, template <class> class E1, template <class> class E2 >
+struct Add {
+ Add(const E1<T>& e1, const E2<T>& e2) {}
+};
+
+
+template < class T, template <class> class E1, template <class> class E2 >
+struct Mul {
+ Mul(const E1<T>& e1, const E2<T>& e2) {}
+};
+
+
+template < class T >
+struct Lit {
+ Lit(const T& t) {}
+};
+
+
+template < class T >
+struct Id {
+ Add < T, Id, Lit > operator+(const T& t) const {
+ return Add < T, Id, Lit >(*this, Lit<T>(t));
+ }
+
+ Mul < T, Id, Lit > operator*(const T& t) const {
+ return Mul < T, Id, Lit >(*this, Lit<T>(t));
+ }
+};
--- /dev/null
+// Build don't link:
+
+template < class T, template < class > class E1, template < class > class E2 >
+class Add {
+public:
+ Add(const E1<T>& e1, const E2<T>& e2) {}
+};
+
+template < class T >
+struct Id {
+ template < template < class > class E >
+ Add < T, Id, E > operator+(const E<T>& e) const {
+ return Add < T, Id, E >(*this, e);
+ }
+};
+
+template struct Id<double>;