我可以创建一个C++ 11模板函数来显式地将bitset转换为unsigned long:
template<size_t N>
unsigned long U(bitset<N> x) {
return x.to_ulong();
}
// Explicit conversion
unsigned long y = U(bitset<4>("1010"));
Run Code Online (Sandbox Code Playgroud)
有没有办法使用C++ 11模板帮助函数"隐式"将bitset转换为unsigned long.例如,如果我将一个bitset分配给unsigned long,那么我希望它自动将bitset转换为正确的类型:
// What Template Function in C++11?
// Implicit Conversion
unsigned long z = bitset<4>("1010");
Run Code Online (Sandbox Code Playgroud)
(如果不可能使用C++ 11模板函数创建一个隐式转换规则转换为"unsigned long",那么从bitset派生一个具有转换函数到unsigned long的新类也是可以接受的.这也可能吗? )
要含蓄转换A到B,无论是:
B必须有一个非显式构造函数A,或A必须具有非显式转换operator B().这两个都必须只是成员函数.
既然你无法修改std::bitset或unsigned long答案是:不,你不能隐式转换std::bitset为unsigned long.只是明确的.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |