符号|是什么意思 意味着依赖列表中,例如
foobar: foo | bar
do_something ....
Run Code Online (Sandbox Code Playgroud)
其中foo和bar是 makefile 生成的目标。
我想将类成员函数的返回值存储在另一个类中.
这似乎有效:
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的默认构造函数的引用,在某些情况下可能没有定义.有没有办法在没有明确引用任何构造函数的情况下执行此操作?
io_service:run在Linux上发出异常.
这就是发生的事情.我使用Boost.Asio实现了简单的异步echo服务器.它是单线程的,一切都是异步的,也就是说我只使用了accept,send和receive函数的异步版本.当客户端没有正常断开连接(例如它崩溃)时,服务器的事件循环抛出boost :: system :: system_error异常remote_endpoint:传输端点未连接.为什么会发生如何应对呢?它是由SIGPIPE信号引起的吗?如果是这样,保持服务器运行的最佳方法是什么?处理异常或处理信号?
将随机访问迭代器增加到超出范围是不合法的吗?事实证明,Vector的C++实现会触发调试断言.
std::vector<int> foo(5);
auto iter = foo.begin();
iter += 10;
Run Code Online (Sandbox Code Playgroud)
只要不评估内存位置,这应该是指针合法的.
编辑:显然即使使用指针它也是非法的.
我必须使用一个接受文件名作为字符串(const char*)的库。在内部使用来打开文件fopen。有没有办法使该库接受Unicode文件名?在将Unicode名称传递给库之前,可以使用WideCharToMultiByte将Unicode名称转换为utf吗?
一种可能的(不希望的)解决方案是更改库接口(char* -> wchar_t*)并替换fopen为特定于Windows的_wopen。另一种解决方案是使用创建文件的符号链接并将其传递到库,但这仅限于NTFS卷。
我知道在不同的翻译单元(例如,不同的cpp/lib/dll/so文件)中定义的静态变量的初始化顺序是未定义的.这是否意味着以下程序的行为没有明确定义?
#include <vector>
std::vector<int> v;
int main()
{
v.push_back(1);
}
Run Code Online (Sandbox Code Playgroud)
编辑:这里我用STL矢量作为例子.但它可能是任何其他"第三方"课程的对象.因此,我们不知道该对象是否通过其他全局变量初始化.这意味着在C++中,使用非平凡的构造函数创建一个单一的全局对象是不安全的.对?
我正在使用 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)
除了返回类型推导之外,上面的声明是否等效?
如何获取未知类型变量的类的成员类型?应该是什么而不是type_of.
auto v = get_container();
type_of(v)::value_type x;
Run Code Online (Sandbox Code Playgroud)
出于可维护性的原因,我想使用auto,所以如果get_container返回类型改变,任何东西都不会破坏.
set和map具有lower_bound(以及upper_bound和equal_range)成员函数,具有Log(N)时间复杂度.还有非成员lower_bound,可通过包含算法头来获得.根据描述,非成员函数的复杂性是随机访问迭代器的Log(N),否则是线性的.set和map迭代器不是随机访问.这是否意味着我应该避免非会员职能?