前几天进行一些模板元编程时遇到了奇怪的事情。基本上可以归结为这个断言没有(正如我期望的那样)通过。
static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>);
Run Code Online (Sandbox Code Playgroud)
起初我以为我在定义函数引用时犯了语法错误,但是这个断言通过了,表明事实并非如此。
static_assert(std::is_same_v<void()&, void()&>);
Run Code Online (Sandbox Code Playgroud)
我还尝试实现remove_reference自己从cppreference复制源,但这也不起作用。这里发生了什么?
这段代码
int(&foo)(int, int) = [](int a, int b) { return a + b; };
Run Code Online (Sandbox Code Playgroud)
不会编译,因为显然不能使用临时初始化非常量引用。我在哪里放const?
我刚刚遇到这种技术,每个线程运行一次代码.我不知道它是如何在最低级别工作的.特别是,fs指向什么?什么.zero 8意思?标识符是否有原因@tpoff?
int foo();
void bar()
{
thread_local static auto _ = foo();
}
Run Code Online (Sandbox Code Playgroud)
输出(带-O2):
bar():
cmp BYTE PTR fs:guard variable for bar()::_@tpoff, 0
je .L8
ret
.L8:
sub rsp, 8
call foo()
mov BYTE PTR fs:guard variable for bar()::_@tpoff, 1
add rsp, 8
ret
guard variable for bar()::_:
.zero 8
Run Code Online (Sandbox Code Playgroud) 所以iOS 11 Safari应该添加对Web Audio API的支持,但它似乎仍然不适用于这个javascript代码:
//called on page load
get_user_media = get_user_media || navigator.webkitGetUserMedia;
get_user_media = get_user_media || navigator.mozGetUserMedia;
get_user_media.call(navigator, { "audio": true }, use_stream, function () { });
function use_stream(stream){
var audio_context = new AudioContext();
var microphone = audio_context.createMediaStreamSource(stream);
window.source = microphone; // Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=934512
var script_processor = audio_context.createScriptProcessor(1024, 1, 1);
script_processor.connect(audio_context.destination);
microphone.connect(script_processor);
//do more stuff which involves processing the data from user's microphone...
}
Run Code Online (Sandbox Code Playgroud)
我复制粘贴了大部分代码,所以我只是粗略地了解它.我知道它应该(并且在其他浏览器上)捕获用户的麦克风以进行进一步处理.我知道代码var audio_context = new AudioContext();在行上断开(如在运行之后没有代码),但没有任何错误消息因为我没有调试iOS Safari所需的mac(苹果已经死> _ <)任何人都知道发生了什么和/或如何解决它?
e:忘了提一下我查了一下,显然我在Safari中使用Web Audio API之前需要关键字"webkit",但是它 …
//file1.cpp
extern const char* foo;
std::string bar = foo;
//file2.cpp
const char* foo = "foo";
Run Code Online (Sandbox Code Playgroud)
标准保证将bar初始化为"foo"吗?还是可以foo在构造函数中进行设置和段错误之前对其进行初始化,例如SIOF?
刚在接受采访时被问到这个问题:这个功能能不能归还'对象'吗?
function foo() { return typeof this; }
Run Code Online (Sandbox Code Playgroud)
我说的我不确定但猜到了
foo.bind(undefined)()
Run Code Online (Sandbox Code Playgroud)
可能会回来'undefined'.但是在我的控制台中在家测试它是行不通的.