在线上的大多数资源都指出您可以静态链接glibc,但不建议这样做。例如centos软件包repo:
The glibc-static package contains the C library static libraries
for -static linking. You don't need these, unless you link statically,
which is highly discouraged.
Run Code Online (Sandbox Code Playgroud)
这些消息来源很少(或从来没有)说过为什么这不是一个好主意。
基本上,我想要实现的是编译时验证(可能很好的错误消息)注册可调用(函数,lambda,带调用运算符的结构)具有正确的签名.示例(static_assert
要填写的内容):
struct A {
using Signature = void(int, double);
template <typename Callable>
void Register(Callable &&callable) {
static_assert(/* ... */);
callback = callable;
}
std::function<Signature> callback;
};
Run Code Online (Sandbox Code Playgroud) c++ templates template-meta-programming c++11 callable-object
在以下代码段中:
In [1]: x = [0]
In [2]: isinstance(x, list)
Out[2]: True
In [3]: isinstance(x, (list, set))
Out[3]: True
In [4]: isinstance(x, [list, set])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-95dd12d6777a> in <module>()
----> 1 isinstance(x, [list, set])
TypeError: isinstance() arg 2 must be a type or tuple of types
Run Code Online (Sandbox Code Playgroud)
为什么isinstance
在[4]
坚持第二个参数是一个元组,而不仅仅是一个迭代(例如,一个list
或一个set
)?看起来像一个奇怪的设计决定.