22得票3回答
为什么向临时字符串流对象中写入数据只会打印对象地址?

以下是我使用的记录器的简化版本。它扩展了std::ostringstream,可以使用<<运算符进行填充。在销毁时,所有内容都将写入std::cout。 直接将内容(<<)写入临时对象Logger()中,我期望它会打印该输入,但实际上它只打印了std::cout上某个...

8得票2回答
在使用std::back_inserter时,我应该保留内存吗?

当使用back:inserter时,我需要预留内存吗? d.reserve(s.size()) std::copy (s.begin(),s.end(),back_inserter(d));

8得票1回答
C++中非整数常量是如何工作的?

我知道在C++中,常量默认情况下与变量具有不同的链接。这就是为什么我不能放置的原因。 int foo; 在某些头文件中,链接器会正确地抱怨多个定义。另一方面,我可以写。 const int bar = 42; 在头文件中,编译器会确保只有一个 bar 的定义。对于整数常量,编译器如...

9得票3回答
类模板的成员在类被实例化时是否也被实例化?

据说模板类的成员只有在被使用时才能实例化。然而,这个示例似乎实例化了do_something成员且enable_if失败了(如果我们已经实例化了它,那么这是可以预期的 - 但据我所知我们没有实例化它)。 我是否漏掉了一些非常基础的东西? #include <string> #in...

8得票1回答
如何获取模板模板参数的模板参数?

假设std::vector没有value_type,那么能否编写一个模板来推断value_type?或者更一般地说,给定一个T<X>,如何推断出X? 非常幼稚的方法是... template <template <typename X> T> void ...

15得票1回答
C++11之前的"常量表达式"

``` constexpr关键字是在C++11中引入的,同时也引入了对应的“常量表达式”概念。然而,在C++98/c++03中隐含着这个概念,因为数组声明需要一个常量表达式。 ``` // valid: int a[sizeof(int)]; int b[3+7]; int c[13/4];...

7得票2回答
从默认参数推断模板参数

考虑以下代码: #include <functional> template <typename T,typename COMP> bool foo(T a,T b,COMP c = std::less<T>()) { return c(a,b...

7得票1回答
C++中所有同步方法的类

在Java中,我们可以创建一个类。 class Test { public synchronized void fn1() { } public synchronized void fn2() { } public synchronized...

198得票5回答
为什么默认模板参数只允许在类模板中使用?

为什么只允许在类模板中使用默认模板参数?为什么不能在成员函数模板中定义默认类型?例如: struct my_class { template<class T = int> void mymember(T* vec) { // ... } }; 相反,C++...

9得票1回答
对临时变量的常量引用

阅读完Herb Sutter在博客上的this article后,我做了一些实验,遇到了一些令我困惑的问题。我正在使用Visual C++ 2005,但如果这是实现相关的,我会感到惊讶。 以下是我的代码: #include <iostream> using namespace...