Pull to refresh
56
0
Сергей Садовников @FlexFerrum

Пользователь

Send message
Идея интересная, но действительно не совсем понятно — почему в данном случае нельзя было применить обычный runtime-полиморфизм на виртуальных функциях? Приведённое решение хорошо подходит для варианта, когда набор типов, для которых требуется обеспечить полиморфное поведение, недоступен для модификации (third-party-классы, нативные типы). Чтобы не городить огород из собственных классов-обёрток variant + static_visitor — вполне подходят. А вот в приведённом примере…
Очень бы хотелось… :) Ждём официального анонса, т. е. 2-го августа.
Это если не заспамят и не зафлудят. В интернете же (не многим сложнее) создать нужное мнение по тому или иному вопросу. Типичные методы — флеш-мобы, атаки ботов, флуд, троллинг, и т. д. и т. п. Всё очень сильно зависит от постоянной аудитории ресурса, а также от настроений наиболее активной части этой аудитории. Это если не брать во внимание, скажем так, информационных агентов, которые намеренно (и за деньги) создают нужное мнение по тому или иному вопросу.
Какой здесь можно дать совет? Во-первых осознайте, что информация, окружающая вас, — это вовсе не факты. Не принимайте все на веру. Старайтесь получить фундаментальные знания в вопросах, которые вас волнуют.

К сожалению, и этот совет тоже не универсален. Нередко можно найти совершенно противоположные точки зрения на один и тот же вопрос, высказываемые экспертами (без кавычек) в соответствующей области.
Так я вам скажу по секрету, от этого ничего не меняется.

В том то и дело, что меняется. Я более чем уверен, что люди, составляющие основную аудиторию канала «Культура» и люди, составляющие основную аудиторию канала «НТВ» живут на совершенно разных планетах. Я это к тому, что очень многое зависит от информационного фона, в который помещает себя человек. Массмедиа (а также ББС) — два основных способа формирования этого фона.
Продолжая тему. Наверное, уже для многих не является секретом, что ТВ-рейтинги формируются у нас по результатам «опроса» пары тысяч человек (если не меньше). Т. е. ровно столько, сколько согласились поставить себе домой соответствующий девайс (отсылающий «в обратку» информацию о том, что и когда смотрится человеком). При этом получившаяся схема обладает очень сильным (хоть и не явным) контуром положительной обратной связи в виде публикаций этих самых рейтингов. По этому говорить о том, что нам показывают (или рассказывают) то, что «большинство из нас хочет» — не совсем корректно. А потому политика телеканалов/изданий формируется их редакторами и хозяевами. Хотя, таки да. Имеется свобода выбора. Как минимум «смотреть/не смотреть» и (как максимум) — «что именно смотреть/читать».
Скажите как там с работой Qt Visual Studio Add-in или Qt Visual Studio Integration в VS2010?

Увы, никак. :( Видимо, этот аддин появится вместе с выходом 4.7 (я лишь предполагаю). По этому для комфортной работы привёл Магомета к горе. Т. е. прикрутил компиль от VS 2010 к VS 2008.

И остался ли баг на Windows 7 bugreports.qt.nokia.com/browse/QTBUG-11309 в скомпилированной Qt 4.6.3+VS2010?

Судя по исходному коду — должен был остаться. Но дело в том, что на моей семёрке этот баг просто не проявляется (к счастью).
Как будто-бы единственный пример подобных маркетинговых ходов, ориентированных на малограмотность аудитории. :) Первое, что приходит на память — линейки звуковых карт в стиле
SB-8bit, SB-16bit, SB-32, SB-64, где в последних двух случаях указывается совсем не битность АЦП/ЦАП.

Но, так да. Сети несуществующего поколения — это что-то из области фантастики. :)
Ничего хорошего в адрес «Билайн» говорить не собираюсь, но устное обещание девочки из коллцентра и пункты договора, закрепляющие за сторонами те или иные обязательства — вещи несколько разных порядков. Я к тому, что обещать — ещё не жениться. И в данном в данном случае компания оставила за собой право не выполнять то, что явным образом не прописано в договоре. Ну а то, что при этом получилось такое вот откровенное «динамо» — форменное свинство. С этим нельзя не согласиться.
А приехать на работу на пару часов позже (по договорённости с руководством) — не реально? Зачем же сразу отгул то брать?
К слову сказать, на C++ (который 0x) мемоизатор может выглядеть так:

template<typename R, typename ... Args>
std::function<R(Args ...)> memoize(R f(Args ...))
{
  auto l_f = [=](Args ... args) -> R
  {
    typedef std::tuple<Args ...> args_pack_t;
    typedef std::tuple<args_pack_t, R> memoize_val_t;
    
    static std::vector<memoize_val_t> values;
    
    args_pack_t args_pack(args ...);
    
    for (auto p = values.begin(); p != values.end(); ++ p)
    {
      if (std::get<0>(*p) == args_pack)
        return std::get<1>(*p);
    }
    
    R ret_val = f(args ...);
    values.push_back(memoize_val_t(args_pack, ret_val));
    return ret_val;
  };
  
  return l_f;
}


Использование предельно просто:
int f(int a, double b)
{
	return (a + 10) * b;
}

int main()
{
	auto f_ = memoize(f);
	
	std::cout << f_(10, 20) << std::endl;
	std::cout << f_(10, 20) << std::endl;
	std::cout << f_(10, 40) << std::endl;
	
	return 0;
}


Лукап, понятно, в данном варианте — не самый оптимальный, но (как и в случае с питоном) можно легко сделать варианты мемоизаторов, которые будут делать это настолько оптимально, насколько захочет пользователь такого класса.
Сарказм, увы, не распознал. :)
В плане MMORPG-движков (браузерных) — согласен. Был свидетелем, как один мой знакомый разрабатывал оный. Сначала пробовал на C++, потом (отчаявшись решить ряд вопросов в силу недостатка опыта в некоторых областях и очевидной сложности реализации некоторых аспектов именно на C++), переписал всё на java. Переписать получилось быстро и он остался доволен результатом (в целом), бо производительностью был не особо озабочен.

Про offline-игрушки — тоже согласен.
Так то оно так (ведь имеются в виду MMORPG-движки?)… Только вот какая картинка получится, если сравнить нагрузки, которые таки движки могут выдерживать?
Ну, общечеловеческая точка зрения — понятие весьма относительное. Глубокий смысл такого поведения раскрыть не смогу, поскольку мне он не известен, но рискну предположить (согласившись с вышеотписавшимися), что такое поведение — унаследовано от ранних реализаций C и оставлено из соображений backward compatibility. Плюс к этому добавляет определённую степень свободы (нет необходимости таскать прототипы функций), и, как следствие, определённое количество проблем.
Почему же не должно? Вполне соответствует стандарту:
«If the expression that denotes the called function has a type that does not include a
prototype, the integer promotions are performed on each argument, and arguments that
have type float are promoted to double.» Раздел 6.5.2.2, п. 6. В конце этого же пункта говориться об UB в случае несоответствия реальному прототипу функции, которая будет вызвана.
Ну а gcc по этому поводу ещё и предупреждение выдаёт.
12 ...
13

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity