小编cma*_*ter的帖子

为什么要设计一种具有独特匿名类型的语言?

作为 C++ lambda 表达式的一个特性,这一直困扰着我:C++ lambda 表达式的类型是唯一且匿名的,我根本无法将其写下来。即使我创建了两个语法完全相同的 lambda,结果类型也被定义为不同的。结果是,a) lambdas 只能传递给模板函数,允许编译时,不可描述的类型与对象一起传递,b) lambdas 只有在通过std::function<>.

好的,但这只是 C++ 的方式,我准备将它写为该语言的一个令人讨厌的功能。然而,我刚刚了解到 Rust 似乎也做同样的事情:每个 Rust 函数或 lambda 都有一个唯一的匿名类型。现在我想知道:为什么?

所以,我的问题是:
从语言设计者的角度来看,将独特的匿名类型的概念引入语言有什么好处?

c++ types language-design rust

92
推荐指数
7
解决办法
5949
查看次数

(uint64_t)-1是否保证产生0xffffffffffffffff?

我知道,C标准很好地定义了(unsigned)-1必须产生2 ^ n-1,即一个无符号整数,其所有位都设置好.同样的道理(uint64_t)-1ll.但是,我在C11标准中找不到指定如何(uint64_t)-1解释的东西.

因此,问题是:C标准中是否有任何保证,以下哪项适用?

(uint64_t)-1 == (uint64_t)(unsigned)-1   //0x00000000ffffffff
(uint64_t)-1 == (uint64_t)(int64_t)-1    //0xffffffffffffffff
Run Code Online (Sandbox Code Playgroud)

c c++ standards c11

15
推荐指数
2
解决办法
5258
查看次数

在Android中裁剪固定大小的图像

我正在尝试裁剪图像,但我希望能够将裁剪区域设置为640px x 640px.我想阻止用户缩小到一个非常小的区域.所以基本上我宁愿为裁剪区域设置固定的高度和宽度.我已经调查了几个第三方库,但没有看到解决这个问题.我怎样才能做到这一点?

在此输入图像描述

android crop

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

列出具有 git 状态的文件

背景

我很清楚如何git status运作,甚至了解git ls-files. 通常git status这就是我所需要和想要的,它完美地回答了这个问题:“我的状态是什么,哪些文件需要我注意?”

但是,我一直无法找到一个快速命令来回答以下问题:“我有哪些文件,它们各自的状态是什么?” 因此,我需要目录的完整列表(如ls -la),其中有一列显示每个文件/目录的状态。


我尝试过的

git status -s --ignoredHEAD非常接近我想要的输出格式,但它只是不会列出、索引和工作目录之间未更改的文件。此外,它还会递归到目录中。

git ls-files似乎能够以可编写脚本的形式提供所有必需的信息,但我无法阻止它递归列出所有目录的内容。

显然,我可以将一些东西组合在一起,获取这两个命令的输出并提供我想要的视图。然而,如果已经有一些可用的命令,我不想重新发明轮子。


问题

有没有办法列出目录中的所有文件及其各自的 git 状态?
我想要一个完整的列表,显示与要显示的文件完全相同的文件ls


笔记

这个另一个问题不能回答我的问题,因为我肯定想要一个ls等价的问题。包括未修改、忽略和未跟踪的文件,但不包括目录内容。

git bash ls

7
推荐指数
1
解决办法
3683
查看次数

整数文字中前导零的含义

我正在学习(ANSI)C 语言编程语言(第2版).

这是2.10赋值运算符和表达式的代码片段:

1  /* bitcount() counts the number of 1-bits in its integer argument */
2  int bitcount(unsigned x)
3  {
4      int b;
5      for (b = 0; x != 0; x >>= 1)
6          if (x & 01)
7              b++;
8      return b;
9  }
Run Code Online (Sandbox Code Playgroud)

我很困惑,为什么x & 01写在第6行而不是x & 1x & 0x1?是0之前1有必要吗?

c

6
推荐指数
2
解决办法
1341
查看次数

是否可以从git bisect错误中更有针对性地恢复?

我知道,这是可以修复一个git bisect通过会话git bisect log,并git bisect replay在答案中描述了这个问题.

然而,当我搞乱一个bisect会话时,这可能只是一个错误的决定,我希望能够直接修复它(即不会中止整个事情).

例如,我可以想象应该可以rm .git/refs/bisect/good-<hash>撤消错误git bisect good.

这是正确的,还是我错过了什么?
并且,可以对错误进行类似的操作git bisect bad吗?

git git-bisect

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

