C++ 有没有办法在C++;不使用模板也不使用空指针?

C++ 有没有办法在C++;不使用模板也不使用空指针?,c++,function,generics,C++,Function,Generics,我想知道,我们是否可以实现一个函数,该函数的实例可以在运行时为不同的数据类型创建,但不允许使用模板或空指针 感谢您的帮助。如评论中所述,您可以使用std::Any类型(自C++17以来)来“实现通用函数”(如您的问题的标题所述) 但是,这不允许“在运行时为不同数据类型创建实例的函数”(如问题的正文中所述)–它将只是一个可以(有条件地)处理不同参数类型的函数 下面是一个简短的例子: #包括 #包括 #包括 #包括 #包括 #包括 void MultiFunc(标准::任意参数) { std::co

我想知道,我们是否可以实现一个函数,该函数的实例可以在运行时为不同的数据类型创建,但不允许使用模板或空指针


感谢您的帮助。

如评论中所述,您可以使用
std::Any
类型(自C++17以来)来“实现通用函数”(如您的问题的标题所述)

但是,这不允许“在运行时为不同数据类型创建实例的函数”(如问题的正文中所述)–它将只是一个可以(有条件地)处理不同参数类型的函数

下面是一个简短的例子:

#包括
#包括
#包括
#包括
#包括
#包括
void MultiFunc(标准::任意参数)
{
std::cout是,使用宏

#define instantiate_generic_function(Type) \
void myGenericFunction(Type param) { \
    std::cout << param; \
}
这将生成一系列名为
myGenericFunction


另一个选项提醒我还有类似宏的函数,它们有不同的优点和缺点

#define myGenericFunction(var) do { \
    std::cout << (var); 
} while (false)

简短回答:不。你要求做的事情没有工具明确提供的相同目的。描述你的实际问题将是有益的。此外,模板本身不允许你在运行时为不同类型创建函数
std::any
来替换
void*
。甚至函数宏
#define print(var)也不允许{std::cout
#define myGenericFunction(var) do { \
    std::cout << (var); 
} while (false)
if (thing == true) 
    myGenericFunction(var);