【发布时间】:2015-07-24 15:09:16
【问题描述】:
我正在学习 C++ 并阅读 Andrei Alexandrescu 关于泛型编程的书。他提出了一个模板类,可以用来在类型之间进行转换:
template <class To, class From>
To safe_reinterpret_cast(From from)
{
assert(sizeof(From) <= sizeof(To));
return reinterpret_cast<To>(from);
}
这适用于:
int i = 5;
char* p = safe_reinterpret_cast<char*>(i);
但失败了
std::string a("apple");
char* pp = safe_reinterpret_cast<char*>(a);
这是编译时的错误失败:
invalid cast from type 'std::basic_string<char>' to type 'char*'
为什么这个演员会失败?
【问题讨论】:
标签: c++ reinterpret-cast