#include <iostream>

struct Outer
{
	template<typename T>
	struct Inner
	{
		T value ;
		void print(std::ostream& os) { os << value ; }
	};
	
	template <typename T>
	Outer(T a) { Inner<T> i{a} ; i.print(std::cout); }  
};

template<>
struct Outer::Inner<double> 
{
	double value ;
	void print(std::ostream& os) { os << 6.66 ; }
} ;

int main()
{
	Outer o1(10) ;
	std::cout << '\n' ;
	Outer o2(0.0) ;
	std::cout << '\n' ;
}