小编rua*_*akh的帖子

为什么可以在函数内的常量表达式中使用作为 constexpr 函数参数的参数传递的 lambda 的返回值?

问题标题的措辞可能不正确,我会很乐意根据您的建议进行修复。

我的问题可以用这个片段来说明:

#include <array>

template <typename Callable>
constexpr auto make_array_ok(Callable callable) {
    return std::array<int, callable()>{};
};
// constexpr auto make_array_bad(std::size_t s)
// {
//     return std::array<int,s>{};
// };

int main(int argc, char**) {
    static_cast<void>(argc);

    auto size = []() { return std::size_t{42}; };

    // fails to compile -- as I expected
    // auto size_dyn = [argc]() { return std::size_t(argc); };
    // auto a = make_array_ok(size_dyn);

    // also fails to compile -- but why?
    // auto size_capt = [arg = size()]()constexpr{return arg;}; …
Run Code Online (Sandbox Code Playgroud)

c++ constant-expression callable-object constexpr-function

9
推荐指数
2
解决办法
678
查看次数

这个CSS语句中的"@"是什么意思?

@-webkit-keyframes roll {
    100% { -webkit-transform: rotate(360deg); }
}
Run Code Online (Sandbox Code Playgroud)

"@"和"100%"是什么意思?

css webkit css3

8
推荐指数
1
解决办法
391
查看次数

使用<cmath>和android ndk时构建问题

我有一个stlTest2.cpp像这样的简单文件:

#include <jni.h>

#include <cmath>


bool isnan (void);
Run Code Online (Sandbox Code Playgroud)

在我移植的一些代码中有一些更复杂的东西.我的问题是这个.为什么在NDK之外使用GCC构建时会有效,而不是使用NDK?它给出的错误是这样的:

jni/stlTest2.cpp:6: error: expected unqualified-id before 'sizeof'
jni/stlTest2.cpp:6: error: expected ')' before 'sizeof'
Run Code Online (Sandbox Code Playgroud)

其直接原因是math.h(包括via <cmath>)定义isnan为宏.为什么ndk之外的构建不包括#definefrom math.h,但这是?如果我在代码中注释掉包含,那么一切都很好,但这是不可接受的,因为这个问题重复了......很多.

c++ android cmath android-ndk

8
推荐指数
1
解决办法
3859
查看次数

PL/SQL循环通过游标

我的问题不是太复杂,但我是PL/SQL的新手.

我需要根据某些条件从COMPANIES表中进行选择.然后我需要遍历这些并将一些字段转换为不同的格式(我为此创建了函数),最后使用此转换后的版本连接到引用表以获取我需要的分数变量.所以基本上:

select id, total_empts, bank from COMPANIES where turnover > 100000 
Run Code Online (Sandbox Code Playgroud)

循环选择此选项

insert into MY_TABLE (select score from REF where conversion_func(MY_CURSOR.total_emps) =  REF.total_emps)
Run Code Online (Sandbox Code Playgroud)

这基本上就是我要做的.它稍微复杂一点,但我只是在寻找基础知识,以及如何处理它让我入门!

sql plsql loops cursor

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

如何使用wcout显示L"أبجديةعربية中文"?

我想用wcout显示混有中文的阿拉伯语消息.

以下代码没问题:

#include <iostream>

using namespace std;

int main()
{
    wcout.imbue(locale("chs"));
    wcout << L"??"; // OK
}
Run Code Online (Sandbox Code Playgroud)

但是,以下代码不起作用:

#include <iostream>

using namespace std;

int main()
{
    wcout.imbue(locale(/* What to place here ??? */));
    wcout << L"???????????? ?????????????"; // Output nothing. VC++ 2012 on Win7 x64
    // Why does the main advantage of unicode not apply here?
}
Run Code Online (Sandbox Code Playgroud)

我认为在采用unicode之后应该弃用代码页的概念.

Q1.wout显示这样一个文本的机制是什么?

Q2.为什么Windows作为基于unicode的操作系统不支持在其控制台窗口中输出unicode字符?

c++ unicode io widestring windows-7

8
推荐指数
1
解决办法
2499
查看次数

Java 8流懒惰在练习中是否无用?

我最近已经阅读了很多关于Java 8流的文章,并且有几篇关于Java 8流加载延迟的文章:这里这里.我似乎无法摆脱延迟加载完全没用的感觉(或者充其量只是一个简单的语法便利性,提供零性能值).

我们以此代码为例:

int[] myInts = new int[]{1,2,3,5,8,13,21};

IntStream myIntStream = IntStream.of(myInts);

int[] myChangedArray = myIntStream
                        .peek(n -> System.out.println("About to square: " + n))
                        .map(n -> (int)Math.pow(n, 2))
                        .peek(n -> System.out.println("Done squaring, result: " + n))
                        .toArray();
Run Code Online (Sandbox Code Playgroud)

这将登录控制台,因为terminal operation在这种情况下toArray()会调用,而且我们的流是惰性的,只有在调用终端操作时才会执行.当然我也可以这样做:

  IntStream myChangedInts = myIntStream
    .peek(n -> System.out.println("About to square: " + n))
    .map(n -> (int)Math.pow(n, 2))
    .peek(n -> System.out.println("Done squaring, result: " + n));
Run Code Online (Sandbox Code Playgroud)

什么都不打印,因为地图没有发生,因为我不需要数据.直到我称之为:

  int[] myChangedArray = myChangedInts.toArray();
Run Code Online (Sandbox Code Playgroud)

瞧,我得到了我的映射数据,以及我的控制台日志.除了我看到它没有任何好处.我意识到我可以在调用之前很久就定义过滤器代码 …

java lazy-loading java-stream

8
推荐指数
4
解决办法
1682
查看次数

/ dev/stdin与herestring

我想要一个可以从文件或标准输入获取输入的Bash脚本,grep例如,非常类似

$ cat hw.txt
Hello world

$ grep wor hw.txt
Hello world

$ echo 'Hello world' | grep wor
Hello world

$ grep wor <<< 'Hello world'
Hello world
Run Code Online (Sandbox Code Playgroud)

一切都很美妙.但是使用以下脚本

read b < "${1-/dev/stdin}"
echo $b
Run Code Online (Sandbox Code Playgroud)

如果使用herestring它会失败

$ hw.sh hw.txt
Hello world

$ echo 'Hello world' | hw.sh
Hello world

$ hw.sh <<< 'Hello world'
/opt/a/hw.sh: line 1: /dev/stdin: No such file or directory
Run Code Online (Sandbox Code Playgroud)

bash stdin cygwin heredoc

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


为什么在运行时更改LD_LIBRARY_PATH dosen一旦Executable被加载就反映在Executable上

我正试图改变LD_LIBRARY_PATH我的C++程序.我能够使用它来获取它的值getenv("LD_LIBRARY_PATH")并使用它设置它的值setenv()(我知道这是有效的,因为当我getenv("LD_LIBRARY_PATH")再次调用时,我得到更新的值),但是从程序内部改变它的值没有任何影响对它:我仍然收到此错误消息:

Failed to Load the shared library file

如果我在加载可执行文件或启动应用程序之前设置了值,它就可以正常工作.

c++ linux setenv getenv

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

assertEquals问题(对象对象)(很长)

Interval<Integer> interval1 = Intervals.open(3, 6);
Run Code Online (Sandbox Code Playgroud)

3是下限,6是上限.

assertEquals(interval1.lowerBound(), 3);
Run Code Online (Sandbox Code Playgroud)

写完测试后,有一个红色下划线说:

ambiguous method call.Both assertEquals(object, object) assertEquals(long, long)
Run Code Online (Sandbox Code Playgroud)

java junit

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