当前位置:  开发笔记 > 编程语言 > 正文

具有void返回类型和模板化参数的std :: function

如何解决《具有void返回类型和模板化参数的std::function》经验,为你挑选了1个好方法。

我有一个

template
class MyClass
{
    public:
        typedef std::function ...;
};

在我尝试使用MyClass 之前一切正常.

在这种情况下,编译器将typedef扩展为

typedef std::function ...;

而且不想合作.

如果void用作R参数,我希望typedef的行为如下:

typedef std::function ...;

由于类非常大,我更喜欢type_traits和enable_if-like,而不是为void创建特化.



1> Jarod42..:

如评论中所述,您可以使用帮助程序类:

template
struct MyClassHelper
{
    using function_type = std::function;
};

template <>
struct MyClassHelper
{
    using function_type = std::function;
};

然后,在 MyClass

template
class MyClass
{
public:
    using function_type = typename MyClassHelper::function_type;
};

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有