prog.cpp:18:49: error: to refer to a type member of a template parameter, use ‘typename Provider:: Container’ [-fpermissive]
typedef typename Type<Provider::Container, int>::type intContainer;
^
prog.cpp:18:49: error: type/value mismatch at argument 1 in template parameter list for ‘template<template<class T> class Container, class Obj> struct Type’
prog.cpp:18:49: error: expected a class template, got ‘typename Provider::Container’
prog.cpp:19:52: error: to refer to a type member of a template parameter, use ‘typename Provider:: Container’ [-fpermissive]
typedef typename Type<Provider::Container, double>::type doubleContainer;
^
prog.cpp:19:52: error: type/value mismatch at argument 1 in template parameter list for ‘template<template<class T> class Container, class Obj> struct Type’
prog.cpp:19:52: error: expected a class template, got ‘typename Provider::Container’