【发布时间】:2016-09-13 22:20:42
【问题描述】:
我有一个类型A,它被设计为隐式转换为类型B。这是我想在其中使用它的示例:
// Current implementation:
std::transform(vec_of_a.begin(), vec_of_a.end(), std::back_inserter(vec_of_b),
[](const A& a) -> B { return a; }); // Thanks, Kerrek SB.
// Ideal implementation - Won't compile, expected '(' after 'static_cast'.
std::transform(vec_of_a.begin(), vec_of_a.end(), std::back_inserter(vec_of_b),
static_cast<B>);
如何使后一个选项编译?
【问题讨论】:
-
怎么样:
std::vector<B> vec_of_b(vec_of_a.begin(), vec_of_a.end());? -
@KerrekSB 这是一个很好的观点,它解决了我的特殊问题。但我仍然想知道将 static_cast 作为函数传递的最干净的方法。
-
[](const A & x) -> B { return x; } -
@KerrekSB 那么,没有办法通过
static_cast<B>?如果你把它作为答案,我会接受。 -
无法将
static_cast<B>视为函数,即使它使用函数语法。
标签: c++11 functor static-cast