小编BCo*_*tes的帖子

如何使用c ++(0x)中的多个返回值进行初始化

tuple 在boost和TR1/c ++ 0x中提供了一个方便的(对于函数的编写者)方法从函数返回两个值 - 但它似乎损坏了调用者语言的一个主要特征:简单使用的能力初始化变量的函数:

T happy();
const auto meaningful_name(happy()); // RVO means no excess copies
Run Code Online (Sandbox Code Playgroud)

但对于:

tuple<T,U> sad();
Run Code Online (Sandbox Code Playgroud)

我们要么放弃为返回值选择有意义的名称的能力,要么在get<n>()任何地方使用:

const auto two_unrelated_things(sad());
Run Code Online (Sandbox Code Playgroud)

或临时:

const auto unwanted_named_temporary(sad());
const auto one_name(get<0>(unwanted_named_temporary));
const auto two_name(get<1>(unwanted_named_temporary));
Run Code Online (Sandbox Code Playgroud)

或从初始化切换到赋值,仅在类型可分配时有效,并且中断auto:

tuple_element<0, decltype(sad())>::type one_mutable; // there might be a less
tuple_element<1, decltype(sad())>::type two_mutable; // verbose way
tie(one_mutable,two_mutable) = sad();
Run Code Online (Sandbox Code Playgroud)

或者对当地​​班级做一些不自然的事情:

const struct ugh { 
  ugh( decltype(sad()) rhs ) : one_name(get<0>(rhs)), two_name(get<1>(rhs)) {}
  const tuple_element<0, decltype(sad())>::type one_name;
  const tuple_element<1, decltype(sad())>::type two_name;
} stuff(sad()); …
Run Code Online (Sandbox Code Playgroud)

c++ boost tuples c++11

11
推荐指数
1
解决办法
664
查看次数

通过PhpMyAdmin复合外键约束?

有没有办法通过PhpMyAdmin接口向InnoDB表添加复合(多列)外键?我已经在目标表中拥有了相应的复合主键,并且我可以单列外键约束,但是我在界面中找不到复合键的方法.

Table Log
- Date
- Service
PRIMARY KEY (Date,Service)

Table Issue
- Issue_Id
- Log_Date
- Log_Service
PRIMARY KEY Issue_Id
FOREIGN KEY (Log_Date=Log.Date,Log_Service=Log.Service)
Run Code Online (Sandbox Code Playgroud)

除外键外,一切都已设置好; 我进入PhpMyAdmin关系视图,我只能看到如何针对Log.Date设置FK而不是针对Log.Service.

mysql rdbms foreign-keys phpmyadmin composite-key

6
推荐指数
1
解决办法
5377
查看次数

文件权限为MSI自我修复功能

在Windows上,当通过MSI安装的程序通过公布的快捷方式运行时,它会检查所有已安装的功能是否存在并运行自我修复/自动修复以替换丢失的功能.

是否可以将文件的ACL设置为安装时的功能,如果ACL错误,将自我修复?如果重要,该文件有问题

  1. 我们的MSI没有安装
  2. 可能不存在(不存在是正常的,只要它具有适当的权限,如果它存在)

我目前正在使用WiX来构建我的安装程序.

windows-installer file-permissions wix

3
推荐指数
1
解决办法
372
查看次数