【发布时间】:2016-05-20 03:13:17
【问题描述】:
以下 C++ 代码是否正确(不正确)?为什么?
class MyC;
class MyB {
public:
template <class MyT> static void Gimme() { MyT(); }
MyB() { Gimme<MyC>(); }
} B_;
class MyC {
public: MyC() { }
};
g++ 4.7.2 不抱怨。
【问题讨论】:
-
这是合法的,但这是标准中一个非常敏感的领域。比我有更多空闲时间的人可能能够拼凑所有相关部分。
标签: c++ templates language-lawyer incomplete-type