#include <cstdio>	// for printf.
#include <cstdint>	// for int32_t.

template<typename U>
auto kuso(U) -> void;

auto kuso(bool b) -> void
{
	std::printf("in auto kuso(bool) -> void\n");
	kuso<bool>(b);
}

auto kuso(double r) -> void
{
	std::printf("in auto kuso(double) -> void\n");
	kuso<double>(r);
}

template<typename U>
auto kuso(U) -> void
{
	std::printf("in auto kuso<U>(U) -> void\n");
	std::printf("    sizeof(U) = %u\n", (unsigned)sizeof(U));
}

auto main() -> int
{
	std::printf("--\n");
	kuso(true);

	std::printf("--\n");
	kuso(3.14);

	std::printf("--\n");
	kuso<std::int32_t>(100);
}
