小编Mot*_*tti的帖子

根据返回值重载C++函数

我们都知道你可以根据参数重载一个函数:

int mul(int i, int j) { return i*j; }
std::string mul(char c, int n) { return std::string(n, c); } 
Run Code Online (Sandbox Code Playgroud)

你能根据返回值重载一个函数吗?根据返回值的使用方式定义一个返回不同内容的函数:

int n = mul(6, 3); // n = 18
std::string s = mul(6, 3); // s = "666"
// Note that both invocations take the exact same parameters (same types)
Run Code Online (Sandbox Code Playgroud)

您可以假设第一个参数介于0-9之间,无需验证输入或进行任何错误处理.

c++ puzzle overloading function

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

有没有人在现实生活中使用模板元编程?

我在五年多前发现了模板元编程,并且在阅读现代C++设计方面获得了巨大的成功,但我从未发现在现实生活中使用它的机会.

曾经使用在实际代码这种技术?

Boost的贡献者无需申请; o)

c++ templates template-meta-programming

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

Java和.NET字符串文字在哪里?

关于 .NET中字符串文字的最新问题引起了我的注意.我知道字符串文字被实习,因此具有相同值的不同字符串引用同一个对象.我也知道字符串可以在运行时实现:

string now = DateTime.Now.ToString().Intern(); 
Run Code Online (Sandbox Code Playgroud)

显然,在运行时实例化的字符串驻留在堆上,但我假设文字放在程序的数据段中(并且在我对所述问题的回答中这样说).但是我不记得在任何地方看到这个.我认为这是这种情况,因为我是如何做到这一点以及ldstrIL指令用于获取文字并且似乎没有进行分配的事实似乎支持我.

简而言之,字符串文字在哪里?它是在堆上,数据段还是我没想过的某个地方?


编辑:如果字符串文字确实驻留在堆上,它们何时分配?

.net java string-literals string-table

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

解密C++模板错误消息

当他们说C++的错误消息在模板方面非常糟糕时,我真的开始明白人们的意思了.我已经看到了一些非常长的错误,就像一个与原型不匹配的函数一样简单.

有没有解决这些错误的技巧?

编辑:我正在使用gcc和MSVC.它们似乎都非常可怕.

c++ templates compiler-errors

27
推荐指数
3
解决办法
8499
查看次数

C++:嵌套模板类错误"非命名空间范围中的显式特化"

以下代码:

template <class T1>
struct A1
{
  template <int INDEX>
  struct A2 { /* ... */ };

  template <>
  struct A2<-1> { /* ... */ };
};

int main() 
{
  A1<int>::A2<-1> x;
}
Run Code Online (Sandbox Code Playgroud)

给出了这个错误:

prog.cpp:7:13:错误:非命名空间范围的显式特化'struct A1<T1>' prog.cpp:8:10:错误:部分特化中未使用的模板参数:
prog.cpp:8:10:错误: 'T1'

如何最好地解决此错误?我试过这个:

template <class T1>
struct A1
{
  template <int INDEX, class DUMMY = void>
  struct A2 { /* ... */ };

  template <class DUMMY>
  struct A2<-1, DUMMY> { /* ... */ };
};

int main() 
{
  A1<int>::A2<-1> x;
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作,但似乎有点软糖. …

c++ templates c++11

25
推荐指数
1
解决办法
4497
查看次数

C++ 11中的非类型可变参数函数模板

我看到一篇博客帖子使用了非类型的可变参数模板(目前gcc不支持,只有clang支持).

template <class T, size_t... Dimensions>
struct MultiDimArray { /* ... */ };
Run Code Online (Sandbox Code Playgroud)

帖子中的示例编译得很好,但我没能使用函数模板.

任何人都可以帮助找出正确的语法(如果存在)?

int max(int n) { return n; } // end condition

template <int... N> // replacing int... with typename... works
int max(int n, N... rest) // !! error: unknown type name 'N'
{
    int tmp = max(rest...);
    return n < tmp? tmp : n;
}

#include <iostream>
int main() 
{
   std::cout << max(3, 1, 4, 2, 5, 0) << std::endl;   
}
Run Code Online (Sandbox Code Playgroud)

c++ variadic-templates c++11

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

Graphviz中簇之间的直边

我试图在Graphviz中的簇之间有一个边缘,其中边缘不影响排名.

看起来很好:

digraph {
  subgraph clusterX {
    A    
    B
  }

  subgraph clusterY {
    C
    D
  } 

  A -> B
  B -> C [constraint=false]
  C -> D
}
Run Code Online (Sandbox Code Playgroud)

然而,当我向C -> D边缘添加标签时,B -> C边缘试图绕过所述标签(看起来很丑陋).

digraph {
  subgraph clusterX {
    A    
    B
  }

  subgraph clusterY {
    C
    D
  } 

  A -> B
  B -> C [constraint=false]
  C -> D [label=yadda]
}
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么能保持从边缘BC直?

graphviz

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

在Flex应用程序上自动化QA

我有一个需要测试的Flex应用程序,我们的QA部门非常喜欢使用某种形式的自动测试工具,如HP的QuickTest Pro(QTP).但是,QTP要求您编写一些自定义代码,如果您希望自动化一些自制组件...不幸的是,我们有一些第三方组件,我们没有源代码,所以我们不能没有真正的自定义代码没有拥有第三方组件的源代码.

是否有任何现有的框架和/或工具可以让我自动化测试,而无需编写可供非程序员使用的自定义代码(即一个不知道指针是什么的QA人)

我已经快速浏览了Flex-Monkey(一个免费的开源软件),这似乎是一个很有前景的项目,但它还处于初期阶段,我很快就需要一些东西(即昨天)

有任何想法吗?

apache-flex automated-tests qa qtp flexunit

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

我在哪里可以下载Windows的GCC二进制文件?

我想玩GCC 4.5但是在GCC的网站上它说他们不提供二进制文件.我认为从头开始下载源代码并构建GCC有点过分(即使我使用的操作系统(Windows)相当模糊).

我在哪里可以下载GCC 4.5 for Windows?

(我不想要所有的Cygwin,只是GCC)

windows gcc download

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

C++ 11中默认函数的重点是什么?

C++ 11增加了告诉编译器创建任何特殊成员函数的默认实现的能力.虽然我可以看到删除函数的价值,但显式默认函数的值是什么?只需将其留空,编译器无论如何都会这样做.

我能看到的唯一一点是,只有当没有其他构造函数存在时才会创建默认构造函数:

class eg {
public:
    eg(int i);
    eg() = default; 
};
Run Code Online (Sandbox Code Playgroud)

但这真的比你现在这样做好吗?

class eg {
public:
    eg(int i);
    eg() {}
};
Run Code Online (Sandbox Code Playgroud)

或者我错过了一个用例?

c++ defaulted-functions c++11

19
推荐指数
3
解决办法
9700
查看次数