The following code snippet compiles only if I explicitly specify the template argument T for the Base struct in Derived ctor:
template <class T>
struct Base
{
    Base(int) {}
};
template <class T>
struct Derived : Base<T>
{
    Derived(int i) : Base<T>(i) {}
};
If I call Base(i) instead of Base<T>(i) - it doesn't work. Why can't compiler determine that Base is actually Base<T> (because I derive from Base<T>)? Is this requirement made intentionally?
