试图将部分放在不同的标题中

用户1701840

我有以下程序工作正常。但是一旦我摆脱了 bar.h 中主要专业化的前向声明。我收到编译错误,说专业化不是类模板。为什么?

bar.h:
template<typename T>
struct Bar{
    void bar()
    {
        std::cout<< "bar" << std::endl;
    };
};

//template<typename T> // Looks like I need to forward declare this in order to have it compile and work, why?
//struct IsBar;

template<typename T>
struct IsBar<Bar<T>> {
    static const bool value = true;
};

main.cpp:
#include "bar.h"

struct Raw{
};
template<typename T>
struct IsBar{
    static const bool value = false;
};

template<typename Obj, bool>
struct function{
    static void callbar(Obj obj){ 
        obj.bar();
    }; 
};

template<typename Obj>
struct function<Obj, false>{
    static void callbar(Obj obj){ 
        std::cout<< "no bar()" << std::endl;
    }; 
};

int main()
{
    typedef Bar<Raw> Obj;
    Obj obj;

    function<Obj, IsBar<Obj>::value> f;
    f.callbar(obj); 

    return 0;
}
沃尔特

这是因为

template<typename T>
struct IsBar<Bar<T>> {
    static const bool value = true;
};

是一个模板特模板的IsBar<U>用于U= Bar<T>为了特化 a template,您必须首先声明通用的非特化模板。

此外,为了使其正常工作(例如在 SFINAE 中),您希望通用版本包含value=false

template<typename T>
struct IsBar
: std::integral_constant<bool,false>
{};

template<typename T>
struct IsBar<Bar<T>>
: std::integral_constant<bool,true>
{};

由于此功能与 密切相关struct Bar<>,因此应在与 相同的头文件中定义它struct Bar<>,即在您的情况下是 bar.h。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将菜单放在标题中

来自分类Dev

将每个面板的eq()放在标题中

来自分类Dev

将组件放在表的列标题中?

来自分类Dev

如何将屏幕标题放在每个屏幕的标题中?

来自分类Dev

将图像放在电子邮件标题中

来自分类Dev

uicollection视图标题中不同部分的文本重叠

来自分类Dev

将菜单放在带有自定义主题的标题中

来自分类Dev

将 csv 转换为 xlsx,奇怪的输出放在字段标题中

来自分类Dev

使用AWS Lambda @ Edge将JPEG图像包装在多部分标题中

来自分类Dev

使用AWS Lambda @ Edge将JPEG图像包装在多部分标题中

来自分类Dev

Escape = Wiki部分标题中的字符

来自分类Dev

MS Word VBA-将文本插入具有不同样式的标题中

来自分类Dev

试图从我的H2标题中删除填充

来自分类Dev

在表格标题中应用不同的样式

来自分类Dev

将广告放在标题的中心

来自分类Dev

试图将项目放在Github上

来自分类Dev

试图将svg放在img之上

来自分类Dev

试图将ProgressDialog放在AlertDialog的WebView中

来自分类Dev

试图将元素放在彼此之上

来自分类Dev

将noindex放入标题中,得到白屏

来自分类Dev

将图像缩放到标题中

来自分类Dev

NASM试图将变量添加到宏内的不同部分

来自分类Dev

将副标题放在居中的标题标题旁边

来自分类Dev

使用 Bootstrap Grid 将表单组的一部分放在不同的列中

来自分类Dev

如何将一级部分放在不同的 HTML 页面上?

来自分类Dev

使用BeautifulSoup提取网页标题中的部分文本

来自分类Dev

使用BeautifulSoup提取网页标题中的部分文本

来自分类Dev

更改 tableview 部分标题中标签的文本

来自分类Dev

将标题放在图片之外的jssor中?

Related 相关文章

热门标签

归档