Tag: 模板

GCC和MS编译器的模板实例化细节

任何人都可以在GCC和MS编译器的编译和/或链接时提供模板实例如何处理的比较或具体细节? 这个过程在静态库,共享库和可执行文件中是不同的吗? 我发现这个文档有关GCC如何处理它,但我不确定信息是否仍然指的是事物的当前状态。 我应该在编译我的库时使用他们build议的标志,例如-fno-implicit-templates ? 我所知道的(可能不一定是正确的)是: 模板将在实际使用时被实例化 模板将被实例化为显式实例化的结果 通常通过折叠重复实例来处理重复实例化,或者通过推迟实例化直到链接时间

在Rails中,如何使用视图呈现JSON?

假设你在你的用户控制器中,你想得到一个JSON响应的显示请求,这将是很好,如果你可以在你的views / users /目录中创build一个文件,命名为show.json和你的用户#显示动作完成后,呈现文件。 目前你需要做一些事情: def show @user = User.find( params[:id] ) respond_to do |format| format.html format.json{ render :json => @user.to_json } end end 但是如果你可以创build一个show.json文件,它会自动呈现像这样: def show @user = User.find( params[:id] ) respond_to do |format| format.html format.json end end 这会为我节省很多的痛苦,并且会冲走当我在控制器中渲染我的json时得到的可怕的肮脏的感觉

使用“模板”包在golang中为客户端生成dynamic网页需要花费太多时间

使用template包为客户端生成一个dynamic网页时,速度非常慢。 testing代码如下,golang 1.4.1 http.Handle("/js/", (http.FileServer(http.Dir(webpath)))) http.Handle("/css/", (http.FileServer(http.Dir(webpath)))) http.Handle("/img/", (http.FileServer(http.Dir(webpath)))) http.HandleFunc("/test", TestHandler) func TestHandler(w http.ResponseWriter, r *http.Request) { Log.Info("Entering TestHandler …") r.ParseForm() filename := NiConfig.webpath + "/test.html" t, err := template.ParseFiles(filename) if err != nil { Log.Error("template.ParseFiles err = %v", err) } t.Execute(w, nil) } 根据日志,我发现t.Execute(w, nil)花了大约3秒钟,我不知道为什么它使用这么多的时间。 我也尝试过Apache服务器来testingtest.html ,它的响应速度非常快。

initializer_list和模板types的扣除

考虑一下function: template<typename T> void printme(T&& t) { for (auto i : t) std::cout << i; } 或任何其他函数期望与一个begin()/ end()启用types的一个参数。 为什么以下是非法的? printme({'a', 'b', 'c'}); 当所有这些都是合法的: printme(std::vector<char>({'a', 'b', 'c'})); printme(std::string("abc")); printme(std::array<char, 3> {'a', 'b', 'c'}); 我们甚至可以这样写: const auto il = {'a', 'b', 'c'}; printme(il); 要么 printme<std::initializer_list<char>>({'a', 'b', 'c'});

函数模板中的魔法参数

在下面的代码中 #include<iostream> template<typename T,size_t N> void cal_size(T (&a)[N]) { std::cout<<"size of array is: "<<N<<std::endl; } int main() { int a[]={1,2,3,4,5,6}; int b[]={1}; cal_size(a); cal_size(b); } 正如所料,两个数组的大小都被打印出来。 但是N如何自动初始化为正确的数组大小(数组是通过引用传递的)? 上面的代码是如何工作的?

使用模板的C ++隐式types转换

我有一个模板class A template <unsigned int m> class A { public: A(int) {} }; 其中有一个来自int的构造函数。 我有一个操作: template<unsigned int m> A<m> operator+(const A<m>&, const A<m>&) { retrun A<m>(0); } 但是当我打电话给: A<3> a(4); A<3> b = a + 5; A<3> c = 5 + a; 我想int被隐式转换为A,但是编译器会抛出错误。 有什么优雅的方式来启用隐式转换,而不使用这样的解决scheme: a + A<m>(5) operator+<3>(a, 5)

C ++ 11:我可以从多个参数到元组,但我可以从元组去多个参数?

