Tags: puzzles

Dr. House

C++ Puzzle # 3

Имеем вот такой код:

using namespace std::literals;

void f()
{
   std::this_thread::sleep_for(1s);
}

auto fut = std::async(f);

while (fut.wait_for(100ms) != std::future_status::ready)
{
   do_something();
}


Все ли с ним нормально? Нет ли каких-нибудь побочных эффектов?

Ответ на загадку, как всегда, опубликую завтра.

[UPDATE]. do_something() ведет себя прилично: не блокирует, не кидает исключений, не запускает другие треды, могущие повлиять на этот и т.д.
Dr. House

C++ Puzzle # 2

Предположим, что у вас в программе есть следующая функция для определения того, является ли выбранное число "счастливым":
bool isLuckyNumber(int number);


Каким образом в С++ 11+ сделать защиту "от дурака", чтобы следующие вызовы
if (isLuckyNumber('a')) ...
if (isLuckyNumber(true)) ...
if (isLuckyNumber(3.5)) ...
не могли быть сделаны?

Ответ на задачку опубликую через сутки в комментарии.
Dr. House

C++ Puzzle # 1

Для любителей/знатоков C++ и в целях самодокументирования планирую публиковать подобные задачки.

Кто знает чем в C++ 14 и выше отличается этот кусок кода
decltype(auto) f1() {
    int x = 0;
    //...
    return x;
}


от следующего:
decltype(auto) f2() {
   int x = 0;
   //...
   return (x);
}
?

Все ли с ними (кусками кода) нормально? Скомпилируются? Вызовут или нет ошибку/исключение?

Ответ в комментарии опубликую через сутки.

[UPD]. Решение задачки опубликовано.