gpt4 book ai didi

c++11 - std::function 没有名为 'target' 的成员

转载 作者:行者123 更新时间:2023-12-02 22:22:47 28 4
gpt4 key购买 nike

我正在尝试存储唯一函数指针的列表。纯指针的明显包装似乎 std::function .

事实证明,std::functions cannot be compared .

那么原始指针的简单比较应该可行,对吗?也许吧,但我收到以下代码的以下错误。我的编译器是 gcc 4.7.2。这是 2012 年没有实现的吗?

    std::function<void(bool)> f;
void(*p)(bool) = f.target<void(*)(bool)>();

error: 'class std::function' has no member named 'target'

<小时/>

以下是除标题之外的相关内容:

#ifdef __GXX_RTTI
// [3.7.2.5] function target access
/**
* @brief Determine the type of the target of this function object
* wrapper.
*
* @returns the type identifier of the target function object, or
* @c typeid(void) if @c !(bool)*this.
*
* This function will not throw an %exception.
*/
const type_info& target_type() const noexcept;

/**
* @brief Access the stored target function object.
*
* @return Returns a pointer to the stored target function object,
* if @c typeid(Functor).equals(target_type()); otherwise, a NULL
* pointer.
*
* This function will not throw an %exception.
*/
template<typename _Functor> _Functor* target() noexcept;

/// @overload
template<typename _Functor> const _Functor* target() const noexcept;
#endif

最佳答案

我也遇到这个问题了。 RTTI 需要在编译器标志中启用。我在编译器标志中有 -fno-rtti

关于c++11 - std::function 没有名为 'target' 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26907586/

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