小编Jul*_*ius的帖子

如何使用GCC诊断pragma与C++模板函数?

我想使用g ++和-Werror,所以我现在要禁用我无法控制的第三方库的警告.http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html提供的解决方案非常有效,允许简单地用pragma包装第三方标题.不幸的是,在涉及模板的某个设置中,这对我来说不再适用.我创建了以下最小的示例,其中此方法无法按预期工作:

源文件main.cpp

#pragma GCC diagnostic ignored "-Wunused-parameter"
#include "hdr.hpp"
#pragma GCC diagnostic error "-Wunused-parameter"
int main() {
    return mytemplatefunc(2) + mystandardfunc(3); // will print ONLY ONE warning
}
Run Code Online (Sandbox Code Playgroud)

和标题hdr.hpp

template<typename T>
int mytemplatefunc(T t) {
    return 42;
}
int mystandardfunc(int i) {
    return 53;
}
Run Code Online (Sandbox Code Playgroud)

使用Makefile编译

CPPFLAGS+=-Wunused-parameter -Werror
main: main.cpp
Run Code Online (Sandbox Code Playgroud)

将产生以下编译器错误

g++  -Wunused-parameter -Werror   main.cpp   -o main
In file included from main.cpp:3:
hdr.hpp: In instantiation of ‘int mytemplatefunc(T) [with T = int]’:
main.cpp:29:   instantiated from …
Run Code Online (Sandbox Code Playgroud)

c++ gcc templates diagnostics pragma

5
推荐指数
2
解决办法
2617
查看次数

列出Ember.js中特定DS.Model的所有属性

如何列出模型中定义的所有属性?

例如,如果我们有一些假想的博客应用程序的变体:

App.Post = DS.Model.extend({
    title: DS.attr('string'),
    text: DS.attr('string'),
    comments: DS.hasMany('App.Comment')
});
Run Code Online (Sandbox Code Playgroud)

然后,我正在寻找在没有App.Post模型实例的情况下迭代属性的可能性:

# imaginary function
listAttributes(App.Post)
Run Code Online (Sandbox Code Playgroud)

这样的函数可以生成一个提供模型属性名称和类型的数组:

[{
    attribute: "title",
    type: "string"
},
{
    attribute: "text",
    type: "string"
}]
Run Code Online (Sandbox Code Playgroud)

如何用Ember实现这一目标?

ember.js

3
推荐指数
1
解决办法
2068
查看次数

标签 统计

c++ ×1

diagnostics ×1

ember.js ×1

gcc ×1

pragma ×1

templates ×1