в most-derived класс. Здесь есть указание на то, что если компилятор принимает такой код, то это не соответствует стандарту. Здесь подробно обсуждается код, эквивалентный вашему. Этот вопрос тоже относится к проблеме.
Можно ещё дальше пойти и (в ваших терминах) сделать так: expr ::= expr, { ('+' | '-' | '*' | '/'), expr } а затем применить алгоритм сортировочной станции, чтобы достроить поддеревья для подвыражений с двуместными операциями (вот пример грамматики в Boost.Spirit X3 и пример применения алгоритма сортировочной станции для «допарсивания» выражения).
Вы удивили. В каких компиляторах поддержка C++11 весьма ограничена на сегодня? Если верить инфографике и другим данным, то (по крайней мере) не в 95% самых используемых.
Неужели логарифм по основанию 2 так долго считается? Есть ли аналоги для расчёта логарифма? AVX и SSE содержат что-либо для расчёта тригонометрических и экспоненциальных функций? Или только приблизительно можно считать?
Вопрос, безусловно, философский. По ссылке, насколько я помню, автор придерживается несколько другого подхода, а именно: он рассуждает в терминах луча зрения, который должен иметь возможность падать на сетчатку без помех (have an unobstructed path). Автор делает вывод:
A 2D retina works, because there is a 3rd dimension in which the light can travel unobstructed from the object onto the retina.
Т.о. сетчатка должна иметь размерность (D — 1) и меньше.
Как-то году в 2011 решал задачку и никак не мог взять в толк, как её решить. Со второй попытки (прошлым летом) всё же решил в общем виде, будучи в отпуске.
Это будет не в C++-стиле. Мне кажется, с педагогической точки зрения, лучше советовать указывать std::numeric_limits< std::size_t >::max().
Я бы сделал так.
Я себе это вижу так:
Такой user-код даёт hard-error:
Необходимо использовать `std::remove_reference_t`.
Т.о. сетчатка должна иметь размерность (D — 1) и меньше.