这是编译器实现特性。不应该依赖。
也许这个编译器还ok,那个编译器就不能通过了。
至少gcc有这么个non-trivial optimization.
当发现T可以trivially destructable的时候,就调用一个空函数:
107\u2502 template<>
108\u2502 struct _Destroy_aux<true>
109\u2502 {
110\u2502 template<typename _ForwardIterator>
111\u2502 static void
112\u251c> __destroy(_ForwardIterator, _ForwardIterator) { }
113\u2502 };
这导致你的代码避开了 x->~T()
【 在 capriccio 的大作中提到: 】
: 那你就认输吧,我的实际代码是:
: std::vector<float[4]> b(4000);
: 编译没问题,然后写入读出数据都没有问题
: ...................
--
FROM 209.249.20.*