小编rub*_*nvb的帖子

161
推荐指数
5
解决办法
5万
查看次数

'git format-patch和'git diff'有什么区别?

我没有看到'git format-patch'和'git diff'的输出有什么区别,有没有?并且我不能使用'git diff'生成补丁然后使用git apply应用它吗?

我的问题是我对索引添加了更改,但显然git format-patch只接受提交,所以如果我可以使用diff的输出,那么我可以使用此命令为索引中的更改生成一个补丁:

git diff --cached > index.patch
Run Code Online (Sandbox Code Playgroud)

git diff patch

85
推荐指数
3
解决办法
4万
查看次数

std :: map扩展初始化列表会是什么样的?

如果它甚至存在,std::map扩展的初始化列表会是什么样的?

我已经尝试了一些组合......好吧,我能用GCC 4.4想到的一切,但没有发现任何编译.

c++ dictionary initializer-list c++11

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

浏览MSYS中的文件夹

这将是当天最棘手的问题.如何在MSYS shell中导航我的Windows文件夹结构?当我启动shell时,我看到的只是一个'〜'.我输入'ls',文件夹为空.我只想知道如何到达我的驱动器.

bash msys

80
推荐指数
3
解决办法
4万
查看次数

`const auto`有什么意义吗?

我认为问题很清楚.将auto关键字自动检测常量性,或总是返回一个非const类型,即使有如.函数的两个版本(一个返回const,另一个不返回).

仅仅为了记录,我确实const auto end = some_container.end()在我的for循环之前使用,但我不知道这是否必要或甚至与正常情况不同auto.

c++ const c++11

74
推荐指数
3
解决办法
5万
查看次数

为什么std :: array没有一个构造函数来为数组填充一个值?

是没有

std::array<T,size>::array(const T& value);
Run Code Online (Sandbox Code Playgroud)

疏忽?它似乎对我有用,而动态容器(如std::vector)确实有类似的构造函数.

我完全清楚

std::array<T,size>::fill(const T& value);
Run Code Online (Sandbox Code Playgroud)

但这不是构造函数,内存将首先归零.如果我想什么都-1好像这个家伙

c++ c++11 stdarray

72
推荐指数
4
解决办法
3万
查看次数

lambda函数对象中的静态变量如何工作?

lambda中使用的静态变量是否在函数调用中保留,其中使用了lambda?或者每个函数调用再次"创建"函数对象?

无用的例子:

#include <iostream>
#include <vector>
#include <algorithm>

using std::cout;

void some_function()
{
    std::vector<int> v = {0,1,2,3,4,5};
    std::for_each( v.begin(), v.end(),
         [](const int &i)
         {
             static int calls_to_cout = 0;
             cout << "cout has been called " << calls_to_cout << " times.\n"
                  << "\tCurrent int: " << i << "\n";
             ++calls_to_cout;
         } );
}

int main()
{
    some_function();
    some_function();
}
Run Code Online (Sandbox Code Playgroud)

这个程序的正确输出是什么?如果lambda捕获局部变量,它是否依赖于事实?(它肯定会改变函数对象的底层实现,因此可能会产生影响)是否允许行为不一致?

我不是在寻找:"我的编译器输出......",这是一个太新的功能,无法信任当前的实现恕我直言.我知道要求标准报价似乎很受欢迎,因为世界发现这样的事情存在,但我仍然想要一个不错的来源.

c++ lambda static c++11

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

如何在所有可变参数模板args上调用函数?

我想要做

template<typename... ArgTypes> void print(ArgTypes... Args)
{
   print(Args)...;
}
Run Code Online (Sandbox Code Playgroud)

并且它相当于这个相当庞大的递归链:

template<typename T, typename... ArgTypes> void print(const T& t, ArgTypes... Args)
{
  print(t);
  print(Args...);
}
Run Code Online (Sandbox Code Playgroud)

然后是我想要打印的每种类型的显式单参数专精.

递归实现的"问题"是生成了大量冗余代码,因为每个递归步骤都会产生一个新的N-1参数函数,而我想要的代码只会为单个N-arg print函数生成代码,并且具有最多的N专业print功能.

c++ variadic-templates c++11

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

c ++结构是否有默认构造函数?

我写了以下代码片段:

void foo()
{
    struct _bar_ 
    {
        int a;
    } bar; 

    cout << "Value of a is " << bar.a;
}
Run Code Online (Sandbox Code Playgroud)

并用g ++ 4.2.1(Mac)编译它.输出为"a的值为0".

是否真的说c ++中的结构的数据成员默认是初始化的(与c相比)?或者观察到的结果是巧合吗?

我可以想象c ++中的结构有一个默认的构造函数(因为结构和类在c ++中几乎相同),这可以解释为什么bar的数据成员a初始化为零.

c++

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

C++ 11中的空宏参数是否合法?

我有时会故意省略宏观论点.例如,对于类似函数的宏

#define MY_MACRO(A, B, C)  ...
Run Code Online (Sandbox Code Playgroud)

我可以称之为:

MY_MACRO(, bar, baz)
Run Code Online (Sandbox Code Playgroud)

技术上还有3个论点; 只是第一个是"空的".这个问题不是关于可变参数的宏.

当我这样做时,我在使用-ansi(又名-std=c++98)编译时会收到来自g ++的警告,但是当我使用时却没有-std=c++0x.这是否意味着新的宏args在新的C++标准中是合法的?

这是我的全部问题,但期待"你为什么要这样做?" 回复,这是一个例子.我喜欢保持.h文件不被函数体整理,但是在.h文件之外实现简单的访问器是很乏味的.因此我写了以下宏:

#define IMPLEMENT_ACCESSORS(TEMPLATE_DECL, RETURN_TYPE, CLASS, FUNCTION, MEMBER) \
  TEMPLATE_DECL                                                         \
  inline RETURN_TYPE* CLASS::Mutable##FUNCTION() {                      \
    return &MEMBER;                                                     \
  }                                                                     \
                                                                        \
  TEMPLATE_DECL                                                         \
  inline const RETURN_TYPE& CLASS::FUNCTION() const {                   \
    return MEMBER;                                                      \
  }
Run Code Online (Sandbox Code Playgroud)

这就是我如何将它用于包含被int调用的类模板int_:

IMPLEMENT_ACCESSORS(template<typename T>, int, MyTemplate<T>, Int, int_)
Run Code Online (Sandbox Code Playgroud)

对于非模板类,我不需要template<typename T>,所以我省略了这个宏参数:

IMPLEMENT_ACCESORS(, int, MyClass, Int, int_)
Run Code Online (Sandbox Code Playgroud)

c++ macros c++11

25
推荐指数
3
解决办法
8317
查看次数