相关疑难解决方法(0)

C++ 11"自动"语义

当我使用C++ 11时auto,关于它是否会解析为值或引用的类型推导规则是什么?

例如,有时很明显:

auto i = v.begin(); // Copy, begin() returns an iterator by value
Run Code Online (Sandbox Code Playgroud)

这些不太清楚:

const std::shared_ptr<Foo>& get_foo();
auto p = get_foo(); // Copy or reference?

static std::shared_ptr<Foo> s_foo;
auto sp = s_foo; // Copy or reference?

std::vector<std::shared_ptr<Foo>> c;
for (auto foo: c) { // Copy for every loop iteration?
Run Code Online (Sandbox Code Playgroud)

c++ c++11

70
推荐指数
3
解决办法
3万
查看次数

使用auto作为模板参数

我正在尝试使用GCC 4.7.1编译以下-std=c++11标志:

std::map<std::string, auto> myMap;
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个对象来包含大量各种类型的Json数据(int string,bool)以及子结构(list,map),所以我无法在编译时声明字段值的类型时间,所以我以为我会使用auto关键字.

但是,当我尝试编译它时,我得到以下内容

error: invalid use of ‘auto’
error: template argument 2 is invalid
error: template argument 4 is invalid
error: unable to deduce ‘auto’ from ‘<expression error>’
Run Code Online (Sandbox Code Playgroud)

有没有一种特殊的方法可以auto用作模板参数,还是只是不可能?

c++ templates auto c++11

0
推荐指数
1
解决办法
1523
查看次数

标签 统计

c++ ×2

c++11 ×2

auto ×1

templates ×1