以下重载函数,
void foo(const void*)
{
printf("first");
}
void foo(unsigned int)
{
printf("second");
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下会产生不明确的重载
foo((int)0);
Run Code Online (Sandbox Code Playgroud)
但不是在这个
foo((int)1);
Run Code Online (Sandbox Code Playgroud)
为什么?是因为人们还在使用吗NULL?在没有显式强制转换的情况下,解决该问题的最佳方法是什么?
(我在 Ubuntu 18.04 上使用 GCC 8.3.0-C++11 进行编译)
编辑
正如你们中的一些人在评论中指出的那样,(int)0实际上编译没有错误(至少在 GCC 8.3.0 上,使用 C++11 std)。我遇到的问题只是foo(0),我现在明白为什么了。
我有一个与此处报告的示例非常相似的 Vue 组件:
watch: {
query(n, o) {
// Display loading animation
this.loading = true;
// Search debounced
this.debouncedSearchUser();
}
},
Run Code Online (Sandbox Code Playgroud)
query使用v-model以下方法绑定到文本输入的字符串变量在哪里:
data() {
return {
query: "",
loading: false,
results: []
}
},
Run Code Online (Sandbox Code Playgroud)
一切正常,除了在 android 的 chrome 上,手表触发器只触发一次(当query从""我写的任何内容更改时)。
任何的想法?
编辑:
问题似乎与v-model指令有关:我对本机 javascript 事件进行了一些实验,并且在我取消对输入的关注之前,不会更新 v-model 的值。如果有人对这里感兴趣是绑定:
<input v-model="query" class="input-text-light pad-s-m f-m"/>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以使用 watch 和 来解决这个问题v-model?
我在客户端上运行了这段代码来过滤事件列表:
if (res)
{
eventList.filter(function(event) {
const out = res.find(function(visibility) { return visibility.ID == event.id; }) == undefined;
return out;
});
alert(eventList);
}
displayEvents(eventList);
Run Code Online (Sandbox Code Playgroud)
问题是,即使out是false该元素没有被过滤掉.
只是为了调试我试图return false在任何情况下,结果数组仍然有所有的初始元素:
eventList.filter(function(event) {
return out;
});
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
编辑:
res是ID服务器返回的JSON对象数组(仅包含字段),同时eventList是Facebook事件的列表,从Facebook API请求传递给此回调函数