在git的提交消息(COMMIT_EDITMSG)中使用的推荐格式是什么,如果有的话?
我的代码:
#include <iostream>
#include <functional>
using namespace std;
struct A {
A() = default;
A(const A&) {
cout << "copied A" << endl;
}
};
void foo(A a) {}
int main(int argc, const char * argv[]) {
std::function<void(A)> f = &foo;
A a;
f(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在控制台上看到"复制A"两次.为什么对象被复制两次而不是一次?我怎样才能正确预防?
我有以下HTML:
...
<li>...</li>
<li>...</li>
<li class="last">...</li>
<li class="selected">...</li> # <- this
<li>...</li> # <- this
<li class="last">...</li> # <- this
<li>...</li>
<li>...</li>
<li class="last">...</li>
....
Run Code Online (Sandbox Code Playgroud)
所以,基本上是三个lis的组,最后一个具有特定类,并且在其中一个组中,第一个li具有特殊类.
有没有办法用纯CSS来选择li带有selected类和接下来的两个,在上面的代码中标记?
我已经设法选择了下一个使用li.selected + li,但这对那之后的那个不起作用.
我正在使用std::atomics为参考计数器实现一个指针/弱指针机制(像这样).为了将弱指针转换为强指针,我需要原子化
有没有办法使用std::atomic_int?我认为必须使用其中之一compare_exchange,但我无法弄明白.
假设这样的HTML:
<div id="header">
<span class="title">Title</span>
<!-- more spans and other things here -->
</div>
Run Code Online (Sandbox Code Playgroud)
这将与嵌套的CSS一起使用:
#header .title { /* CSS */ }
Run Code Online (Sandbox Code Playgroud)
这当然有效,但我不喜欢class这里的用法.由于我title只需要一次风格,我想使用id.但是这个名称必须是这样的header_title(因为我可能在HTML中有其他标题),从而产生了CSS
#header #header_title { /* CSS */ }
Run Code Online (Sandbox Code Playgroud)
现在这似乎打败了嵌套CSS的目的,然后我可以完全放弃第一个#header.
我无法找到一种"正确"的方法.我错过了什么,或者我只需要在这里使用一些"脏"代码?
使用时boost::exception,了解异常所携带的数据的首选方法是什么?在boost文档中,给出了以下示例:
catch( io_error & e )
{
std::cerr << "I/O Error!\n";
if( std::string const * fn=get_error_info<file_name>(e) )
std::cerr << "File name: " << *fn << "\n";
if( int const * c=get_error_info<errno_code>(e) )
std::cerr << "OS says: " << strerror(*c) << "\n";
}
Run Code Online (Sandbox Code Playgroud)
这似乎有点尴尬,特别是如果异常冒泡了很多层并且理论上可以获得大量元数据.因此,我认为记录每个异常类的可能错误信息是有意义的.然后我可能还需要一些函数的文档,关于异常中可能包含的信息.最后我觉得我在文档中有完全相同的结构,就像我在代码中使用的那样,如果我只使用类似下面的结构:
struct FileException {
string* filename; // NULL or string
}
Run Code Online (Sandbox Code Playgroud)
然后我可以在catch块中更改此信息:
catch (FileException& e) {
e.filename = filename;
throw;
}
Run Code Online (Sandbox Code Playgroud)
这种简单的方法可以解决大部分文档,并从所有安全性中获益(例如,不尝试从中获取文件名MathException).然而人们使用提升.我缺少动态方法的一大优势吗?如何记录代码中的错误信息?
根据这个问题和文档的attr_readonly下面应该是可能的:
class MyModel < ActiveRecord::Base
attr_accessible :foo
attr_readonly :bar
end
m = MyModel.create(foo: '123', bar: 'bar') # Should work
m.update_attributes(bar: 'baz') # Should not work
Run Code Online (Sandbox Code Playgroud)
然而,第一个失败,说我不能大规模分配bar.我在做什么?
我对一些红宝石行为感到困惑.看下面的代码:
[127].pack("C") == "\x7f" # => true
Run Code Online (Sandbox Code Playgroud)
这是有道理的.现在:
[128].pack("C") # => "\x80"
"\x80" # => "\x80"
[128].pack("C") == "\x80" # => false
Run Code Online (Sandbox Code Playgroud)
该组选"C"表示8-bit unsigned (unsigned char),这应该是罚款存储值128.两个字符串也打印相同的东西,为什么它们不相等?这与编码内容有关吗?
我在ruby 2.0.0p247上.
css ×4
html ×4
c++ ×3
c++11 ×2
activerecord ×1
algorithm ×1
atomic ×1
boost ×1
class ×1
conventions ×1
encoding ×1
exception ×1
formatting ×1
git ×1
javascript ×1
mindmapping ×1
ruby ×1
scroll ×1
std-function ×1
string ×1