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

在模板实例化和外部模板声明中使用typedef

如何解决《在模板实例化和外部模板声明中使用typedef》经验,为你挑选了0个好方法。

有两种情况typedef混淆了我,当谈到extern template declarationexplicit template instantiation.

为了说明这两个,请参见下面的2个示例代码片段.

考虑以下示例(案例1):

// suppose following code in some cpp file    
template 
    struct example
{
    T value;
};

// valid typedefs
typedef example int_example;
typedef example string_example;

// explicit instantiation using above typedefs
template class int_example; // -> compile time error
template class string_example; // -> compile time error

// instead we need to use type names
template class example; // -> OK
template class example; // -> OK

// QUESTION 1: Why does this work however? is this valid code?
typedef std::string type_string;
template class example;

为什么template class example使用typedef?为什么它有效而template class string_example不是?

考虑以下示例(案例2):

// suppose following code is in some header file
template 
struct example
{
    T value;
};

// valid typedefs
typedef std::string type_string;
typedef example string_example;

// Explicit instantiation declaration
// QUESTION 2: Is this valid code? if not why not?
extern template string_example; // -> at least this compiles, but is it OK?

正如上面的评论中所提到的那样,使用typedef是否有效extern template declaration,就像上面的例子一样,为什么这个编译不像Case1那样,它没有.

我已经阅读了类似的案例,但没有一个给出上述2个问题的详细答案.详细的阐述非常感谢!

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