我正在抓住一个由以下最小代码突出显示的奇怪问题:
struct A {
template <typename ...X, typename ...Y>
void f(X... a, Y...b) {
}
template <typename ...X>
void g(X...c) {
f<X...> (c...);
}
};
template <typename T>
struct B {
template <typename ...X, typename ...Y>
void f(X... a, Y...b) {
}
template <typename ...X>
void g(X...c) {
f<X...> (c...);
}
};
int main() {
A a;
a.g(); // Compiles without problem
B<int> b;
b.g(); // Compiler complains saying g() calls f<>() with 0 arguments while 1 is expected
} …Run Code Online (Sandbox Code Playgroud) 我有一个项目,我尝试使用 conan 作为包管理器。该项目使用了大量的库,其中大部分都是自给自足的。然而,其中一些依赖于另一个库。举一个具体的例子,假设我们有一个项目 P,需要库 A 和 B。A 是自包含的,但 B 的编译和链接依赖于 A。
我可以轻松地为库 A 创建 conanfile.py。我可以为项目 P 创建 conanfile.txt。假设 A 和 B 尚未构建,我希望能够在 P 的构建目录中输入:
conan install ../ --build=missing
Run Code Online (Sandbox Code Playgroud)
让柯南下载、编译并安装库 A,然后下载编译并安装库 B,其中 B 具有对 A 的正确引用。
编写 B 的 conanfile.py 的正确方法是什么?