Вот несколько ям, в которые у меня была неудача для падения. Все они имеют серьезные основания, которые я только понял, будучи укушенным поведением, которое удивило меня.
virtual
функции в конструкторах не .
не нарушают ODR (Одно Правило Определения) , это - то, для чего анонимные пространства имен (среди прочего).
Порядок инициализации участников зависит от порядка, в котором они объявляются.
class bar {
vector vec_;
unsigned size_; // Note size_ declared *after* vec_
public:
bar(unsigned size)
: size_(size)
, vec_(size_) // size_ is uninitialized
{}
};
Значения по умолчанию и virtual
имеют различную семантику.
class base {
public:
virtual foo(int i = 42) { cout << "base " << i; }
};
class derived : public base {
public:
virtual foo(int i = 12) { cout << "derived "<< i; }
};
derived d;
base& b = d;
b.foo(); // Outputs `derived 42`
Вам необходимо добавить ссылку на System.Reactive.dll. Затем в коде напишите:
using System.Linq;
ОБНОВЛЕНИЕ: Теперь Rx доступен как отдельные расширения. Существует 3 версии Rx: Rx для .NET 3.5 Sp1, Rx для Silverlight 3 и Rx для .NET 4 Beta 2. Все 3 версии можно загрузить со страницы проекта Devlabs Rx .