相关疑难解决方法(0)

是将std :: pair <T1,T2> const&转换为std :: pair <T1 const,T2> const&safe?

它是安全的(在理论上还是在实践中),以reinterpret_caststd::pair<T1, T2> const &std::pair<T1 const, T2> const &,假设程序员没有故意做了一些奇怪的类似专业std::pair<T1 const, T2>

c++ templates casting const reinterpret-cast

15
推荐指数
2
解决办法
958
查看次数

std :: is_assignable和std :: pair <const T,U>

正如所料,以下代码无法编译.

#include <type_traits>
#include <utility>
int main()
{
    using T = std::pair<const int, int>;
    const auto ok = std::is_assignable<T, T>::value; // true
    T x;
    T y;
    x = y; // compiler error
}
Run Code Online (Sandbox Code Playgroud)

但是以下三个编译器的值ok 是正确的.

  • g ++(Ubuntu 5.4.0-6ubuntu1~16.04.4)5.4.0 20160609
  • clang版本3.8.0-2ubuntu4(标签/ RELEASE_380/final)
  • MSVC++ 2017 15.2 26430.6

为什么是这样?

c++ c++11

3
推荐指数
1
解决办法
162
查看次数

标签 统计

c++ ×2

c++11 ×1

casting ×1

const ×1

reinterpret-cast ×1

templates ×1