【发布时间】:2019-08-17 11:56:48
【问题描述】:
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);
谁能解释构造函数机制的根本区别,以及为什么会导致不同的行为?
【问题讨论】:
-
Good ol' 最令人头疼的解析。
-
确实最烦人...
标签: c++ templates move-semantics