#include <iostream>
#include <type_traits>

struct Outer
{
	template<typename T, typename = void>
	struct Inner
	{
	};
	template<typename T>
	struct Inner
	<
		typename std::enable_if
		<
			std::is_same<T, double>::value,
			T
		>::type,
		T
	>
	{
	};
};

int main()
{
	Outer::Inner<int> oii;
	Outer::Inner<double> oid;
}
