C++ 存储指向专用模板函数的指针值
我想使用一些可比较的类型表示,它不像std::is_same那样直接,也不使用RTTI<代码>\uuuu PRETTY\u函数\uuuuu宏为匿名命名空间中不同.cpp文件中定义的具有相同名称的两个不同类提供相同的字符串,比较字符串速度较慢 让我们考虑一下这样的代码:C++ 存储指向专用模板函数的指针值,c++,templates,metaprogramming,undefined-behavior,rtti,C++,Templates,Metaprogramming,Undefined Behavior,Rtti,我想使用一些可比较的类型表示,它不像std::is_same那样直接,也不使用RTTI\uuuu PRETTY\u函数\uuuuu宏为匿名命名空间中不同.cpp文件中定义的具有相同名称的两个不同类提供相同的字符串,比较字符串速度较慢 让我们考虑一下这样的代码: template<typename T> void func() {} int main() { std::cout << reinterpret_cast<size_t>(&func
template<typename T>
void func() {}
int main() {
std::cout << reinterpret_cast<size_t>(&func<int>) << std::endl;
std::cout << reinterpret_cast<size_t>(&func<float>) << std::endl;
}
模板
void func(){}
int main(){
std::cout首先,您试图解决的真正问题是什么?为什么要这样做?相关阅读。第二,如果您想要整数类型存储指针,请使用uintptru\t
。记住,在大多数系统上,函数指针与普通指针相同,但有些系统和平台这里它们是不一样的。我试图制作std::any
副本,在没有RTTI和异常的情况下可以使用。std::any
实际上在没有RTTI的情况下可以工作,但这是检查它是否包含具体类型的唯一方法(禁用RTTI)正在使用std::any_cast
,如果类型不匹配并且异常被禁用,它将终止应用程序。我需要一种机制来检查将包含数据的_cast重新解释为具体类型是否安全。