小编Dre*_*ank的帖子

的行为; 重复最后一个命令困扰我.你能帮助我做得更好吗?

好的,假设我们有一行文字:

[s]tackoverflow rocks

括号在正常模式下显示光标的位置.按下后tr,您会得到:

stackov[e]rflow rocks

现在是有趣的部分.如果你推动;重复命令会发生什么?没有!Vim找到下一个'r'(紧靠光标右侧)并将其自身定位在其左侧(已经存在的位置).

我希望将;光标前进到这个位置:

stackoverflow[ ]rocks

这可以通过l在按下之前使用向右移动一个角色来实现;,但额外的步骤是刺激性的.有一个类似的问题T,但没有fF.有没有一些方法,使;行为我想用的方式tT

vim

19
推荐指数
2
解决办法
8214
查看次数

私有转换函数导致"模糊的默认类型转换"错误(c ++)

首先,一个证明问题的小例子:

struct Bar {
    enum Baz {aa, bb, cc};
    Baz baz_;

    operator Baz() const { return baz_; }
    private:
        template<typename T> operator T() const;
};

int main() {
    Bar bar;
    switch (bar) {
        case Bar::aa:
            break;
        case Bar::bb:
            break;
        case Bar::cc:
            break;
        default:
            break;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用g ++ 4.7.0编译此代码会出现以下错误:

foo.cpp: In function ‘int main()’:
foo.cpp:12:16: error: ambiguous default type conversion from ‘Bar’
foo.cpp:12:16: error:   candidate conversions include ‘template<class T> Bar::operator T() const’
Run Code Online (Sandbox Code Playgroud)

我的理解是,由于结构对象被"切换",编译器将尝试找到转换函数为整数或枚举类型.我明确地向Bar :: Baz枚举类型提供了一个公共转换函数,并希望它能够使用它.

令我困惑的部分是编译器还找到了私有转换函数,然后无法决定使用哪个.为什么甚至考虑私人功能?如果我添加一个显式的强制转换,比如说 …

c++ g++ type-conversion

5
推荐指数
1
解决办法
490
查看次数

标签 统计

c++ ×1

g++ ×1

type-conversion ×1

vim ×1