在编译时查找基类

标题几乎说明了一切:在C ++中,有没有一种方法可以在编译时获取类的基本类型?即 是否可以将一个类传递给模板,并让该模板使用将给定类的基础传递给它的其他模板?

我的问题不是我自己是否可以实现这种功能,没有问题(使用特质等)。我的问题是,是否有一些(模糊的)内置功能可用于此目的。

c++ templates static-polymorphism

5
推荐指数
1
解决办法
1144
查看次数

GIT SVN:获取重新创建的SVN分支,没有错误的合并父级

我的上游svn存储库有以下情况:

我创建了一个svn分支并做了一些工作,这导致了一个非常复杂的历史.所以我再次删除了它,保留了git提交,这让我可以很好地清理历史.

一旦我准备好补丁系列,我就重新使用了我的分支svn copy,然后是git svn fetch.我的想法是,然后我将清理后的历史记录重新定义到新svn分支上,以便我可以轻松地将其发布git svn dcommit.

但是,git svn fetch没有做到我所期望的.这是我的预期(假git log --oneline --decorate --graph输出):

* xxxxxxx (svn-branch)
* xxxxxxx (svn-parent-branch)
...
somewhere further down, unrelated to the above
* xxxxxxx (old-svn-branch-head)
Run Code Online (Sandbox Code Playgroud)

但这就是我得到的:

* xxxxxxx (svn-branch)
|\
| * xxxxxxx (svn-parent-branch)
|
* xxxxxxx (old-svn-branch-head)
Run Code Online (Sandbox Code Playgroud)

如您所见,git svn fetch完全忽略了svn分支被删除的事实,将重新创建的svn提交映射到合并提交git.现在,我不会对此大惊小怪,如果这没有任何后果,但不幸的是,错误的连接会混淆git合并算法,在跨新分支基础提交进行重新定位时会产生虚假的合并冲突.

所以我的问题是:我怎么能诱使git svn fetch不将新的分支基础提交与错误的父级链接,或以某种方式修复我的git repo以保持发布我的东西的能力 …

svn git git-svn

5
推荐指数
1
解决办法
457
查看次数

仅用于向上投射

我们都知道 C 风格的强制转换在 C++ 中被认为是邪恶的。这就是为什么它们被, 和代替const_cast<>,以提供更多定制的转换,允许程序员只允许预期的转换类。到现在为止还挺好。static_cast<>dynamic_cast<>

但是,似乎没有内置语法来执行显式向上转换:一种在不允许反向的情况下Base& baseRef = derived显式执行其他隐式转换的方法

虽然我知道这是一个很小的极端情况(大多数时候隐式转换工作得很好),但我想知道有哪些技术可以在用户代码中实现这种强制转换。我在想一些事情

template<class T>
class upcast {
    public:
        template<class U, typename = typename std::enable_if<std::is_convertible<U, T>::value>::type>
        upcast(U value) : value(value) {}
        operator T() { return value; }
    private:
        T value;
};
Run Code Online (Sandbox Code Playgroud)

然而,这似乎太复杂了,而且由于我不是模板元编程方面的专家,我想问一下是否有不同/更好/更简单的方法。

c++ upcasting template-meta-programming

5
推荐指数
1
解决办法
376
查看次数

是否可以在像C这样的shell bash函数中将变量定义为静态变量?

在C语言中,我可以在这样的函数中定义一个静态变量

int func() {
    static int var=0
    .....
}
Run Code Online (Sandbox Code Playgroud)

在shell bash linux中有什么等效的东西吗?

是否可以将bash shell函数的局部变量定义为静态变量?

c linux bash shell

4
推荐指数
1
解决办法
8808
查看次数

Git:忽略子模块中未跟踪的文件

在我的git repo中,我已经导入了其他项目作为子模块。到目前为止,一切都很好。但是,导入项目的维护者对其.gitignore文件有些草率。因此,在构建导入的项目之后,git status(在子模块中)列出了大量的未跟踪文件。因此,git status在我自己的项目中说:

modified:   <submodule> (untracked content)
Run Code Online (Sandbox Code Playgroud)

我的问题是:有什么办法可以告诉您git在不修复上游.gitignore文件的情况下忽略这些未跟踪的文件?


我完全意识到可能的答案是“否”,并且我已经看到了一个SO问题该问题告诉我不可能忽略对跟踪文件的更改。这对我来说完全有意义,而与文件是否在子模块中无关。但是,我只关心忽略未跟踪的文件,因此我认为有一个很好的解决方案来解决我的问题。

git gitignore git-submodules

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