class NullTimer {
public:
inline static bool changePeriod (const size_t) { return false; }
inline static void dispose (void) {}
inline static bool isActive (void) { return false; }
inline static void reset (void) {}
inline static void start (void) {}
inline static void stop (void) {}
};
template <
Timer
>
class Foo {
public:
Foo (
const Timer & t
) :
_t(t)
{}
Foo (
Timer && t
) :
_t(t)
{}
private:
Timer t;
};
Foo<NullTimer> bar(NullTimer());
Использование конструктора перемещения шаблонного типа вызывает странное поведение во встроенном приложении ( трудно диагностировать из-за встроенной природы ). Если я сделаю это в два этапа (используя конструктор копирования), то он будет вести себя как положено.
NullTimer nt;
Foo<NullTimer> bar(nt);
Может ли кто-нибудь объяснить фундаментальные различия в механизме конструкторов, и почему это вызвало бы другое поведение?