Tag: 模板

在grails应用程序中使用sitemesh是否有很好的教程?

我是一个非常有经验的Grails开发人员,但我的大部分经验是使用Grails将JSON / XML提供给Flex应用程序和一些相对简单的HTML网站。 我一直深入到在grails中使用sitemesh集成,我正在努力寻找一些更复杂configuration的最佳实践,我很好奇,如果有任何好的教程或例子。 原来的Sitemesh网站没有那么有用,因为它所谈论的标签并没有直接暴露在Grails中。 谷歌search主要是显示旧的邮件列表post和一些香草sitemesh的东西,这是帮助我进一步移动,但它是很多的试验和错误。 我完全理解基本的g:layoutTitle,g:layoutHead和g:layoutBody标记是如何工作的。 这些都很简单,有据可查。 我希望看到的例子有: g:applyLayout – 关于这方面的文档很薄弱,我不完全理解主要文档中build议的用法。 这与设置meta name='layout' content='foo'属性有什么不同? g:pageProperty – 关于如何通过在正在装饰的页面中将值设置为元标签来将属性拖放到主模板中的一些更好的示例。 pageProperty中的grails文档仅显示正在提交的正文的onload属性。 我想你也可以在这里使用元标记值,还有其他的东西吗? 你可以使用多个级别的sitemesh布局? 我的testing似乎让我觉得我不能,但似乎降低了可重用性。 我认为这里的答案是g:applyLayout的一些用法,但这正是我最苦恼的地方。

如何使用doxygen编写C ++模板和模板元函数?

有没有关于如何使用DoxygenloggingC ++模板和模板元函数的指南? 例如: /// @brief metafunction for generation of a map of message types to /// their associated callbacks. /// @tparam Seq the list of message types template< class Seq > struct generate_callback_map { typedef typename mpl::transform< Seq , build_type_signature_pair< mpl::_1 > >::type vector_pair_type; typedef typename fusion::result_of::as_map< vector_pair_type >::type type; }; 到目前为止,我已经看到了以下build议: @tparam用于logging模板参数。 @arg替代模板参数的备选方法。 @brief用来描述元函数。 […]

我如何强制C ++模板的特定实例实例化?

看标题。 我有一个模板。 我想强制一个模板的特定实例来实例化。 我该怎么做呢? 更具体地说,你可以强制抽象模板类来实例化吗? 我可以详细说明,因为我有同样的问题。 在我的情况下,我正在build立一个库,一些模板实现很大,包括很多的东西,但只生成几个types。 我想在库中编译它们,并导出所有的方法,但不包含任何地方的代docker。 即: template<class T> OS_EXPORT_DECL class MyTmpl { T *item1; public: inline T *simpleGetT() { return(item1); } /* small inline code in here */ } T *doSomeReallyBigMergeStuff(T *b); // note only declaration here }; // *** implementation source file only seen inside library template<class T> MyTmpl<T>::doSomeReallyBigMergeStuff(T *b) { […]

我怎样才能为一系列整数值专门化C ++模板?

有一种方法可以根据一系列值而不是一个模板进行专门化吗? 我知道下面的代码是无效的C ++代码,但它显示了我想要做的。 我正在编写一个8位机器的代码,所以使用整数和字符的速度有所不同。 template<unsigned SIZE> class circular_buffer { unsigned char buffer[SIZE]; unsigned int head; // index unsigned int tail; // index }; template<unsigned SIZE <= 256> class circular_buffer { unsigned char buffer[SIZE]; unsigned char head; // index unsigned char tail; // index };

非成员函数不能有cv-qualifier

在写下面的函数abs ,我得到错误: 非成员函数unsigned int abs(const T&)不能有cv-qualifier。 template<typename T> inline unsigned int abs(const T& t) const { return t>0?t:-t; } 删除该const限定符后,没有错误。 由于我不修改t里面的上面的代码应该编译。 我想知道为什么我得到错误?

本地类中的成员模板

给出以下代码: void f() { class A { template <typename T> void g() {} }; } g ++ 4.4(还有g++-4.6 -std=gnu++0x )抱怨:“本地类中成员模板声明无效”。 显然本地类不允许有模板成员。 这个限制的目的是什么? 它会被删除在C ++ 0x? 注意:如果我将本地类本身作为模板,而不是给它一个模板成员: void f() { template <typename T> class A { void g() {} }; } 我得到“错误:模块声明不能出现在块作用域”。

GCC的所有版本都与在定义中具有默认types的模板拼争

我浪费了无数个小时来查明gcc的问题。 我想用另外一个编译器来testing我们的代码库,以寻找更多的Clang可能错过的警告。 我感到震惊的是,由于模板论证扣除的失败,几乎有一半的项目停止编译。 在这里,我试图把我的情况弄到最简单的一段代码。 #include <type_traits> struct Foo { }; // This is a template function declaration, where second template argument declared without a default template <typename T, typename> void foo(const Foo & foo, T t); // This is a template function definition; second template argument now has a default declared template <typename T, typename […]

如何将typename T转换为C ++中的string

在c ++中使用模板时,我遇到了一个问题,将typename T转换为string。 例如: template <typename T> class Matrix { public: Matrix() { //my_type = string type of T. ie if T is char. I want my_type to be "char". } string my_type; } 如何将T转换为表示T是什么的string。 注:我只是在玩耍,所以请不要担心什么时候可能需要这样的事情。

为什么有那么多的std :: swap的特化?

在查看std::swap的文档时,我看到了很多专业化的东西。 它看起来像每个STL容器,以及许多其他标准设施有一个专门的交换。 我想借助模板,我们不需要所有这些专业化? 例如, 如果我写我自己的pair它与模板版本正常工作: template<class T1,class T2> struct my_pair{ T1 t1; T2 t2; }; int main() { my_pair<int,char> x{1,'a'}; my_pair<int,char> y{2,'b'}; std::swap(x,y); } 那么从专门的std::pair获得什么呢? template< class T1, class T2 > void swap( pair<T1,T2>& lhs, pair<T1,T2>& rhs ); 我还想知道是否应该为自定义类写作自己的专业化, 或者仅仅依靠模板版本。

为什么别名模板给出了相冲突的声明?

从Clang到g ++的一些C ++ 11代码的端口 template<class T> using value_t = typename T::value_type; template<class> struct S { using value_type = int; static value_type const C = 0; }; template<class T> value_t<S<T>> // gcc error, typename S<T>::value_type does work const S<T>::C; int main() { static_assert(S<int>::C == 0, ""); } 为Clang(版本3.1至SVN中继)与任何g ++版本提供不同的行为。 对于后者,我得到这样的错误 prog.cc:13:13: error: conflicting declaration 'value_t<S<T> > […]