可能重复: 如何将元组展开成可变参数模板函数的参数? “解包”一个元组来调用一个匹配的函数指针 在C ++ 11模板中,有没有一种方法可以将元组用作(可能是模板)函数的单独参数? 例: 比方说我有这个function: void foo(int a, int b) { } 我有tuple auto bar = std::make_tuple(1, 2) 。 我可以用它来模仿foo(1, 2)吗? 我不是简单的foo(std::get<0>(bar), std::get<1>(bar))因为我想在一个不知道参数个数的模板中做这个。 更完整的例子: template<typename Func, typename… Args> void caller(Func func, Args… args) { auto argtuple = std::make_tuple(args…); do_stuff_with_tuple(argtuple); func(insert_magic_here(argtuple)); // <– this is the hard part } 我应该注意到,我宁愿不创build一个模板,适用于一个参数,另一个适用于两个,等等…

Bash模板:如何使用Bash从模板构buildconfiguration文件?

我正在编写一个脚本来为我自己的web服务器自动创buildApache和PHP的configuration文件。 我不想使用任何GUI,如CPanel或ISPConfig。 我有一些Apache和PHPconfiguration文件的模板。 Bash脚本需要读取模板,进行variablesreplace并将parsing后的模板输出到某个文件夹中。 什么是最好的方法来做到这一点? 我可以想到几种方法。 哪一个是最好的,或者可能有一些更好的方法来做到这一点? 我想在纯粹的Bash中做到这一点(在PHP中很容易) 1) 如何在文本文件中replace$ {}占位符? template.txt: the number is ${i} the word is ${word} script.sh: #!/bin/sh #set variables i=1 word="dog" #read in template one line at the time, and replace variables #(more natural (and efficient) way, thanks to Jonathan Leffler) while read line do eval echo "$line" done < […]

模板问题导致链接器错误(C ++)

我很less知道C ++模板是怎么回事,但我试图实现一个函数,它search一个满足给定属性的元素(在这种情况下,search给定的名称)的向量。 我的.h文件中的声明如下所示: template <typename T> T* find_name(std::vector<T*> v, std::string name); 当我编译时,我得到这个链接器错误,当我调用该函数: Error 1 error LNK2019: unresolved external symbol "class Item * __cdecl find_name<class Item>(class std::vector<class Item *,class std::allocator<class Item *> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??$find_name@VItem@@@@YAPAVItem@@V?$vector@PAVItem@@V?$allocator@PAVItem@@@std@@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z) referenced in function "public: class Item * __thiscall Place::get_item(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?get_item@Place@@QAEPAVItem@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) place.obj Program2 再次,我是新的模板,所以我不知道发生了什么事。 我通过Googlefind的所有LNK2019实例都没有使用正确的库,但是由于这是我自己的函数,我不明白为什么会这样。 […]

我可以使用WPFcombobox中的选定项目的不同模板比下拉部分中的项目?

我有一个WPFcombobox,里面充满了Customer对象。 我有一个DataTemplate: <DataTemplate DataType="{x:Type MyAssembly:Customer}"> <StackPanel> <TextBlock Text="{Binding Name}" /> <TextBlock Text="{Binding Address}" /> </StackPanel> </DataTemplate> 这样,当我打开我的combobox,我可以看到不同的客户与他们的名字,并在下面,地址。 但是,当我select一个客户时,我只想在ComboBox中显示名称。 就像是: <DataTemplate DataType="{x:Type MyAssembly:Customer}"> <StackPanel> <TextBlock Text="{Binding Name}" /> </StackPanel> </DataTemplate> 我可以为ComboBox中的选定项目select另一个模板吗? 解 在答案的帮助下,我解决了这个问题: <UserControl.Resources> <ControlTemplate x:Key="SimpleTemplate"> <StackPanel> <TextBlock Text="{Binding Name}" /> </StackPanel> </ControlTemplate> <ControlTemplate x:Key="ExtendedTemplate"> <StackPanel> <TextBlock Text="{Binding Name}" /> <TextBlock Text="{Binding Address}" /> </StackPanel> </ControlTemplate> […]