- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个类:
#include <memory>
class Object {
std::shared_ptr<void> object_ptr;
public:
Object() {}
template<typename T>
Object(T&& object)
: object_ptr {new T {std::move(object)} } {}
virtual ~Object() {};
};
我的主要cpp文件是:
#include <iostream>
#include "Object.hpp"
class Foo {};
int main() {
Object o {Foo{}};
}
它给我错误:
test/test.cpp:13:20: required from here
include/Object.hpp:24:49: error: could not convert ‘{std::move<Foo&>((* & object))}’ from ‘<brace-enclosed initializer list>’ to ‘Foo’
: object_ptr {new T {std::move(object)} } {}
^
include/Object.hpp:24:49: error: no matching function for call to ‘std::shared_ptr<void>::shared_ptr(<brace-enclosed initializer list>)’
include/Object.hpp:24:49: note: candidates are:
In file included from /usr/include/c++/4.8/memory:82:0,
from include/Object.hpp:7,
from test/test.cpp:2:
/usr/include/c++/4.8/bits/shared_ptr.h:314:2: note: template<class _Alloc, class ... _Args> std::shared_ptr<_Tp>::shared_ptr(std::_Sp_make_shared_tag, const _Alloc&, _Args&& ...)
shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
^
/usr/include/c++/4.8/bits/shared_ptr.h:314:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:265:17: note: constexpr std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t) [with _Tp = void; std::nullptr_t = std::nullptr_t]
constexpr shared_ptr(nullptr_t __p) noexcept
^
/usr/include/c++/4.8/bits/shared_ptr.h:265:17: note: no known conversion for argument 1 from ‘<type error>’ to ‘std::nullptr_t’
/usr/include/c++/4.8/bits/shared_ptr.h:257:2: note: template<class _Tp1, class _Del> std::shared_ptr<_Tp>::shared_ptr(std::unique_ptr<_Up, _Ep>&&)
shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r)
^
/usr/include/c++/4.8/bits/shared_ptr.h:257:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:253:2: note: template<class _Tp1> std::shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Up>&&)
shared_ptr(std::auto_ptr<_Tp1>&& __r);
^
/usr/include/c++/4.8/bits/shared_ptr.h:253:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:248:11: note: template<class _Tp1> std::shared_ptr<_Tp>::shared_ptr(const std::weak_ptr<_Tp1>&)
explicit shared_ptr(const weak_ptr<_Tp1>& __r)
^
/usr/include/c++/4.8/bits/shared_ptr.h:248:11: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:236:2: note: template<class _Tp1, class> std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Tp1>&&)
shared_ptr(shared_ptr<_Tp1>&& __r) noexcept
^
/usr/include/c++/4.8/bits/shared_ptr.h:236:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:226:7: note: std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Tp>&&) [with _Tp = void]
shared_ptr(shared_ptr&& __r) noexcept
^
/usr/include/c++/4.8/bits/shared_ptr.h:226:7: note: no known conversion for argument 1 from ‘<type error>’ to ‘std::shared_ptr<void>&&’
/usr/include/c++/4.8/bits/shared_ptr.h:218:2: note: template<class _Tp1, class> std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Tp1>&)
shared_ptr(const shared_ptr<_Tp1>& __r) noexcept
^
/usr/include/c++/4.8/bits/shared_ptr.h:218:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:206:2: note: template<class _Tp1> std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Tp1>&, _Tp*)
shared_ptr(const shared_ptr<_Tp1>& __r, _Tp* __p) noexcept
^
/usr/include/c++/4.8/bits/shared_ptr.h:206:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:184:2: note: template<class _Deleter, class _Alloc> std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t, _Deleter, _Alloc)
shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
^
/usr/include/c++/4.8/bits/shared_ptr.h:184:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:165:2: note: template<class _Tp1, class _Deleter, class _Alloc> std::shared_ptr<_Tp>::shared_ptr(_Tp1*, _Deleter, _Alloc)
shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a)
^
/usr/include/c++/4.8/bits/shared_ptr.h:165:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:146:2: note: template<class _Deleter> std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t, _Deleter)
shared_ptr(nullptr_t __p, _Deleter __d)
^
/usr/include/c++/4.8/bits/shared_ptr.h:146:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:129:2: note: template<class _Tp1, class _Deleter> std::shared_ptr<_Tp>::shared_ptr(_Tp1*, _Deleter)
shared_ptr(_Tp1* __p, _Deleter __d)
^
/usr/include/c++/4.8/bits/shared_ptr.h:129:2: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:112:11: note: template<class _Tp1> std::shared_ptr<_Tp>::shared_ptr(_Tp1*)
explicit shared_ptr(_Tp1* __p)
^
/usr/include/c++/4.8/bits/shared_ptr.h:112:11: note: template argument deduction/substitution failed:
/usr/include/c++/4.8/bits/shared_ptr.h:103:7: note: std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Tp>&) [with _Tp = void]
shared_ptr(const shared_ptr&) noexcept = default;
^
/usr/include/c++/4.8/bits/shared_ptr.h:103:7: note: no known conversion for argument 1 from ‘<type error>’ to ‘const std::shared_ptr<void>&’
/usr/include/c++/4.8/bits/shared_ptr.h:100:17: note: constexpr std::shared_ptr<_Tp>::shared_ptr() [with _Tp = void]
constexpr shared_ptr() noexcept
^
/usr/include/c++/4.8/bits/shared_ptr.h:100:17: note: candidate expects 0 arguments, 1 provided
make: *** [test.o] Error 1
但是,如果我将 new T {std::move(object)}
更改为 new T (std::move(object))
。它有效:
class Object {
std::shared_ptr<void> object_ptr;
public:
Object() {}
template<typename T>
Object(T&& object)
: object_ptr {new T (std::move(object)) } {}
virtual ~Object() {};
};
为什么花括号统一初始化在这里不起作用?为什么在这种情况下被视为初始化列表? Foo 甚至没有采用初始化列表的构造函数?
最佳答案
这是一个已知问题,也是标准中的一个缺陷(参见 CWG #1467 )。该提案已应用于最新的工作文件(§8.5.4 [dcl.init.list]/3):
List-initialization of an object or reference of type T is defined as follows:
- If
T
is a class type and the initializer list has a single element of typecv U
, whereU
isT
or a class derived fromT
, the object is initialized from that element (by copy-initialization for copy-list-initialization, or by direct-initialization for direct-list-initialization).
关于c++ - Uniform Initialization with curly brace 被误认为是 Initializer List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31036066/
我正在尝试在 R 中重建这个古温度图的基本温度趋势。(Original image 和 data。) x 轴的刻度间隔从百万年的几十到百万到百万,再到万年的几十,等等,但刻度线是均匀分布的。原始图形在
我正在尝试在 R 中重建这个古温度图的基本温度趋势。(Original image 和 data。) x 轴的刻度间隔从百万年的几十到百万到百万,再到万年的几十,等等,但刻度线是均匀分布的。原始图形在
Uniform 是一个用于设置表单样式的 jQuery 插件。我在我的元素中使用它,但有时我需要关闭此插件并稍后再打开。 您可以通过以下方式(其中一种方式)打开插件:$("input, textare
我正在阅读《WebGL 初学者指南》一书,其中涉及到通过 keydown 事件更改光线方向的代码: function processKey(ev){ var lightDirection =
所以,我以前从未使用过 jQuery,但我想要一个名为 Uniform 的脚本,但我似乎无法让它工作。在 Safari 调试器中它给了我 3 个错误: [Error] SyntaxError: Une
random.uniform( ) 函数教程与实例解析 1. uniform( ) 函数说明 random.uniform(x, y)方法将随机生成一个实数,它在 [x,y] 范围内。
我对模块模式的概念还很陌生。我设法实现了 HTML5 游戏的核心功能,但我找不到一种好方法来使某些变量可用于该游戏的每个功能。 这是一个简短的伪示例,应该可以使其更加清晰: var Game = {}
我想用随机制服初始化我的自定义图层。在TensorFlow中,我可以找到以下使用initializer='uniform'的代码。但我想在 (-1.0,1.0) 之间设置随机统一输出范围。如何做到这一
我对 Python 非常陌生(因为这是我编写的第一个脚本),我只是在尝试制作一些可以工作的东西。 我写了以下内容: # Roll the Dice from random import randint
我有一个包含 n 个值(特征)的 m 个向量(样本)的矩阵,其中 m ~ 10^6,n = 20,并且所有特征的值都在 [0,1] 中。 如果我为每个特征计算直方图,它们就会大不相同。我计算了一个简单
我尝试用 GLSL 实现高度图。为此,我需要将我的图片发送到 VertexShader 并获取灰色组件。 glActiveTexture(GL_TEXTURE0); Texture.bind(); g
我正在尝试使用均匀圆形 LBP(1 个单位半径邻域中的 8 个点)实现基本的人脸识别系统。我正在拍摄一张图片,将其大小调整为 200 x 200 像素,然后将图片拆分为 8x8 小图片。然后我计算每个
众所周知,在 GPU 跑可编程管线的时候,着色器是并行运行的,每个着色器入口函数都会在 GPU 中并行执行。每个着色器对一大片统一格式的数据进行冲锋,体现 GPU 多核心的优势,可以小核同时处理数据;
我想在 (a,b)∪(c,d)∪...∪(e,f) 形式的集合中均匀生成一个随机数,其中 a 0,并且 f a, Rc, Re, R
假设我有一个 Bezier curve B(u) ,如果我增加 u参数以恒定速率我没有获得沿曲线的恒定速度运动,因为 u 之间的关系参数和评估曲线所获得的点不是线性的。 我已经阅读并实现了 David
似乎在 HLSL 中我可以但不必为来自应用程序的变量提供 uniform 关键字。对吧? 为什么会这样? 最佳答案 在 HLSL 中,全局变量默认被认为是统一的。 还确定了例如从顶点着色器阶段出来的变
所以,这是我的顶点和片段着色器: #version 120 attribute vec4 a_position; varying vec4 pos; uniform float time; void
我正在使用Uniform在选择控件上。我想隐藏其中一些,所以我这样做了: $('.selector').hide(); $.uniform.update('.selector'); $.uniform
我正在寻找要在我的控制台应用程序中应用的图像填充逻辑,它会生成 TIFF 文件。我的图像容器尺寸为 1200 * 1800 像素。 已应用以下逻辑来调整图像大小以适应此尺寸,但此逻辑应用 FIT 部分
(到目前为止,我在https://gamedev.stackexchange.com/questions/133399/can-i-map-uniform-variables中问了同样的问题,但没有答
我是一名优秀的程序员,十分优秀!