小编A. *_* K.的帖子

为什么for_each在没有std ::前缀的情况下工作

我认为for_each是在标准命名空间中定义的,但是这段代码实际上是使用以下编译器标志编译和运行的.有人可以解释一下原因吗?

  //@filename myprog.cpp 
  //g++-4.5 --std=c++0x myprog.cpp

  #include<iostream>
  #include<algorithm>

  int main()
  {
    std::vector<int> v{1,2,3,4,5};
    std::cout<<"printing the number\n";
    for_each(v.begin(),v.end(),[](int num) {//no std::for_each
        std::cout<<num<<"\t";
    });
 return 0;
 }
Run Code Online (Sandbox Code Playgroud)

c++ namespaces c++11

12
推荐指数
1
解决办法
479
查看次数

如何指示gcc/clang将临时文件输出到特定目录

使用--save-temps选项保存临时文件时,gcc/clang会将临时文件输出到与输入文件相同的目录中.是否有选项指示gcc将文件输出到其他目录.

要么

不使用--save-temps选项时,临时文件是在默认目录(即$ TMPDIR,如/ tmp)中创建的,但是一旦创建了目标文件,它们就会被删除.有没有办法指示编译器保留这些文件而不是删除它们(我认为唯一的选择是--save-temps,它有上述问题)

command-line gcc g++ clang clang++

12
推荐指数
1
解决办法
8815
查看次数

编程语言,其中值和对象是不同的

我正在尝试开始使用Alex Stepanov和Paul McJones的"编程元素".在Page5最后一段:他们说,

"本书使用的编程语言无法将值和值类型描述为与对象和对象类型分开."

我的意思是,有人可以给出编程语言的示例,其中可以将值描述为与对象分离的实体.

c++ programming-languages functional-programming generic-programming

8
推荐指数
1
解决办法
190
查看次数

如何在不增加系统资源的情况下拖放大量文件?

我正在处理的程序的一个功能是能够从主窗口拖动对象并将它们作为文件拖放到Windows资源管理器中.

为此,我们覆盖COleDataSource::OnRenderGlobalData(),当格式为时CF_HDROP,我们将每个对象保存为文件.当对象数量很小时,这可以正常工作.

但是,当我们正在努力支持企业级别的对象时,当用户尝试将大量对象从我们的应用程序拖到Windows资源管理器中时,我们会看到很大的延迟,有时会导致挂起或最终崩溃.

我的猜测是这种情况正在发生,因为OnRenderGlobalData()它被调用了很多次,当然,每次它必须遍历被拖动的对象并将它们保存为文件.

我正在研究覆盖的想法OnRenderFileData(),但问题是它一次只处理一个文件.

当用户试图将大量对象拖到Windows资源管理器上时,有什么方法可以加快我们的应用程序,最好是将保存循环移动到只能在实际放置时执行一次的地方?

c++ windows mfc drag-and-drop

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

排序算法是否应该在比较函数中传递相同的元素

std :: sort的libcxx(llvm版本的c ++标准库)使用相同的元素调用比较谓词,即比较函子的两个参数都指向要排序的序列中的相同位置.一个简化的例子来说明这一点.

$ cat a.cc
#include <algorithm>
#include <vector>
#include <cassert>

int main(int argc, char** argv) {
  int size = 100;
  std::vector<int> v(size);

  // Elements in v are unique.
  for (int i = 0; i < size; ++i)
    v[i] = i;

  std::sort(v.begin(), v.end(),
            [&](int x, int y) { assert(x != y); return x < y; });

  return 0;
}

$ clang++ -std=c++11 -stdlib=libc++ a.cc -o a.out
$ ./a.out
a.out: a.cc:14: auto main(int, char **)::(anonymous class)::operator()(int, int) const: Assertion …
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm libstdc++ libc++

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

如何检查模板参数是否是结构/类?

对于这样的一个小例子,我只想接受Tif Tis astruct/class并拒绝内置类型,如“int”、“char”、“bool”等。

template<typename T>
struct MyStruct
{
   T t;
};
Run Code Online (Sandbox Code Playgroud)

c++ templates class-template c++11 c++14

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

如何在gdb中退出wh模式

gdb中的'wh'模式对我来说效果不佳.当我转储一些数据时,命令窗口和程序文本窗口重叠,看起来很混乱.我想退出wh模式而不退出调试器并且不杀死正在运行的程序.我设置了几个断点,所以我不想退出调试器.

linux debugging gdb

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

如何从文件中读取编译器标志

是否可以配置 clang 从文件中读取编译器标志。有没有像这样的标志:

 clang++ test.cpp -flags=flags-file
Run Code Online (Sandbox Code Playgroud)

这样可以clang从 读取编译器标志flags-file

c c++ compiler-construction clang

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

'static void'作为decl-specifier

以下代码用clang编译好.我想知道C++标准是否适合这个.

class A {
  static void x; // #1
  static const void x; // #2
  static volatile void x; // #3
};
Run Code Online (Sandbox Code Playgroud)

在我看来,没有一个声明是有效的.所述perenial C++标准验证套件 具有这样一个这样的试验(#1)和铛(V3.4)失败在于.

虽然,如果我从#1中删除静态,那么clang会按预期报告错误.

我查看了标准,并在静态数据成员(9.4.2-2)中找到了一个段落,其中说:

2在类定义中声明静态数据成员不是一个定义,除了cv-quali fi ed void之外可能是不完整的类型....

据我所知,这一行取消了#2和#3的无效,但对#1不确定.是否有更多与静态存储类声明相关的细节应该排除#1?

谢谢,

c++ clang c++11 clang++

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

什么是编译器工具链?

在最新的CS:GO更新中,一位 Valve 开发者在Reddit 帖子上评论了这一点:

我们正在升级用于构建 CS:GO 的编译器工具链。这个预发布分支使用新工具链构建了 CS:GO。我们将其作为预发布分支发布,以便在下次更新中使用之前进行测试。

尽管新的编译器工具链可能会带来小幅性能提升,但预计不会出现功能变化。

谁能解释一下编译器工具链是什么?

toolchain

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