Tag: 模板

你能推荐一个.net模板引擎吗?

我正在寻找一个.net模板引擎 – 一些简单,轻量,稳定,没有太多的依赖。 目前我所需要的是创build模板化纯文本和HTML电子邮件。 任何人都可以给我一个很好的build议? 如果它有帮助 – 就像Java的Freemarker或Velocity库一样。 [更新]感谢迄今为止的答案 – 非常感谢。 当你使用这些库的时候,我的build议和战争故事是真正的。 似乎是最好的方式做出决定,而不是每个轮stream尝试。

c ++模板部分专业化的成员函数

我是新来的模板,所以也许这是一个微不足道的事情,但我不能得到它的工作。 我试图获得类成员函数的部分专业化。 最短的代码是: template <typename T, int nValue> class Object{ private: T m_t; Object(); public: Object(T t): m_t(t) {} T Get() { return m_t; } Object& Deform(){ m_t*=nValue; return *this; } }; template <typename T> Object<T,0>& Object<T,0>::Deform(){ this->m_t = -1; return *this; } int main(){ Object<int,7> nObj(1); nObj.Deform(); std::cout<<nObj.Get(); } 我尝试了非成员函数,这很好。 什么也行得通是一个成员函数的完全专业化。 但是,每当我尝试与部分规格。 一个成员函数的我得到的forms的错误: PartialSpecification_MemberFu.cpp(17): […]

什么是适用于SFINAE的C ++ 11标准中提到的“直接上下文”?

C ++ 11标准第14.8.2 / 8段规定了replace失败应该或不应该导致“硬”编译错误(从而导致编译失败)或“软”错误的条件导致编译器从重载parsing的候选集合中丢弃一个模板(不会使编译失败,并启用众所周知的SFINAE成语): 如果replace导致无效的types或expression式,则键入演绎失败。 无效的types或expression式是使用replace参数编写的格式不正确的types或expression式。 [注意:访问检查是替代过程的一部分。 -end note] 只有函数types及其模板参数types的上下文中的无效types和expression式才会导致扣除失败 。 […] 在“整个C ++ 11标准”中,“ 直接上下文 ”这个词只出现了8次,每次它们跟随(或作为其一部分出现)下列(非规范性)文本的实例: [注意: 替代types和expression式的评估可能导致副作用,例如类模板特化和/或函数模板特化的实例化,隐式定义函数的生成等。这些副作用不在“即时上下文“,并可能导致程序不合格。 – 注意] 这个注释给出了直接上下文意味着什么(不是非常慷慨的)暗示,但是至less对于我来说,这往往不足以决定replace是否应该导致“硬”编译错误。 题: 你能提供一个解释,一个决策程序,和/或一些具体的例子来帮助搞清楚在哪些情况下,replace错误在函数types及其模板参数types的“ 直接上下文 ”中是否发生?

C ++静态成员初始化(模板乐趣里面)

对于静态成员初始化,我使用嵌套帮助器结构,这对非模板类很好。 但是,如果封闭类由模板参数化,则嵌套的初始化类不会被实例化,如果辅助对象在主代码中未被访问。 为了说明,一个简单的例子(在我的情况下,我需要初始化一个向量)。 #include <string> #include <iostream> struct A { struct InitHelper { InitHelper() { A::mA = "Hello, I'm A."; } }; static std::string mA; static InitHelper mInit; static const std::string& getA(){ return mA; } }; std::string A::mA; A::InitHelper A::mInit; template<class T> struct B { struct InitHelper { InitHelper() { B<T>::mB = "Hello, I'm B."; […]

模板约束C ++

在C#中,我们可以定义一个通用types,对可以用作generics参数的types施加约束。 以下示例说明了通用约束的用法: interface IFoo { } class Foo<T> where T : IFoo { } class Bar : IFoo { } class Simpson { } class Program { static void Main(string[] args) { Foo<Bar> a = new Foo<Bar>(); Foo<Simpson> b = new Foo<Simpson>(); // error CS0309 } } 有没有一种方法可以在C ++中对模板参数施加约束。 C ++ 0x有本地支持,但我正在谈论当前的标准C ++。

如何在ASP.NET MVC 3中创build自定义编辑器/显示模板?

我想为ASP.NET MVC中的不同数据types(与Html.EditorFor() )一起使用自定义编辑器模板,包括重写现有的模板。 最终目标是创build一个迷你框架,其中每个编辑器都支持有关被更改的javascript通知,并且可以向用户显示一条消息,指出页面中存在未保存的更改。 (也许有一些已经存在的东西?) 我可以find许多有关此类模板问题的问题,但无法find有关创build它们的教程或手册。 他们去哪里? 有什么特别的语法吗? 如何select模板? 模板中提供哪些信息以及如何访问? 等等。 那么 – 我在哪里可以find关于这些模板的所有信息?

模板<unsigned int N>是什么意思?

当声明一个模板时,我习惯了这样的代码: template <class T> 但在这个问题上 ,他们用了: template <unsigned int N> 我检查了它编译。 但这是什么意思? 它是一个非types的参数? 如果是这样,我们怎么能有一个没有任何types参数的模板?

GCC问题:使用依赖于模板参数的基类成员

下面的代码不能用gcc编译,而是用Visual Studio编译: template <typename T> class A { public: T foo; }; template <typename T> class B: public A <T> { public: void bar() { cout << foo << endl; } }; 我得到的错误: test.cpp:在成员函数'void B :: bar()'中: test.cpp:11:错误:'foo'未在此范围内声明 但应该是! 如果我改变bar void bar() { cout << this->foo << endl; } 那么它编译,但我不认为我必须这样做。 在C ++的官方规范中是否有这样的东西,GCC在这里,还是只是一个怪癖?

这个“数组大小”模板函数是如何工作的?

可能重复: 有人可以解释这个模板代码,给我一个数组的大小? 函数模板中的魔法参数 有人可以解释这个代码如何工作? 我知道这段代码的目的是获得一个数组的长度,但我不知道这个代码如何工作: template<typename T, int size> int GetArrLength(T(&)[size]){return size;} 谢谢。

C ++静态多态(CRTP)并使用派生类的typedef

我阅读了维基百科有关在C ++中使用静态(读:编译时)多态性的好奇的循环模板模式的文章 。 我想概括它,以便我可以根据派生types更改函数的返回types。 (这看起来应该是可能的,因为基types从模板参数中知道派生types)。 不幸的是,下面的代码不会使用MSVC 2010进行编译(我现在还没有轻松访问gcc,所以我还没有尝试过)。 任何人知道为什么 template <typename derived_t> class base { public: typedef typename derived_t::value_type value_type; value_type foo() { return static_cast<derived_t*>(this)->foo(); } }; template <typename T> class derived : public base<derived<T> > { public: typedef T value_type; value_type foo() { return T(); //return some T object (assumes T is default constructable) } […]