小编qua*_*ell的帖子

符号“|” 依赖

符号|是什么意思 意味着依赖列表中,例如

foobar: foo | bar
  do_something ....
Run Code Online (Sandbox Code Playgroud)

其中foobar是 makefile 生成的目标。

makefile gnu-make

10
推荐指数
1
解决办法
2449
查看次数

类方法类型的decltype

我想将类成员函数的返回值存储在另一个类中.

这似乎有效:

class Foo
{
public: 
   Foo(int) {} //non default constructor that hides default constructor
   unspecified_return_type get_value();


};

class Bar
{
    // stores a value returned by Foo::get_value
    decltype(Foo().get_value()) value;
};
Run Code Online (Sandbox Code Playgroud)

但是,有一个类Foo的默认构造函数的引用,在某些情况下可能没有定义.有没有办法在没有明确引用任何构造函数的情况下执行此操作?

c++ decltype

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

remote_endpoint:未连接传输端点

io_service:run在Linux上发出异常.

这就是发生的事情.我使用Boost.Asio实现了简单的异步echo服务器.它是单线程的,一切都是异步的,也就是说我只使用了accept,send和receive函数的异步版本.当客户端没有正常断开连接(例如它崩溃)时,服务器的事件循环抛出boost :: system :: system_error异常remote_endpoint:传输端点未连接.为什么会发生如何应对呢?它是由SIGPIPE信号引起的吗?如果是这样,保持服务器运行的最佳方法是什么?处理异常或处理信号?

c++ linux boost-asio

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

增加迭代器超出范围

将随机访问迭代器增加到超出范围是不合法的吗?事实证明,Vector的C++实现会触发调试断言.

std::vector<int> foo(5);
auto iter = foo.begin();
iter += 10;
Run Code Online (Sandbox Code Playgroud)

只要不评估内存位置,这应该是指针合法的.

编辑:显然即使使用指针它也是非法的.

c++

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

用unicode文件名打开

我必须使用一个接受文件名作为字符串(const char*)的库。在内部使用来打开文件fopen。有没有办法使该库接受Unicode文件名?在将Unicode名称传递给库之前,可以使用WideCharToMultiByte将Unicode名称转换为utf吗?

一种可能的(不希望的)解决方案是更改库接口(char* -> wchar_t*)并替换fopen为特定于Windows的_wopen。另一种解决方案是使用创建文件的符号链接并将其传递到库,但这仅限于NTFS卷。

windows winapi visual-c++

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

全局对象本质上是不安全的?

我知道在不同的翻译单元(例如,不同的cpp/lib/dll/so文件)中定义的静态变量的初始化顺序是未定义的.这是否意味着以下程序的行为没有明确定义?

#include <vector>

std::vector<int> v;

int main()
{
    v.push_back(1);
}
Run Code Online (Sandbox Code Playgroud)

编辑:这里我用STL矢量作为例子.但它可能是任何其他"第三方"课程的对象.因此,我们不知道该对象是否通过其他全局变量初始化.这意味着在C++中,使用非平凡的构造函数创建一个单一的全局对象是不安全的.对?

c++

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

将函数参数类型声明为 auto

我正在使用 GCC 6.3,令我惊讶的是以下代码片段确实可以编译。

auto foo(auto x) { return 2.0 * x; }
...
foo(5);
Run Code Online (Sandbox Code Playgroud)

AFAIK 它是 GCC 扩展。与以下内容进行比较:

template <typename T, typename R>
R foo(T x) { return 2.0 * x; }
Run Code Online (Sandbox Code Playgroud)

除了返回类型推导之外,上面的声明是否等效?

c++ gcc auto

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

如何从未知类型的变量访问嵌套类型?

如何获取未知类型变量的类的成员类型?应该是什么而不是type_of.

auto v = get_container();
type_of(v)::value_type x;
Run Code Online (Sandbox Code Playgroud)

出于可维护性的原因,我想使用auto,所以如果get_container返回类型改变,任何东西都不会破坏.

c++ c++11

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

关联容器的lower_bound复杂性:成员函数与非成员函数

setmap具有lower_bound(以及upper_boundequal_range)成员函数,具有Log(N)时间复杂度.还有非成员lower_bound,可通过包含算法头来获得.根据描述,非成员函数的复杂性是随机访问迭代器的Log(N),否则是线性的.setmap迭代器不是随机访问.这是否意味着我应该避免非会员职能?

c++

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

标签 统计

c++ ×7

auto ×1

boost-asio ×1

c++11 ×1

decltype ×1

gcc ×1

gnu-make ×1

linux ×1

makefile ×1

visual-c++ ×1

winapi ×1

windows ×1