什么是依赖范围,在下面的错误的上下文中typename是什么意思? $ make g++ -std=gnu++0x main.cpp main.cpp:18:10: error: need 'typename' before 'ptrModel<std::vector<Data> >::Type' because 'ptrModel<std::vector<Data> >' is a dependent scope make: *** [all] Error 1 /* * main.cpp */ #include <vector> #include <memory> template<typename T> struct ptrModel { typedef std::unique_ptr<T> Type; }; template<typename Data> struct ptrType { typedef ptrModel< std::vector<Data> >::Type Type; }; int main() […]
我想把一个“模板”文件的输出传送到MySQL,这个文件有一些像${dbName}这样的variables。 什么是命令行实用程序来replace这些实例并将输出转储到标准输出?
我想知道如何获取模板中的当前url。 说我的url是 /user/profile/ 如何将其返回到模板?
我正在使用underscore.js模板function,并做了这样的模板: <script type="text/template" id="gridItem"> <div class="griditem <%= gridType %> <%= gridSize %>"> <img src="<%= image %>" /> <div class="content"> <span class="subheading"><%= categoryName %></span> <% if (date) { %><span class="date"><%= date %></span><% } %> <h2><%= title %></h2> </div> </div> </script> 正如你所看到的,我有一个if语句,因为我所有的模型都没有date参数。 但是这样做的方式给了我一个错误的date is not defined 。 那么,如何在模板中声明呢?
在文章中多次阅读索赔 – 我想将此问题添加到Stackoverflow,并要求社区 – 是下面的代码可移植? template<template<typename T, typename Alloc> class C> void f() { /* some code goes here … */ } int main() { f<std::vector>(); } 提供std::vector的实现是否真的允许超出两个众所周知的额外的默认模板参数? 这会使上面的代码格式不正确,因为它假定有两个模板参数。 有关这种索赔的示例,请参阅本文的最后一段。
是否有可能检查一个types是一个特定模板的实例? 我有一个类模板,其中一个模板参数必须是特定模板的实例或其他types。 例如,考虑一个types列表的简单定义: struct null_type; template <typename Head, typename Tail> struct typelist { // Tail must be a typelist or null_type typedef Head head; typedef Tail tail; }; 现在,我想确保为Tail模板参数提供的types始终是typelist或null_type的实例。 我可以使用部分特化来为这些情况定义模板,如下所示: template <typename Head, typename Tail> struct typelist; // default, not defined template <typename Head, typename H, typename T> struct typelist< Head, typelist<H,T> > // Tail […]
我一直在玩弄一套模板来确定在C ++中给出两种基本types的正确提升types。 这个想法是,如果你定义一个自定义的数字模板,你可以使用这些来确定基于传递给模板的类的运算符+函数的返回types。 例如: // Custom numeric class template <class T> struct Complex { Complex(T real, T imag) : r(real), i(imag) {} T r, i; // Other implementation stuff }; // Generic arithmetic promotion template template <class T, class U> struct ArithmeticPromotion { typedef typename X type; // I realize this is incorrect, but the […]
template<int x> struct A { template<int y> struct B {};. template<int y, int unused> struct C {}; }; template<int x> template<> struct A<x>::B<x> {}; // error: enclosing class templates are not explicitly specialized template<int x> template<int unused> struct A<x>::C<x, unused> {}; // ok 那么为什么不允许内部的,嵌套的类(或函数)的明确的专门化,如果外部类不专门呢? 奇怪的是,我可以解决这个问题,如果我只是通过简单地添加一个虚拟模板参数来部分专门化内部类。 使事情变得更丑陋,更复杂,但工作起来。 我认为完整的专业化是部分专业化的一个子集,尤其是因为你可以通过添加一个虚拟参数来expression每一个完整的专业化。 所以这个在部分专业化和完全专业化之间的歧义对我来说并不合适。 不幸的是,comp.std.c ++中没有人敢回答,所以我在这里再次带着赏金。 注意:我需要这个特性来为内部类的recursion模板提供一组外部类,内部参数的特化取决于外部模板参数。
比方说,我正在为一棵二叉树BT创build一个类,并且我有一个类来描述树的一个元素BE template<class T> class BE { T *data; BE *l, *r; public: … template<class U> friend class BT; }; template<class T> class BT { BE<T> *root; public: … private: … }; 这似乎工作; 不过,我对下面发生的事情有疑问。 我原本试图宣布朋友为 template<class T> friend class BT; 但是这里有必要使用U (或T以外的东西),这是为什么呢? 这是否意味着任何特定的BT对任何特定的BE类都是朋友? 模板和朋友的IBM页面上有不同types的函数但不包括类的朋友关系的示例(并且猜测语法还没有收敛到解决scheme)。 我宁愿了解如何获得我希望定义的朋友关系types的规格。
我试图用C实现一个queue结构。我的实现非常简单, 队列只能容纳int而不是别的。 我想知道是否可以在C模拟C++模板(可能通过使用预处理器#define ),以便我的queue可以保存任何数据types。 注意:我不想使用void* 。 我认为这有点冒险,很容易造成奇怪的运行时错误。