在默认成员初始值设定项中使用是否仍然是 odr-use,即使默认成员初始值设定项未被任何构造函数使用? 例如,这个程序是否格式错误,因为g<A>是 odr-used 并且因此它的定义被隐式实例化? MSVC 认为不。 Clang、GCC 和 ICC 认为是的。 https://g ...
在默认成员初始值设定项中使用是否仍然是 odr-use,即使默认成员初始值设定项未被任何构造函数使用? 例如,这个程序是否格式错误,因为g<A>是 odr-used 并且因此它的定义被隐式实例化? MSVC 认为不。 Clang、GCC 和 ICC 认为是的。 https://g ...
我想编写一个接受不完整类型C作为模板参数的 class 模板M 但我也希望C在最终定义时具有一些特征。 此代码是否有保证编译如果定义(标志), 并且如果编译失败?定义(标志)? ...
标题中的问题很清楚。 更具体地说,请考虑以下示例: 此代码与GCC和Clang编译 。 根据[temp.inst] / 1 : 除非已明确实例化或明确专门化类模板特化,否则在需要完全定义的对象类型的上下文中引用特化时或者类类型的完整性影响程序的语义时,将隐式实例化类模板 ...
a<int>的实例化应该是一个错误,因为int::type是非法的。 但似乎f1<int>不能导致a<T>的实例化,但f2<int>可以。 什么原因? ...