Dr.*_*Gut 7 c++ language-lawyer incomplete-type variable-templates c++14
在以下程序中,全局变量isCompleteType<Apple>由 clang 和 gcc 以不同的方式初始化(位于Godbolt.org 上):
template <class T>
constexpr bool IsCompleteTypeHelper (decltype (sizeof (T))) { return true; }
template <class T>
constexpr bool IsCompleteTypeHelper (...)                   { return false; }
template <class T>
bool isCompleteType = IsCompleteTypeHelper<T> (0);
class Apple;
int main ()
{
    return isCompleteType<Apple>;
}
class Apple {};
isCompleteType<Apple>为true.isCompleteType<Apple>为false.由于Apple可以生成变量的定义true是在的实例化之后isCompleteType,因此我得出结论,编译器在初始化变量时会执行以下操作。
哪个编译器是对的?为什么?你能引用标准吗?
备注:我的问题与这个问题不同。看评论。
| 归档时间: | 
 | 
| 查看次数: | 78 次 | 
| 最近记录: |