revision #1: 更新第二章中已维护的代码

This commit is contained in:
Changkun Ou
2018-04-02 00:28:05 +02:00
parent 11efa38dba
commit 838d30ef5a
28 changed files with 460 additions and 111 deletions

51
code/2/todo/2.8.cpp Normal file
View File

@@ -0,0 +1,51 @@
//
// 2.8.cpp
// c++1x tutorial
//
// created by changkun at changkun.de
//
// 强类型枚举
#include <iostream>
template<typename T>
std::ostream& operator<<(typename std::enable_if<std::is_enum<T>::value, std::ostream>::type& stream, const T& e)
{
return stream << static_cast<typename std::underlying_type<T>::type>(e);
}
// 如果两个都定义为 value1 和 value2将引发重定义错误
enum Left {
left_value1 = 1,
left_value2
};
enum Right {
right_value1 = 1,
right_value2
};
enum class new_enum : unsigned int{
value1,
value2,
value3 = 100,
value4 = 100
};
int main() {
if (Left::left_value1 == Right::right_value2) {
std::cout << "Left::value1 == Right::value2" << std::endl;
}
// 引发编译错误
// if(new_enum::value1 == 1) {
// std::cout << "true!" << std::endl;
// }
if (new_enum::value3 == new_enum::value4) {
std::cout << "new_enum::value3 == new_enum::value4" << std::endl;
}
std::cout << new_enum::value3 << std::endl;
return 0;
}