#include <type_traits>

template<typename T> struct fake_dependency : public std::false_type { };
template<class Foo> void func(Foo x) {
   static_assert(fake_dependency<Foo>::value, "must use specialization");
}

template<> void func<double>(double x) {
   // Yay!
}

int main() {
	// func<int>(1); // fails.
	func<double>(1); // succeeds.
	return 0;
}
