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*
,成员指针函数不兼容,您只需解决使诊断静音的问题。这不是问题的答案。评论不用于扩展讨论;这段对话已经结束。