- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个变量包装器,当底层变量通过这个包装器被修改时,它会发出变化信号,这样其他对象就可以监听变化。
它工作正常(即我可以在底层对象上分配、添加、减去、调用成员函数(尽管这些无法发出更改信号)等),但有一点小问题:如果我这样做
struct some_object_type
{
wrapper<int> some_wrapper;
}
int main()
{
some_object_type some_object;
auto value = some_object.some_wrapper;
}
value
这里被正确地推断为 wrapper<int>
.有没有办法让这个结构表现得像 some_object.some_wrapper
类型为 int
,所以 value
被推断为 int
多变的?
最佳答案
@TartanLlama 在他的评论中有正确的解决方案。然而,你想要什么auto
推断为如果您指定了 auto const& value = ...
?在这种情况下,隐式转换将不起作用。
我以前遇到过这个问题,我能想到的最好的解决方案是提供一个 wrapper<T>::operator()
功能:
struct some_object_type
{
wrapper<int> some_wrapper;
}
int main()
{
some_object_type some_object;
auto value1 = some_object.some_wrapper; // deduces to wrapper<int>
auto value2 = some_object.some_wrapper(); //deduces to int
}
也许不是您所希望的解决方案,但除非您放弃自动类型推导,否则您最好的选择是@TartanLlama 的建议。
关于c++ - 有没有办法强制自动推导考虑 operator <some_type>() 而不是复制赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40545714/
我有一个需要 const some_type** 作为参数的函数(some_type 是一个结构体,该函数需要一个指向该类型数组的指针)。我声明了一个 some_type* 类型的局部变量,并对其进行
我有一个函数需要 const some_type** 作为参数(some_type 是一个结构,函数需要一个指向这种类型数组的指针).我声明了一个 some_type* 类型的局部变量,并对其进行了初
我有一个函数需要 const some_type** 作为参数(some_type 是一个结构,函数需要一个指向这种类型数组的指针).我声明了一个 some_type* 类型的局部变量,并对其进行了初
我有一个变量包装器,当底层变量通过这个包装器被修改时,它会发出变化信号,这样其他对象就可以监听变化。 它工作正常(即我可以在底层对象上分配、添加、减去、调用成员函数(尽管这些无法发出更改信号)等),但
在下面的例子中 template void foo() { const char* name = typeid(T).name(); std::cout (); 将打印“std::s
让我们假设一个 std::tuple给出。我想创建一个新的 std::tuple其类型是在 [0, sizeof...(some_types) - 2] 中索引的类型.例如,假设起始元组是 std::
第 1 行导致 error: conversion from ‘C’ to non-scalar type ‘C’ requested .我知道我可以把它写成第 2 行,但是我怎样才能使用 make_
令ss为std::stringstream。如何指定(ss #include namespace detail { template concept SameHelper = st
我是一名优秀的程序员,十分优秀!