小编Mar*_*cia的帖子

Scala - 获取绑定变量列表?

有没有办法在scala中获取绑定变量列表?

variables scala

13
推荐指数
2
解决办法
3291
查看次数

如何将ostringstream直接写入cout

如果我有一个std::ostringstream被调用的对象oss,我知道我可以std::cout << oss.str()打印出字符串.但这样做oss.str()会导致返回的字符串被复制.有没有办法直接打印底层streambuf

提前致谢!

c++

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

如何声明一个推导出其返回类型的函数?

考虑一下这个C++ 1y代码(LIVE EXAMPLE):

#include <iostream>

auto foo();

int main() {
    std::cout << foo();   // ERROR!
}

auto foo() {
    return 1234;
}
Run Code Online (Sandbox Code Playgroud)

编译器(GCC 4.8.1)慷慨地发现了这个错误:

main.cpp:在函数'int main()'中:
main.cpp:8:18:错误:在扣除'
auto'std :: cout << foo()之前使用'auto foo()'
                   ^

我如何foo()在这里转发声明?或者更恰当的说,是否有可能向前宣布foo()


我也尝试编译代码,我试图foo().h文件中声明,foo()就像.cpp文件中的上面一样,包含.h在我的main.cpp文件包含int main()和调用foo(),并构建它们.

发生了同样的错误.

c++ auto c++14

13
推荐指数
1
解决办法
2226
查看次数

什么是默认方法以及如何正确使用它们?

可能重复:
C++ 11中默认函数的重点是什么?

C++ 11引入了默认方法(例如void myMethod() = default;).

它对方法有什么作用(方法在default编辑后如何表现).我该如何正确使用它们(它的用途是什么)?

c++ c++11

10
推荐指数
1
解决办法
292
查看次数

可变参数模板中的声明符修饰符位置

声明符.是的,声明者.它们是许多编码约定辩论的来源.对于参数来说这是一个非常好的主题--C++并不排除哪一个比另一个好(它不关心!).所以我们可以写这些而不用担心有人会取笑你:

int x;

int& a = x;
int &b = x;

int* c = &x;
int *d = &x;
Run Code Online (Sandbox Code Playgroud)

在句法上,b并且d比其他人"更有效".我们需要在名称前加上声明符修饰符:

int m, *n;   // m is an int; n is a pointer to int
Run Code Online (Sandbox Code Playgroud)

但潮流似乎转而支持一个.使用C++ 11的可变参数模板,声明符的位置似乎仅限于修饰符更接近基本类型的形式:

template<typename... Ts>
void VariadicFuncRef(const Ts&... args) { }
                             ^
template<typename... Ts>
void VariadicFuncPtr(Ts*... args) { }
                       ^
Run Code Online (Sandbox Code Playgroud)

写这些表单是错误的:

template<typename... Ts>
void VariadicFuncRef(const Ts... &args) { }

template<typename... Ts>
void VariadicFuncPtr(Ts... *args) { }
Run Code Online (Sandbox Code Playgroud)

有关具体示例,请单击此处.

所以,我的问题是: 为什么我们仅限于这种(合法的)形式而不能使用另一种形式?

有什么想法吗?

附加1: …

c++ variadic-templates c++11

10
推荐指数
1
解决办法
148
查看次数

显式移动构造函数

尝试编译以下代码:

struct Foo
{
    explicit Foo ( void ) { }
    explicit Foo ( Foo&& rhs ) { }
};

Foo bar ( void )
{
    return Foo();
}
Run Code Online (Sandbox Code Playgroud)

收到以下错误:

调用隐式删除的'Foo'复制构造函数

好吧,很明显,拷贝代码被隐式删除了.

问题1:为什么编译器需要copy-ctor Foo?我期望使用move-ctor bar从rvalue构造返回值Foo().

然后我将move-ctor重新声明为隐式,并且所有内容都成功编译.

问题2:当我将move-ctor重新声明为隐式时,为什么编译器不再需要copy-ctor?

问题3:什么是explicit关键词意味着副本的背景和移动构建函数,因为它肯定意味着什么从正规构建函数的背景不同.

c++ constructor move-constructor c++11 c++14

10
推荐指数
2
解决办法
1156
查看次数

类方法声明中的decltype:在声明"引用"成员之前使用时出错

请考虑以下代码:

struct test {    
    auto func() -> decltype(data) {}  // ERROR

    int data;
};

int main() {
    test t;
    t.func();
}
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

main.cpp:2:29: error: 'data' was not declared in this scope
     auto func() -> decltype(data) {}
Run Code Online (Sandbox Code Playgroud)

但是,如果我放在data上面func(),它没有错误(实时代码):

struct test {    
    int data;

    auto func() -> decltype(data) {}
};

...
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,为什么decltype不考虑在它之后声明的成员(何时decltype用于方法声明,而不是在定义中)?我还想知道在将来的语言标准迭代中这种行为是否有任何变化.


请注意,我问这个是因为我希望decltype表现得与众不同.我的编码约定是将类数据成员放在类函数下面.当然,这种不同的行为会影响我组织班级成员的方式.如果您能提供可以保留我的编码约定的任何解决方法,我将非常感激.

c++ decltype c++11

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

PHP请求具有多个查询字符串

我总是可以测试这个,但我想要一位PHP专家的正式答案(我肯定不会这样).

如果有人提出这样的请求:

http://www.somedomain.com/a.php?param1=value1&param2=value2&param3=value3?param1=value4&param2=value5&param3=value6
Run Code Online (Sandbox Code Playgroud)

_GET['param2']例如,当我尝试访问时会出现什么样的后果?看起来我只是得到第一个值.在这种情况下,它会返回value2.这是预期的行为吗?

第二个问号会影响什么吗?例如,会有错误吗?

php url

7
推荐指数
1
解决办法
6039
查看次数

如何正确编写尾随返回类型?

假设我有这个功能模板:

template<typename T1, typename T2>
auto DoSomething(const T1& arg);
Run Code Online (Sandbox Code Playgroud)

当然这个函数需要一个尾随返回类型,考虑到函数的目的,我真的不能正确.

这个函数应该做的是使用和对象arg做一些操作,并使用该操作的结果作为函数的返回值.显然,返回类型必须(兼容)与为对象和对象完成的操作的返回类型匹配.argT2DoSomething()argT2

再次假设我们DoSomething()做了一些真正的操作,比如乘法.然后我们会DoSomething()像下面的代码一样编写:

template<typename T1, typename T2>
auto DoSomething(const T1& arg) -> /* trailing return-type */ {
    T2 t2Obj;   // Or have it obtained in some other way
    return arg * t2Obj;
}
Run Code Online (Sandbox Code Playgroud)

那么我应该如何为此形成尾随返回类型?


PS:我已尝试使用decltype(arg * T2),decltype(T1 * T2)以及decltype(T1::operator * (T2))其他一些看起来很奇怪decltype的尾随返回类型.他们都没有工作.

c++ c++11 trailing-return-type

7
推荐指数
1
解决办法
355
查看次数

Qt Creator自定义拆分视图设置,用于编辑和调试

是否可以在Qt Creator中为编辑和调试模式设置不同的分割设置?

我是:

  • 使用两个显示器
  • 垂直拆分编辑器
  • 将分割对齐到监视器之间的边缘

现在当我切换到调试模式时:

  • 变量列被挤入
  • 我的编辑器分割边缘被推离显示器边缘

我可以告诉Qt Creator记住每次分裂吗?

(我在"选项"或"窗口"菜单中找不到此设置)

ide qt-creator

7
推荐指数
1
解决办法
2376
查看次数