gpt4 book ai didi

c++ - 如何创建与给定函数具有相同类型的变量?

转载 作者:可可西里 更新时间:2023-11-01 17:39:43 25 4
gpt4 key购买 nike

我有一个像这样的C++函数

int f( const std::string &s, double d );

现在我想创建一个变量,它包含指向 f 的指针。这个变量应该有正确的类型 (int (*)( const std::string &, double ) - 但我不想明确地写出那个类型。我想推断它从 f 开始,这样我就不会重复类型签名。最终,我希望能够按照以下方式编写一些内容:

TypeOf<f>::Result x = f;

为了实现这一点,我尝试做这样的事情:

// Never implemented, only used to deduce the return type into something which can be typedef'ed
template <typename T> T deduceType( T fn );

template <typename T>
struct TypeOf {
typedef T Result;
};

// ...
TypeOf<deduceType(f)>::Result x = f;

我希望也许函数的返回类型(deduceType,在本例中)可以用作模板参数,但可惜 - 看来你不能那样做。

有人知道怎么做吗?我正在寻找 C++03 解决方案。

最佳答案

添加了 C++0x decltype哪个做你想要的(如果我理解正确的话)。

另一个选项可能是 Boost::Typeof它旨在提供相同的功能,直到所有编译器都支持 decltype。

关于c++ - 如何创建与给定函数具有相同类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962262/

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