小编AC.*_*AC.的帖子

这是逗号运算符的可接受用法吗?

我在Stack Overflow上看到了其他帖子,它们极力阻止逗号运算符的重载.我发送了一个带有逗号运算符重载的Github pull请求,看起来如下所示:

class Mylogger {
    public:
            template <typename T>
            Mylogger & operator,(const T & val) {
                    std::cout << val;
                    return * this;
            }
 };

 #define  Log(level,args...)  \
    do { Mylogger logv; logv,level, ":", ##args; } while (0)
Run Code Online (Sandbox Code Playgroud)

然后你可以使用它如下:

 Log(2, "INFO: setting variable \", 1, "\"\n");
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这是一个好的或坏的用例?

c++ operator-overloading

6
推荐指数
2
解决办法
167
查看次数

如何使用go test -run运行特定的golang测试

我在这里做错了什么?我只想运行一个ConnectionPoolTest.TestNew,无论我尝试什么,我都返回“无测试运行”

:go test  --check.list *.go |grep Connectio
ConnectionPoolTest.TestNew
:go test  --run ConnectionPoolTest *.go
ok      command-line-arguments  0.005s [no tests to run]
:go test  --run ConnectionPoolTest.TestNew *.go
ok      command-line-arguments  0.005s [no tests to run]
Run Code Online (Sandbox Code Playgroud)

go

6
推荐指数
1
解决办法
4598
查看次数

在add_library的链接阶段结束时添加-ldl

我在使用cmake构建的github https://github.com/acgreek/ExtremeCUnit上编写/维护了一个小单元测试库.退房后,您可以通过'cmake test'结账并运行一些测试.它在Cygwin和Ubuntu(我唯一的家庭系统)上运行得很好.我最近升级到ubuntu 13.10并且库停止了与测试二进制文件的链接,因为ExtremeUnitC库现在需要在链接阶段(通过add_library)与-ldl链接,另外-ldl需要添加到链接的末尾行(似乎有些改为gcc).在Ubuntu的早期版本中,在测试对象与ExtremeUnitC库链接之前,add_library目标不需要-ldl

基本上我需要的是make VERBOSE = 10的结果,当它进入下一阶段时

Linking C shared library libExtremeCUnit.so
/usr/bin/cmake -E cmake_link_script CMakeFiles/ExtremeCUnit.dir/link.txt --verbose=10
/usr/bin/gcc  -fPIC -Wall -Wextra -ggdb3 -fPIC  -ldl   -shared -Wl,-    soname,libExtremeCUnit.so -o libExtremeCUnit.so CMakeFiles/ExtremeCUnit.dir/main.c.o CMakeFiles/ExtremeCUnit.dir/runner.c.o CMakeFiles/ExtremeCUnit.dir/util.c.o CMakeFiles/ExtremeCUnit.dir/findtest_names.c.o CMakeFiles/ExtremeCUnit.dir/assert_support.c.o 
Run Code Online (Sandbox Code Playgroud)

我需要它,

Linking C shared library libExtremeCUnit.so
/usr/bin/cmake -E cmake_link_script CMakeFiles/ExtremeCUnit.dir/link.txt --verbose=10
/usr/bin/gcc  -fPIC -Wall -Wextra -ggdb3 -fPIC  -ldl   -shared -Wl,-    soname,libExtremeCUnit.so -o libExtremeCUnit.so CMakeFiles/ExtremeCUnit.dir/main.c.o CMakeFiles/ExtremeCUnit.dir/runner.c.o CMakeFiles/ExtremeCUnit.dir/util.c.o CMakeFiles/ExtremeCUnit.dir/findtest_names.c.o CMakeFiles/ExtremeCUnit.dir/assert_support.c.o -ldl
Run Code Online (Sandbox Code Playgroud)

我应该如何以干净/可移植的方式编辑我的CMakeList.txt?

您也可以向我发送拉取请求,以便您可以获得修复它的功劳.

c ubuntu cmake shared-libraries

4
推荐指数
2
解决办法
6861
查看次数

从lambda的内部框架修改via闭包中的变量是否安全,该lambda是从不再存在函数的函数创建的

这适用于g ++ 4.7

#include <iostream>
#include <functional>                                                                           

std::function<int()> make_counter() {
    return []()->std::function<int()> {
        int c=0;
        return [=]() mutable ->int {
            return  c++ ;
        };  
    }();
}   


int main(int argc, char * argv[]) {
    auto count1= make_counter();
    auto count2= make_counter();

    std::cout << "count1=" << count1() << std::endl;
    std::cout << "count1=" << count1() << std::endl;
    std::cout << "count2=" << count2() << std::endl;
    std::cout << "count1=" << count1() << std::endl;
    std::cout << "count2=" << count2() << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

似乎我应该能够这样做,因为在make_function返回后c不再存在,但确实如此

count1=0
count1=1 …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

base64编码io.Reader

有没有办法获取包含二进制数据的io.Reader,并将其读出base64编码.

我在编码/ base64中看到了

func NewDecoder(enc *Encoding, r io.Reader) io.Reader
Run Code Online (Sandbox Code Playgroud)

但是假设io.Reader数据是base64并返回一个io.Reader来将其解码为二进制.

func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
Run Code Online (Sandbox Code Playgroud)

返回一个io.Writer来将二进制编码为base64,但是我需要使用go-aws-sdk s3manage上传器,它需要一个io.Reader接口.

uploader := s3manager.NewUploaderWithClient(svc)
_, err := uploader.Upload(&s3manager.UploadInput{
   Bucket: aws.String(bucket),
  Key:    aws.String(key),
  Body:   input,
})
Run Code Online (Sandbox Code Playgroud)

输入需要实现io.Reader接口

数据很大,所以我不想在进行编码之前将输入完全读入内存

base64 go amazon-web-services

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

查看Netbeans中的执行行

当我按下运行程序按钮(向右绿色箭头)时,如何查看netbean v6.8用于执行Java应用程序的执行行?我正在寻找类似的东西:

java -cp构建/类Main

我正在尝试从用vi编写c和c ++的15年过渡到Java IDE的发展。我从netbean开始,因为它似乎具有最好的vi键绑定。

netbeans

2
推荐指数
1
解决办法
5087
查看次数