例如,如果您有声明std::unique_ptr<A> a;,那么以下会导致问题吗?
a->foo(std::move(a));
Run Code Online (Sandbox Code Playgroud)
在我的例子中,foo是一个虚函数,所以我不能把它移出课堂.如果上面的代码结果导致问题,那么有什么方法可以产生相同的效果呢?
我无法使用此代码.我想打一个特点,允许继承它有"孩子"一类,但显然,Child的setParent方法想要一个P,但是却能得到Parent[P, C]代替.
package net.fluffy8x.thsch.entity
import scala.collection.mutable.Set
trait Parent[P, C <: Child[C, P]] {
protected val children: Set[C]
def register(c: C) = {
children += c
c.setParent(this) // this doesn't compile
}
}
trait Child[C, P <: Parent[P, C]] {
protected var parent: P
def setParent(p: P) = parent = p
}
Run Code Online (Sandbox Code Playgroud) 我有这段代码:
markovNextSS :: (RandomGen g, Ord a) => (MarkovChain a, a, g) -> (MarkovChain a, a, g)
markovNextSS (chain, prev, gen) = let
(gen', roll) = randomR (0.0, 1.0) gen
-- expected to get a (Double, g) above,
-- but GHC 7.8.3 says that this is a (g, g) instead
next = markovNext chain prev roll
in (chain, next, gen')
Run Code Online (Sandbox Code Playgroud)
为什么GHC会推断上面的错误类型,特别是如果RandomGen不是一个实例Random?