小编Pal*_*lec的帖子

为什么unique_ptr :: operator*()没有安全的替代方案?

std::vector将成员函数at()作为安全替代operator[],以便应用绑定检查并且不会创建悬空引用:

void foo(std::vector<int> const&x)
{
  const auto&a=x[0];     // What if x.empty()? Undefined behavior!
  const auto&a=x.at(0);  // Throws exception if x.empty().
}
Run Code Online (Sandbox Code Playgroud)

但是,std::unique_ptr缺少相应的功能:

void foo(std::unique_ptr<int> const&x)
{
  const auto&a=*x;       // What if bool(x)==false? Undefined behavior!
}
Run Code Online (Sandbox Code Playgroud)

如果std::unique_ptr有这样一个安全的替代方案,那就好了,说成员ref()(和cref())永远不会返回一个悬空引用,而是抛出异常.可能的实施:

template<typename T>
typename add_lvalue_reference<T>::type
unique_ptr<T>::ref() const noexcept(false)
{
  if(bool(*this)==false)
    throw run_time_error("trying to de-refrence null unique_ptr");
  return this->operator*();
}
Run Code Online (Sandbox Code Playgroud)

这个标准没有提供这种东西有什么好的理由吗?

c++ unique-ptr dereference c++11 dangling-pointer

17
推荐指数
2
解决办法
1890
查看次数

构建时T4转换的产品仅在下一个构建中使用

我有一个VS项目,其中包含:

  1. TextTransform在a template.tt上运行的预构建操作以生成generated.cs

  2. generated.cs 列为要编译的文件之一(即在项目文件列表中)

当我构建项目时,执行预构建操作,generated.cs重新创建,但VS编译以前的版本generated.cs(我猜它在构建过程开始时加载到内存中).

如何使构建使用新版本generated.cs(即在预构建操作中生成的版本)?如何强制构建订单?

请注意,文本转换输入是动态的,因此无法在设计时完成.

c# msbuild t4 visual-studio

16
推荐指数
1
解决办法
6389
查看次数

如何在Visual Studio中创建纯装配项目?

如何在Visual Studio中创建masm项目?我记得在课堂上这样做了一段时间,但我已经忘记了,谷歌只是让我在线组装.

assembly visual-studio

16
推荐指数
1
解决办法
1万
查看次数

如何在C#中更改控制台窗口的完整背景颜色?

在C#中,控制台具有可用于更改控制台背景颜色和控制台前景(文本)颜色的属性.

Console.BackgroundColor // the background color
Console.ForegroundColor // the foreground/text color
Run Code Online (Sandbox Code Playgroud)

问题是背景颜色仅适用于写入文本的位置,而不适用于自由空间.

Console.BackgroundColor = ConsoleColor.White; // background color is white
Console.ForegroundColor = ConsoleColor.Blue;  // text color is blue
Run Code Online (Sandbox Code Playgroud)

现在,使用上面的代码,它确实将文本变为蓝色,但它只将文本的背景变为白色,而不是整个控制台窗口的背景.

这是我的意思的一个例子: 背景仅涵盖文本的背景,而不是整个控制台窗口的背景

如您所见,白色背景仅显示在文本后面,并不会更改整个控制台窗口的颜色.

如何更改整个控制台窗口的颜色?

c# console background colors

16
推荐指数
2
解决办法
2万
查看次数

如何将水平中断应用于d3.js条形图

我正在使用人力车(基于d3.js)来绘制堆积的条形图.问题是第一个栏通常比其他栏更高,破坏了视觉反馈. 条形图比例不好

使用对数标度(我猜)这里不是一个选项,因为那时条形图中堆栈之间的比例会被破坏.我想引入一个横向中断,如下图所示: 条形图与水平休息

但是,我找不到Rickshaw或d3.js的任何开箱即用的功能来做这样的事情.有关如何制作一个的任何建议?

charts d3.js rickshaw

16
推荐指数
1
解决办法
2682
查看次数

什么是ffmpeg中的比特流过滤器?

仔细阅读FFmpeg比特流过滤器文档后,我仍然不明白它们的真正含义.

该文件指出过滤器:

执行比特流级别修改而不执行解码

谁能进一步向我解释一下?用例会大大澄清事情.此外,有明显不同的过滤器.他们有什么不同?

ffmpeg filter bitstream

16
推荐指数
1
解决办法
1万
查看次数

如何使用jQuery动态创建单选按钮?

我正在开发一个小应用程序,我想在一行中创建20个单选按钮.

我怎么能用jQuery做到这一点?

javascript jquery

15
推荐指数
3
解决办法
6万
查看次数

GNU make:"'目标'没有什么可做的","'目标'是最新的"

GNU如何决定发出哪些消息?我正在使用的Makefile导致在目标启动日期时发出"目标"消息无法执行任何操作.但我认为"目标"是最新的更合适.

makefile gnu-make

15
推荐指数
1
解决办法
8044
查看次数

将Cc,Bcc和Subject字段添加到发送Android应用的电子邮件中的消息中

我在Android上发送电子邮件发送应用程序.通过单击按钮启动应用程序时,仅显示"到"字段.

为什么不显示抄送,密送和主题字段?如何将这些字段添加到我的应用程序?以及如何在"收件人"字段中显示默认电子邮件地址?(现在默认情况下,"收件人"字段中没有任何内容.)

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
clickBtn = (Button) findViewById(R.id.sendemail);
clickBtn.setText("Send email");
clickBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
        String aEmailList[] = { "user@fakehost.com","user2@fakehost.com" };
        String aEmailCCList[] = { "user3@fakehost.com","user4@fakehost.com"};
        String aEmailBCCList[] = { "user5@fakehost.com" };
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList);
        emailIntent.putExtra(android.content.Intent.EXTRA_CC, aEmailCCList);
        emailIntent.putExtra(android.content.Intent.EXTRA_BCC, aEmailBCCList);
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My subject");
        emailIntent.setType("text/plain");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "My message body.");
        startActivity(emailIntent);
        //startActivity(Intent.createChooser(emailIntent, "Send mail..."));
        finish();
    }
});
Run Code Online (Sandbox Code Playgroud)

android

15
推荐指数
1
解决办法
8967
查看次数

这个构造函数初始值设定项是否会导致悬空引用?

我正在学习Stanley B. Lippman的C++ Primer第4版.在第12.4.1节中,当作者讨论构造函数初始值设定项时,他给出了这个例子:

class ConstRef {
  public:
    ConstRef(int ii);
  private:
    int i;
    const int ci;
    int &ri;
};
// OK: explicitly initialize reference and const members.
ConstRef::ConstRef(int ii): i(ii), ci(i), ri(ii) { }
Run Code Online (Sandbox Code Playgroud)

我怀疑这可能导致悬挂引用ri指向ii,这是暂时的.我对吗?

c++ reference dangling-pointer

15
推荐指数
1
解决办法
942
查看次数