相关疑难解决方法(0)

应该允许std :: unique_ptr <void>

这是一个非常简单的问题.请考虑以下代码:

#include <iostream>
#include <memory>

typedef std::unique_ptr<void> UniqueVoidPtr;

int main() {
    UniqueVoidPtr p(new int);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用以下命令使用cygwin(g ++ 4.5.3)进行编译g++ -std=c++0x -o prog file.cpp就可以了.但是,使用Microsoft编译器(VS 2010或2013)进行编译时出现此错误:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\memory(2067) : error C2070: 'void': illegal sizeof operand
        C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\memory(2066) : while compiling class template member function 'void std::default_delete<_Ty>::operator ()(_Ty *) const'
        with
        [
            _Ty=void
        ]
        C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\type_traits(650) : see reference to class template instantiation 'std::default_delete<_Ty>' being compiled
        with
        [ …
Run Code Online (Sandbox Code Playgroud)

c++ gcc visual-studio-2010 unique-ptr c++11

24
推荐指数
3
解决办法
9187
查看次数

标签 统计

c++ ×1

c++11 ×1

gcc ×1

unique-ptr ×1

visual-studio-2010 ×1