- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类:
class MyClass{
enum Choices : int
{
First,
Last
};
template<MyClass::Choices choice>
void bar(...);
};
我希望能够在客户端代码中对bar()
进行choice
模板调用。现在,因为我不希望客户端代码负责管理 MyClass
实例,所以我想添加另一个层来负责,这样我就可以:
{
t = new T();
t.bar<choice>();
};
在函数内部。
理想情况下,我希望能够调用这一层,我们称它为 foo()
,如下所示:
foo<MyClass::Choices::One>(...);
这可能吗?这是我尝试过但出现错误的方法:
template<typename T>
template<T::Choices choice>
void foo(){
t = new T();
t.bar<choice>();
};
最佳答案
我相信这是使用特征的想法所能做的最好的事情:
#include <iostream>
#include <type_traits>
template <typename T>
struct choice_traits;
class MyClass{
public:
enum Choices : int
{
First,
Last
};
template<MyClass::Choices choice>
void bar(...) {}
};
template <>
struct choice_traits<MyClass::Choices>
{
using parent = MyClass;
};
template <MyClass::Choices C>
using choice_const = std::integral_constant<MyClass::Choices, C>;
template <typename C, C value>
void foo(std::integral_constant<C, value>)
{
using T = typename choice_traits<C>::parent;
T* t = new T();
t->template bar<value>();
}
int main()
{
foo(choice_const<MyClass::Choices::First>());
return EXIT_SUCCESS;
}
您需要为每个具有选项枚举的容器类专门化 choice_traits
。我还创建了一个助手 choice_const
以避免直接使用 std::integral_constant
。
如果有更多信息,它可以改进,但根据您的解释,这是可以做到的。
关于C++: "Inferring"来自依赖类型的模板类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42819140/
我使用 Facebook 的 Infer 检查我的 android 代码 infer -- ./gradlew build after 8 minutes Fatal error: exception
来自 JEP 286 ,我们看到我们将能够在 JDK 10 (18.3) 中利用本地类型推断 (var)。 JEP 声明以下编译,这是预期的: var list = new ArrayList();
我可以拥有 val composeFunction = remember { mutableStateOf ({}) } 我可以拥有 val composeFF = @Composable { Tex
我真的不知道如何解决这个问题(错误:不兼容的类型:推断的类型不符合推断的上限:INT#1 上限:Giocatore[],Parcelable where INT# 1 是交集类型:INT#1 exte
直到今天,在我们将 Visual Studio 2017 更新到最新的 15.3 之后,我们的 UWP 应用程序中的以下代码一直运行良好。 private void Test() { var
我有以下代码,我不明白: type Msg = Left | Right content : Html Msg content = p [] [] p的类型签名: p : List (
类型推断的局限性是什么?哪些类型的系统没有通用的推理算法? 最佳答案 Joe Wells表明系统F的类型推断是不确定的,System F是最基本的多态Lambda演算,由Girard和Reynolds
我在构建时不断收到以下错误 Karma 运行失败:未定义 ERROR [karma]: ReferenceError: Strict mode forbids implicit creation of
在编程语言中,推断类型和动态类型有什么区别?我知道动态类型,但不知道动态类型与推断类型有何不同?有人可以通过一些例子提供解释吗? 最佳答案 推断类型 = 在编译时设置一次。实际上,推断部分只是为了节省
我有一个类: class MyClass{ enum Choices : int { First, Last }; template
考虑下面的类 class SomeBaseClass { ... } 以及以下使用infer关键字的条件类型 type ExtractInner = T extends SomeBaseCla
这个问题在这里已经有了答案: In TypeScript, how to get the keys of an object type whose values are of a given typ
例如,Agda 允许我这样写: open import Data.Vec open import Data.Nat myVec : Vec ℕ _ myVec = 0 ∷ 1 ∷ 2 ∷ 3 ∷ []
我正在使用: $ coqtop -v The Coq Proof Assistant, version 8.4pl5 (February 2015) compiled on Feb 06 2015 1
我知道像 Haskell 这样的语言是静态类型的并且有类型推断。但是是否存在具有全局类型推断的非函数式语言,相当于具有类型推断和结构类型的 C 之类的东西。 最佳答案 OCaml 是我所知道的唯一一种
鉴于: sub abc(Int $n) { say $n } 如果我们将类型为Str的变量传递给abc,则会得到编译时错误: my Str $s = "123"; abc $s; 如果传递包含字符
序言:这是基于@Travis Brown 的 macro based solution复制案例类属性。 鉴于: trait Entity[E def id: Int def withId(i
为什么可以推断闭包表达式的参数类型和返回类型,而不是 Rust 中的函数? 最佳答案 这只是一个设计决定:Rust 使用局部类型推断,而不是全局类型推断。理论上可以进行全局类型推断,但为了便于调试,R
我想使用的类是 System.Web.Mvc.DependencyResolver。以下作品: using System.Web.Mvc; ... var x = DependencyResolver
我声明了以下字典: private readonly Dictionary dictionary; 我有一个导致编译器错误的方法: public IQueryable Find(Func ex
我是一名优秀的程序员,十分优秀!