gpt4 book ai didi

c++ - 显示名称功能模板名称

转载 作者:行者123 更新时间:2023-12-02 10:03:42 33 4
gpt4 key购买 nike

我有一个试图尝试的函数包装器类。

我希望能够显示传递到模板中的函数的名称。

template<auto Func>
struct FuncWrapper final {
FuncWrapper() {
StrFuncName = typeid(Func).name();
std::cout << StrFuncName << std::endl;
}

template<typename... Args>
auto operator()(Args&&... args) const { }

std::string StrFuncName;
};

void Function() { }

FuncWrapper<Function> wrapper;

最佳答案

对于标准C++,这是不可能的。取消typeid的设置也无济于事,因为您只会获得函数的类型的名称,而不是实际上为函数指定的名称。

您可以获取的最接近的是预定义的 __func__ 常量,但是该常量仅存在于您想获取名称的函数的范围之内。

void foo()
{
std::cout << __func__; // will print "foo"
}

关于c++ - 显示名称功能模板名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61284559/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com