Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用某些引用重新解释\u cast右值_C++_Visual C++ - Fatal编程技术网

C++ 使用某些引用重新解释\u cast右值

C++ 使用某些引用重新解释\u cast右值,c++,visual-c++,C++,Visual C++,如何对临时/右值进行直接重新解释\u cast?考虑下面的例子: struct s { void f( ) { } }; auto m = &s::f; auto p = reinterpret_cast< void * & >( m ); // works: ref cast (also, c-style ptr casting) union u { decltype( &s::f ) o; void * c; }; au

如何对临时/右值进行直接
重新解释\u cast
?考虑下面的例子:

struct s
{
    void f( )
    { }
};

auto m = &s::f;
auto p = reinterpret_cast< void * & >( m );
// works: ref cast (also, c-style ptr casting)

union u
{
    decltype( &s::f ) o;
    void * c;
};
auto pr2 = u { &s::f }.c;
// works: type punning

auto pr = reinterpret_cast< void * magic_ref >( &s::f );
// nothing to do this
结构
{
空f()
{ }
};
自动m=&s::f;
自动p=重新解释铸件(m);
//作品:ref铸件(也是c型ptr铸件)
联合大学
{
decltype(&s::f)o;
无效*c;
};
auto pr2=u{&s::f}.c;
//作品:类型双关
自动pr=重新解释施法(&s::f);
//没什么可做的
看来你只是想

void* pr = reinterpret_cast<void*>(&s::f);
void*pr=reinterpret\u cast(&s::f);


但是
void*
和成员函数指针是无效的。

这将不会编译。您需要执行类似于
*(void**)&var
(void*&)var
@superdeveloper的操作,但会出现警告。@superdeveloper:转换无效
void*
,成员指针函数不兼容,您只需解决使诊断静音的问题。这不是问题的答案。评论不用于扩展讨论;这段对话已经结束。