假设我有一个掩码mask和一个输入n,例如
mask = 0x10f3 (0001 0000 1111 0011)
n = 0xda4d (1101 1010 0100 1101)
Run Code Online (Sandbox Code Playgroud)
我想1)隔离掩码位(n从不在中删除位mask)
masked_n = 0x10f3 & 0xda4d = 0x1041 (0001 0000 0100 0001)
Run Code Online (Sandbox Code Playgroud)
和2) "扁平化"他们(摆脱零位mask,并将这些同样转移到masked_n)?
flattened_mask = 0x007f (0000 0000 0111 1111)
bits to discard (___1 ____ 0100 __01)
first shift ( __ _1__ __01 0001)
second shift ( __ _101 0001)
result = 0x0051 (0000 0000 0101 0001)
Run Code Online (Sandbox Code Playgroud)
我试图用three.js复制Google的Cardboard Demo"Exhibit"的功能.我直接从Chrome实验网页上获取了起始示例,只是在代码中删除了在方法中绘制一个简单的三角形金字塔init:
function init() {
renderer = new THREE.WebGLRenderer();
element = renderer.domElement;
container = document.getElementById('example');
container.appendChild(element);
effect = new THREE.StereoEffect(renderer);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(90, 1, 0.001, 700);
camera.position.set(0, 0, 50);
scene.add(camera);
controls = new THREE.OrbitControls(camera, element);
controls.rotateUp(Math.PI / 4);
controls.noZoom = true;
controls.noPan = true;
var geometry = new THREE.CylinderGeometry( 0, 10, 30, 4, 1 );
var material = new THREE.MeshPhongMaterial( { color:0xffffff, shading: THREE.FlatShading } );
var mesh = new THREE.Mesh( …Run Code Online (Sandbox Code Playgroud) 我正在编写一个用于日志记录的辅助函数:它收集调用站点信息,同时还创建一个Error类型对象。
template<typename ErrorTy, typename... ArgTys>
std::unique_ptr<Error> makeError(const char* fileName = __builtin_FILE(),
int lineNum = __builtin_LINE(),
const char* funcName = __builtin_FUNCTION(), ArgTys &&... args) {
return std::make_unique<ContextualError<ErrorTy>>(fileName, lineNum, funcName,
std::forward<ArgTys>(args)...);
}
// ...
template<typename ErrorTy>
struct ContextualError : ErrorTy {
template<typename... ArgTys>
ContextualError(std::string_view fileName, int lineNum,
std::string_view funcName, ArgTys &&... args) :
fileName_(fileName), lineNum_(lineNum), funcName_(funcName),
ErrorTy(std::forward<ArgTys>(args)...) {}
// ...
};
Run Code Online (Sandbox Code Playgroud)
由于实际的Error类可以有任意的构造函数,我希望得到makeError和ContextualError构造函数完美地转发所有内容。不幸的是,makeError像这样调用将尝试填充前三个可选参数,而不是跳过它们并填充参数包:
auto err = makeError<FileError>("foo.exe", "Invalid header");
// error: no matching …Run Code Online (Sandbox Code Playgroud)