考虑一下这个C++ 11代码:
enum class Color : char { red = 0x1, yellow = 0x2 }
// ...
char *data = ReadFile();
Color color = static_cast<Color>(data[0]);
Run Code Online (Sandbox Code Playgroud)
假设数据[0]实际上是100.根据标准设置的颜色是什么?特别是如果我以后做的话
switch (color) {
// ... red and yellow cases omitted
default:
// handle error
break;
}
Run Code Online (Sandbox Code Playgroud)
标准是否保证会触发默认值?如果没有,在这里检查错误的正确,最有效,最优雅的方法是什么?
编辑:
作为奖励,该标准是否对此有任何保证,但是用简单的枚举?
我曾经知道如何做到这一点,但我忘记了.有时,在使用Django shell时,您会犯一个错误并导致事务中止.之后,您执行的任何进一步查询都将导致DatabaseError:当前事务中止,命令被忽略,直到事务块结束.但是,我认为有一种方法可以在手动发生时回滚事务,因此您不必重新启动会话.谁能告诉我它是什么?
此错误报告(https://code.djangoproject.com/ticket/10813)引用了该技术,但没有解释它.运行django.db.transaction.rollback会导致"TransactionManagementError:此代码不在事务管理下".
我的项目中有几个Mako模板,它们被命名为header.html.tmpl和settings.py.tmpl.我想向Eclipse添加文件关联,以便使用适当的编辑器打开它们.例如,我想header.html.tmpl在HTML编辑器settings.py.tmpl中打开,在Python编辑器中打开,等等.我转到首选项 - >文件关联,我尝试添加*.py.tmpl到列表但是在我点击"确定"之后没有任何反应,并且所需的扩展名不会出现在列表中.如果我尝试使用.py.tmpl我可以将它添加到列表并将Python编辑器添加到其关联的编辑器,但是当我双击.py.tmpl文件时它不使用正确的编辑器.
显然它可能只是使用-tmpl而不是.tmpl,但我想知道是否有人知道这方面或可以确认它是一个错误/缺少功能.