我有一个可复制的类型,但复制可能很昂贵.我已经实现了移动构造函数和移动赋值.但是我遇到性能问题,人们忘记在传递值时调用move().
是否有良好的C++ 11样式来删除复制构造函数,而是为实际需要复制的罕见情况提供显式的copy()方法?这在其他语言(Ruby,JavaScript)中是惯用的,但我不知道C++标准库中的任何内容都禁止纯粹为了性能而复制.例如,std :: vector <>是可复制的,而std :: unique_ptr <>和std :: thread由于其他原因是不可复制的.
在Clojure中,我发现这令人惊讶:
> (count nil)
0
Run Code Online (Sandbox Code Playgroud)
我希望有一个类型错误,就像在这种情况下:
> (count 77)
java.lang.UnsupportedOperationException: count not supported on this type: Long
Run Code Online (Sandbox Code Playgroud)
既然nil不是清单:
> (list? nil)
false
Run Code Online (Sandbox Code Playgroud)
是否nil具有空序列的特殊状态?