#include <iostream>
#include <type_traits>

int main() {
	std::cout << std::is_same<int &, std::add_const<int &>::type>::value << std::endl;
	std::cout << std::is_same<int, std::add_const<int>::type>::value << std::endl;
	std::cout << std::is_same<int const, std::add_const<int>::type>::value << std::endl;

	std::cout << std::is_same<int &, std::add_lvalue_reference<std::add_const<int &>::type>::type>::value << std::endl;
	std::cout << std::is_same<int &, std::add_lvalue_reference<std::add_const<int>::type>::type>::value << std::endl;
	std::cout << std::is_same<int const &, std::add_lvalue_reference<std::add_const<int>::type>::type>::value << std::endl;


}