2
如何通過find_if函數使用訪問者?我猜我需要做一些類魔法綁定的,所以這是行不通的:boost :: variant和std :: find_if
typedef boost::variant<FileNode,DirectoryNode> Node;
typedef std::vector<Node> Nodes;
const Nodes& nodes;
IsFileNodeVisitor isFileNodeVisitor;
find_if (nodes.begin(), nodes.end(), isFileNodeVisitor);
class IsFileNodeVisitor: public boost::static_visitor<bool>
{
public:
bool operator()(const FileNode&) const {
return true;
}
bool operator()(const DirectoryNode&) const {
return false;
}
};
上面的代碼的想法是給我一個迭代的第一filenode的實例中的節點的載體。
如果你打電話'apply_visitor',它將與正確的類型執行代碼,也沒有重複與您試圖上方。一個可變參數類型只包含一個實例(其中一種類型)。 – Nim
可能你應該指出你正在嘗試的是什麼,在這種情況下'find_if'沒有用(如果它不是我的第一條評論。 ) – Nim
@按要求添加。 – Baz