	#include <stdint.h>
	#include <type_traits>
	
	uint64_t foo(uint16_t a) {
	  auto x = (a & 0xFFFF);
	  static_assert(std::is_same<int32_t, decltype(x)>::value, "not an int32_t")
	  static_assert(std::is_same<uint16_t, decltype(x)>::value, "not a uint16_t");
	  return x;
	}
