小编h2s*_*so5的帖子

使用rvalue初始化左值引用

我用gcc/clang构建了这段代码并得到了不同的结果:

#include <iostream>
#include <sstream>

int main() {
    std::istream& is = 1 ? std::move(std::stringstream("")) : std::cin;
}
Run Code Online (Sandbox Code Playgroud)
  • 为什么gcc允许使用rvalue(std::stringstream(""))初始化左值引用?
  • 为什么clang试图调用复制构造函数?

gcc 4.9.1

没错

铿锵3.4

prog.cc:5:63: error: call to implicitly-deleted copy constructor of 'istream' (aka 'basic_istream<char>')
    std::istream& is = 1 ? std::move(std::stringstream("")) : std::cin;
                                                             ^~~~~~~~
/usr/local/libcxx-3.4/include/c++/v1/istream:185:5: note: copy constructor is implicitly deleted because 'basic_istream<char, std::__1::char_traits<char> >' has a user-declared move constructor
   basic_istream(basic_istream&& __rhs);
   ^
prog.cc:5:28: error: calling a protected constructor of class 'std::__1::basic_istream<char, std::__1::char_traits<char> >'
   std::istream& is = 1 ? …
Run Code Online (Sandbox Code Playgroud)

c++ gcc clang c++11

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

如何在V8中获取脚本的原始文件名

我想在全局函数中获取脚本的原始文件名。

我尝试了以下代码,但 filename.IsEmpty() 返回 true。

using namespace v8;

HandleScope handle_scope;

// Define Global Function 'func'
Handle<ObjectTemplate> global = ObjectTemplate::New();

auto func_name = v8::String::New("func");
auto func = v8::FunctionTemplate::New(
        [](const v8::Arguments& args) -> v8::Handle<v8::Value>{

            // I want to get Filename here.
            auto filename = args.Callee()->GetScriptOrigin().ResourceName();
            std::cout << filename.IsEmpty() << std::endl;

            return v8::Undefined();
        });

global->Set(func_name, func);

auto context = Context::New(nullptr, global);
Context::Scope context_scope(context);

auto source = String::New("func()");

// Set Filename
auto filename = String::New("abc.js");
auto script = v8::Script::Compile(source, filename);
script->Run();

context.Dispose();
Run Code Online (Sandbox Code Playgroud)

有没有正确的方法来访问脚本的原始文件名?

javascript c++ v8 c++11

4
推荐指数
1
解决办法
1436
查看次数

标签 统计

c++ ×2

c++11 ×2

clang ×1

gcc ×1

javascript ×1

v8 ×1