<small id='t7SrF'></small><noframes id='t7SrF'>

    <bdo id='t7SrF'></bdo><ul id='t7SrF'></ul>

  1. <legend id='t7SrF'><style id='t7SrF'><dir id='t7SrF'><q id='t7SrF'></q></dir></style></legend><tfoot id='t7SrF'></tfoot>

      <i id='t7SrF'><tr id='t7SrF'><dt id='t7SrF'><q id='t7SrF'><span id='t7SrF'><b id='t7SrF'><form id='t7SrF'><ins id='t7SrF'></ins><ul id='t7SrF'></ul><sub id='t7SrF'></sub></form><legend id='t7SrF'></legend><bdo id='t7SrF'><pre id='t7SrF'><center id='t7SrF'></center></pre></bdo></b><th id='t7SrF'></th></span></q></dt></tr></i><div id='t7SrF'><tfoot id='t7SrF'></tfoot><dl id='t7SrF'><fieldset id='t7SrF'></fieldset></dl></div>

      模板类型定义?

      时间:2023-05-24
      <tfoot id='KIiuc'></tfoot>

            1. <legend id='KIiuc'><style id='KIiuc'><dir id='KIiuc'><q id='KIiuc'></q></dir></style></legend>

                <tbody id='KIiuc'></tbody>
                <bdo id='KIiuc'></bdo><ul id='KIiuc'></ul>
              • <i id='KIiuc'><tr id='KIiuc'><dt id='KIiuc'><q id='KIiuc'><span id='KIiuc'><b id='KIiuc'><form id='KIiuc'><ins id='KIiuc'></ins><ul id='KIiuc'></ul><sub id='KIiuc'></sub></form><legend id='KIiuc'></legend><bdo id='KIiuc'><pre id='KIiuc'><center id='KIiuc'></center></pre></bdo></b><th id='KIiuc'></th></span></q></dt></tr></i><div id='KIiuc'><tfoot id='KIiuc'></tfoot><dl id='KIiuc'><fieldset id='KIiuc'></fieldset></dl></div>
              • <small id='KIiuc'></small><noframes id='KIiuc'>

              • 本文介绍了模板类型定义?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                限时送ChatGPT账号..

                我正在使用 libgc,一个用于 C 和 C++ 的垃圾收集器.要使 STL 容器可垃圾回收,必须使用 gc_allocator.

                I'm using libgc, a garbage collector for C and C++. To make STL containers garbage collectible one must use the gc_allocator.

                而不是写

                std::vector<MyType> 
                

                一定要写

                std::vector<MyType,gc_allocator<MyType> >
                

                有没有办法定义像

                Could there be a way to define something like

                template<class T> typedef std::vector<T,gc_allocator<T> > gc_vector<T>;
                

                我前一段时间检查过,发现这是不可能的.但我可能错了,或者可能有另一种方式.

                I checked some time ago and found out it was not possible. But I may have been wrong or there might be another way around.

                以这种方式定义地图特别令人不快.

                Defining maps in this way is particularly unpleasing.

                std::map<Key,Val> 
                

                变成

                std::map<Key,Val, std::less<Key>, gc_allocator< std::pair<const Key, Val> > >
                

                尝试使用宏后,我发现以下代码破坏了它:

                After trying the use of macro I found out the following code breaks it:

                #define gc_vector(T) std::vector<T, gc_allocator<T> >
                typedef gc_vector( std::pair< int, float > ) MyVector;
                

                模板化类型定义中的逗号被解释为宏参数分隔符.

                The comma inside the templated type definition is interpreted as a macro argument separator.

                所以看起来内部类/结构是最好的解决方案.

                So it seems the inner class/struct is the best solution.

                这是一个如何在 C++0X 中完成的示例

                Here is an example on how it will be done in C++0X

                // standard vector using my allocator
                template<class T>
                using gc_vector = std::vector<T, gc_allocator<T> >;
                
                // allocates elements using My_alloc
                gc_vector <double> fib = { 1, 2, 3, 5, 8, 13 };
                
                // verbose and fib are of the same type
                vector<int, gc_vector <int>> verbose = fib; 
                

                推荐答案

                您可以使用 C++11 模板化类型别名使用 using 例如像这样

                You can use C++11 templated type aliasing using using e.g. like this

                template <typename T>
                using gc_vector = std::vector<T, gc_allocator<T>>;
                

                注意:我知道这是一个老问题,但由于它有很多赞成票,而且当它出现在搜索结果中时,我认为它应该得到更新的答案.

                这篇关于模板类型定义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:在 C++0x 中专门针对 lambda 的模板 下一篇:在编译时使用 C++ 模板在 AbstractFactory 中动态注册

                相关文章

                最新文章

              • <small id='ZgcTA'></small><noframes id='ZgcTA'>

                    <tfoot id='ZgcTA'></tfoot>
                      <bdo id='ZgcTA'></bdo><ul id='ZgcTA'></ul>

                    <legend id='ZgcTA'><style id='ZgcTA'><dir id='ZgcTA'><q id='ZgcTA'></q></dir></style></legend>
                  1. <i id='ZgcTA'><tr id='ZgcTA'><dt id='ZgcTA'><q id='ZgcTA'><span id='ZgcTA'><b id='ZgcTA'><form id='ZgcTA'><ins id='ZgcTA'></ins><ul id='ZgcTA'></ul><sub id='ZgcTA'></sub></form><legend id='ZgcTA'></legend><bdo id='ZgcTA'><pre id='ZgcTA'><center id='ZgcTA'></center></pre></bdo></b><th id='ZgcTA'></th></span></q></dt></tr></i><div id='ZgcTA'><tfoot id='ZgcTA'></tfoot><dl id='ZgcTA'><fieldset id='ZgcTA'></fieldset></dl></div>