CMAKE_PROJECT_NAME和PROJECT_NAME有什么区别?
从文档:
当前项目的名称.
它从最接近的继承的project()命令指定当前项目的名称.
项目命令的项目名称.
这是最近的project()命令的名称.
我不明白其中的区别.
我应该什么时候使用CMAKE_PROJECT_NAME?我应该什么时候使用PROJECT_NAME?
// Example program
#include <iostream>
#include <string>
#include <utility>
class A {
public:
int x;
};
class B {
public:
B(A &&a) : m_a(std::move(a)) {}
A m_a;
};
int main()
{
B var(std::move(A()));
// B var(A()); // does not compile why?
std::cout << var.m_a.x << "\n";
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,注释掉的行不会编译.出现错误消息,它将var视为函数声明.即使A具有构造函数的参数,它仍然被视为函数声明.有没有办法写它,所以它不会被视为函数声明?在这种情况下,使用typename没有帮助.
看起来CallStaticObjectMethod,CallObjectMethodMethod和等...都是你所需要的.根据文件
CallNonvirtual<type>Method惯例的Call<type>Method家庭和惯例的家庭是不同的.Call<type>Method例程根据对象的类CallNonvirtual<type>Method调用方法,而例程根据clazz参数指定的类调用方法,从中获取方法ID.方法ID必须从对象的真实类或其超类之一获得.
从该描述中也可以看出具体方法CallNonvirtualObjectMethod没有用处.