Концепты для отчаявшихся
5 мин
Всё началось с того, что мне понадобилось написать функцию, принимающую на себя владение произвольным объектом. Казалось бы, что может быть проще:
template <typename T>
void f (T t)
{
// Завладели экземпляром `t` типа `T`.
...
// Хочешь — переноси.
g(std::move(t));
// Не хочешь — не переноси.
...
}Но есть один нюанс: требуется, чтобы принимаемый объект был строго rvalue. Следовательно, нужно:
- Сообщать об ошибке компиляции при попытке передать
lvalue. - Избежать лишнего вызова конструктора при создании объекта на стеке.
А вот это уже сложнее сделать.
Поясню.


«Пожалуйста, напишите на C++ функцию, которая получает диаметр круга как float и возвращает длину окружности как float».







Все, что я здесь пишу — это мой личный опыт и наблюдения. За то время, что я искал работу, столкнулся с тем, что в интернете очень много, мягко говоря, противоречивой информации по данной теме. Все люди очень разные, ситуации у всех очень разные — то, что сработало со мной, не сработает с вами, и наоборот. Поэтому мой текст нужно воспринимать не как инструкцию, а как просто одну из историй о том, как можно найти работу в Сан Франциско.