C++ 我怎样才能说服emacs C++;模式比my小于isn';不是模板参数吗?

C++ 我怎样才能说服emacs C++;模式比my小于isn';不是模板参数吗?,c++,emacs,C++,Emacs,这个问题困扰了我很多年,我想知道是否有人找到了解决办法。问题是,在C++模式下,Emacs不能判定“代码> > p>这比C++代码> CC模式< />代码更像C++问题。后者可能会使用一些更智能的启发式方法来处理更简单的问题,如您的问题,但一般来说,如果不知道X是否是一个模板,这种小于/模板的开放冲突很难解决 考虑以下代码: #include <iostream> using std::cout; #ifdef TEMPLATE template <int I> int

这个问题困扰了我很多年,我想知道是否有人找到了解决办法。问题是,在C++模式下,Emacs不能判定“代码> > p>这比C++代码> CC模式< />代码更像C++问题。后者可能会使用一些更智能的启发式方法来处理更简单的问题,如您的问题,但一般来说,如果不知道
X
是否是一个模板,这种小于/模板的开放冲突很难解决

考虑以下代码:

#include <iostream>
using std::cout;

#ifdef TEMPLATE
template <int I>
int X(int arg)
{
  return I + arg;
}
#else
int X = -1;
#endif

int main(int argc, char** argv)
{
  const int Y = 0;

  int foo = 1, bar = 2;

  cout << (X < Y && 10 > (foo + bar)) << '\n';
  return 0;
}
#包括
使用std::cout;
#ifdef模板
模板
整数X(整数arg)
{
返回I+arg;
}
#否则
int X=-1;
#恩迪夫
int main(int argc,字符**argv)
{
常数Y=0;
intfoo=1,bar=2;

cout(foo+bar)你确定这是问题吗?这可能是它为在多行中扩展的表达式中的第二行和后面的行生成了一个缩进级别……你能添加一个类似的表达式来代替<代码>吗?我对这些问题的答案只有通过阅读ELSIP代码来自己解决。C++模式是什么?您正在运行吗?我使用了
ellemtel
,无法为您的示例重现此行为。此外,我很好奇如果在
(X
(Y
?@Corey有趣的是,虽然我通常使用
linux
,但我发现
ellemtel也存在同样的问题。我也尝试忽略我的.emacs并使用默认值,但没有帮助。添加paren实际上解决了这个问题!谢谢!我现在就可以做这个表单了,但它的存在仍然令人沮丧。
bool foo() {
  return X == Y &&
    Y == Z;
}
GNU Emacs 24.1.1 (x86_64-apple-darwin, NS apple-appkit-1038.36)
 of 2012-06-10 on bob.porkrind.org
#include <iostream>
using std::cout;

#ifdef TEMPLATE
template <int I>
int X(int arg)
{
  return I + arg;
}
#else
int X = -1;
#endif

int main(int argc, char** argv)
{
  const int Y = 0;

  int foo = 1, bar = 2;

  cout << (X < Y && 10 > (foo + bar)) << '\n';
  return 0;
}