我有一个函数返回一个由两个整数组成的命名结构,如下所示:
struct myStruct {int i; int j;};
myStruct myFunction(int myArg){
switch (myArg) {
case 0: return {1,2};
case 1: return {2,3};
default: return {4,5};
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够从 switch 语句返回适当初始化的结构。我可以通过声明一个命名结构并初始化它,然后返回命名结构来做到这一点,但是如果我可以让编译器为我创建匿名结构(如上面的示例所示),那么它会更干净 - 它无法编译。这可以(合法地)发挥作用吗?或者实现我的目标的最干净的方法是什么?
以下内容无法编译:
enum E {A,B,C};
template<E m>
void foo(E m) {}
int main() {
foo(A);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
我不明白这里到底出了什么问题.为什么编译器不能从函数参数中推导出模板参数?
我需要做些什么来完成这项工作?
C++标准对缩小从double到int类型的转换有什么保证?它与Q31328190中解释的Java相同: