小编Ann*_*sum的帖子

C++如何使用默认参数指定模板化类的所有朋友?

要使用默认参数定义模板化类的朋友,是否需要在下面的代码中指定所有朋友(哪个有效)?

// Different class implementations
enum ClassImplType { CIT_CHECK, CIT_FAST, CIT_GPU, CIT_SSE, CIT_NOF_TYPES } ;

// Graph class has default template argument CIT_CHECK
template <typename T, ClassImplType impl_type = CIT_CHECK>
class graph {
  //...
};

// Vertex class
template <typename T>
class vertex {
  //...
  friend class graph<T, CIT_CHECK>;
  friend class graph<T, CIT_FAST>;
  friend class graph<T, CIT_GPU>;
  friend class graph<T, CIT_SSE>;
};
Run Code Online (Sandbox Code Playgroud)

我可以想象有一种更短的方式来表示为所有可能的ClassImplType枚举值定义了朋友.有点像friend class graph<T, ClassImplType>,但后者当然不起作用.

如果我使用的术语不正确,请道歉.

c++ templates arguments friend

12
推荐指数
2
解决办法
836
查看次数

如何在AngularJS中的http.get中进行重定向?

我正在建立一个教练网站,通过使用社交媒体帮助人们过上更健康的生活.目前我正在使用前端AngularJS的ExpressJS服务器中的OAuth访问Twitter.

来自AngularJS网站:

200到299之间的响应状态代码被视为成功状态,将导致调用成功回调.请注意,如果响应是重定向,则XMLHttpRequest将透明地跟随它,这意味着不会为此类响应调用错误回调.

我的服务器的完整代码可以在github上的web.jstwitter.js中找到,但这是调用者:

function LoginCtrl($scope, $http, $location) {
  $scope.welcome = 'Sign in with Twitter';
  $http.defaults.useXDomain = true;    
  $scope.submit = function() {    
    $http({method: 'GET', url: '/sessions/connect'}).
    success(function(data, status) {
        $scope.welcome = data;
    });
  };
}
Run Code Online (Sandbox Code Playgroud)

这是web.js中的被调用者:

app.get('/sessions/connect', function(req, res){
  consumer().getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret, results){
    if (error) {
      res.send("Error getting OAuth request token : " + sys.inspect(error), 500);
    } else {  
      req.session.oauthRequestToken = oauthToken;
      req.session.oauthRequestTokenSecret = oauthTokenSecret;
      res.redirect("https://api.twitter.com/oauth/authorize?oauth_token="+req.session.oauthRequestToken);      
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

如果我查一下tcpdump(对不起我是老式的),我看到: …

redirect http-get angularjs

9
推荐指数
1
解决办法
3万
查看次数

xrandr 根本不显示 HDMI

我有一台配备 NVIDIA GT555M GPU 的笔记本电脑 (Asus N55SF),安装了 Elementary OS(基于 Ubuntu)。我安装了 Bumblebee,带有 NVIDIA 驱动程序,可以正常工作。(optirun glxspheres 比 glxspheres 具有更高的 fps)

当我将显示器连接到 VGA 适配器时,一切正常。但是,当我尝试连接 HDMI 设备时,没有任何反应。HDMI 端口可在 Windows 7 和 8 上运行,因此不可能是硬件故障。

奇怪的是,当我运行 xrandr 时,我得到以下输出:

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
LVDS1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1920x1080      60.0*+   59.9  
   1680x1050      60.0     59.9  
   1600x1024      60.2  
   1400x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x960       60.0  
   1360x768       59.8     60.0  
   1152x864 …
Run Code Online (Sandbox Code Playgroud)

nvidia xrandr hdmi

9
推荐指数
1
解决办法
1万
查看次数

如何将默认的gcc选项推翻给链接器?

在我的系统上,当我编译一些东西(bfin-linux-uclibc-g++但是这是无关紧要的)时,我得到了数百个关于其中一个编译器标志的警告(不在我自己的代码库中).我想禁用它.

fde encoding in src/SpiMessageUtil.o(.eh_frame) prevents .eh_frame_hdr table being created.
Run Code Online (Sandbox Code Playgroud)

这是从默认的gcc标志开始的,它被移交给链接器,通过添加'-v'到编译步骤很容易检查:

COLLECT_GCC_OPTIONS=... --eh-frame-hdr ...
Run Code Online (Sandbox Code Playgroud)

我想摆脱这个选项,这确实是默认定义的:

bfin-linux-uclibc-g++ -dumpspecs | grep frame-hdr
%{!static:--eh-frame-hdr}\
%{mfdpic: -m elf32bfinfd -z text} %{shared} %{pie}   \
%{static:-dn -Bstatic}   %{shared:-G -Bdynamic}   \
%{!shared: %{!static:    %{rdynamic:-export-dynamic}    \
  %{!dynamic-linker:-dynamic-linker \
     %{mglibc:%{muclibc:%e-mglibc and -muclibc used together;:%e-mglibc not supported for this target};:/lib/ld-uClibc.so.0 \
}}}\
%{static}} -init __init -fini __fini
Run Code Online (Sandbox Code Playgroud)

我该如何覆盖此选项?我无法使用-Wl,--no-eh-frame-hdr,因为没有任何类似的定义.

gcc compiler-flags linker-warning

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

如何在CMake中以"bar = foo"语法加载变量?

很高兴能够在Makefile和shell脚本之间共享相同的文件,因为它们都可以处理键值对的以下语法:

$> cat config 
  var1=value
  var2=value
  var3=value
  var4=value
  var5=value
Run Code Online (Sandbox Code Playgroud)

所以,只需要source config一个shell脚本就可以include configMakefile.但是,使用CMake语法就变成了SET(var1 value).有一些简单的方法,我可以使用上面的语法用变量文件提供CMake吗?我的意思很简单,我不喜欢sed在它上面运行.

cmake key-value

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

最早的 C 编译器的源代码在哪里?

这不是一个诸如“我可以使用哪个工具来执行...?”之类的请求,该请求不属于 stackoverflow。

在几个问题中,似乎有相当权威的答案参考了对早期编译器源代码的分析,例如:

维基百科还描述了几个旧的编译器,例如:

然而,没有提及具有最大历史意义的最早版本!

考虑到真相就在代码中,如果知道在哪里可以找到最早的 C 编译器的源代码,那就太好了。

c compiler-construction history

5
推荐指数
0
解决办法
323
查看次数

为什么 xargs -t 不显示引号?

假设您打开两个目录,并通过ls -Q和进行搜索grep

$ mkdir "example 1"
$ mkdir "example 2"
$ ls -Q | grep example | xargs -t nautilus
Run Code Online (Sandbox Code Playgroud)

然后该选项-t显示nautilus example 1 example 2不带引号。但是,文件夹可以正确打开。

$ ls -Q | grep example | xargs -t echo
echo example 1 example 2 
example 1 example 2
Run Code Online (Sandbox Code Playgroud)

为了完整起见,让我展示以下输入xargs

$ ls -Q | grep example
"example 1"
"example 2"
Run Code Online (Sandbox Code Playgroud)

所以那里的引号...

这里发生了什么?引号去哪儿了?

quotes xargs

3
推荐指数
1
解决办法
3416
查看次数