相关疑难解决方法(0)

addressof()可以实现为constexpr函数吗?

我需要写一个constexpr地址的函数,但我发现它是不可能的.有谁知道这是否可能?

cppreference.com上的参考实现:

template< class T >
T* addressof(T& arg) 
{
  return reinterpret_cast<T*>(
           &const_cast<char&>(
              reinterpret_cast<const volatile char&>(arg)
           )
         );
}
Run Code Online (Sandbox Code Playgroud)

使用reinterpret_cast(类似于GCC实现),所以它不会这样做.我可以看到最新的C++标准草案,N3485也不要求addressof()是constexpr,即使很多函数形成头<utility>最近已升级到constexpr.

一个可能的,虽然不是很有说服力或有用的用例,它将是:

constexpr MyType m;
constexpr MyType const* p = &m;           // this works today
constexpr MyType const* p = addressof(m); // this is my question
Run Code Online (Sandbox Code Playgroud)

想象一下,MyType重载了operator&.

c++ c++11

16
推荐指数
2
解决办法
808
查看次数

标签 统计

c++ ×1

c++11 ×1