Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
template < typename T >
operator T() const;
struct galosh_count_t
{
size_t value;
};
#include <iostream>
#include <boost/strong_typedef.hpp>
BOOST_STRONG_TYPEDEF(int, galosh_count_t);
BOOST_STRONG_TYPEDEF(int, cow_count_t);
void print (galosh_count_t count)
{
std::cout << "У меня есть " << count << " пар галош!" << std::endl;
}
void print (cow_count_t count)
{
std::cout << "У меня есть " << count << " коров!" << std::endl;
}
void print (galosh_count_t galosh_count, cow_count_t cow_count)
{
std::cout << "У меня есть " << galosh_count << " пар галош и " << cow_count << " коров!" << std::endl;
}
int main (int, char*[])
{
galosh_count_t galosh_count(10);
cow_count_t cow_count(15);
print (galosh_count, cow_count);
// print (cow_count, galosh_count); // здесь будет ошибка компиляции
print (galosh_count);
print (cow_count);
return 0;
}
Заставляем компилятор отличать коров от галош