本文整理汇总了C++中B::f方法的典型用法代码示例。如果您正苦于以下问题:C++ B::f方法的具体用法?C++ B::f怎么用?C++ B::f使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类B
的用法示例。
在下文中一共展示了B::f方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: h
void h()
{
using B::f;
using C::f;
f('h');
f(1); // { dg-error "ambiguous" }
// { dg-message "candidate" "candidate note" { target *-*-* } 22 }
void f(int); // { dg-error "previous using declaration" }
}
示例2: g
void g()
{
const B b;
int *pi;
pi = b.f(0);
}
示例3: main
int main() {
CHECK(fcc::invoke(f) == 13);
CHECK(noexcept(fcc::invoke(f) == 13));
CHECK(fcc::invoke(g, 2) == 5);
CHECK(fcc::invoke(h, 42) == 42);
CHECK(noexcept(fcc::invoke(h, 42) == 42));
{
int i = 13;
CHECK(&fcc::invoke(h, i) == &i);
CHECK(noexcept(&fcc::invoke(h, i) == &i));
}
CHECK(fcc::invoke(&A::f, A{}) == 42);
CHECK(noexcept(fcc::invoke(&A::f, A{}) == 42));
CHECK(fcc::invoke(&A::g, A{}, 2) == 4);
{
A a;
const auto& ca = a;
CHECK(fcc::invoke(&A::f, a) == 42);
CHECK(noexcept(fcc::invoke(&A::f, a) == 42));
CHECK(fcc::invoke(&A::f, ca) == 42);
CHECK(noexcept(fcc::invoke(&A::f, ca) == 42));
CHECK(fcc::invoke(&A::g, a, 2) == 4);
}
{
A a;
const auto& ca = a;
CHECK(fcc::invoke(&A::f, &a) == 42);
CHECK(noexcept(fcc::invoke(&A::f, &a) == 42));
CHECK(fcc::invoke(&A::f, &ca) == 42);
CHECK(noexcept(fcc::invoke(&A::f, &ca) == 42));
CHECK(fcc::invoke(&A::g, &a, 2) == 4);
}
{
auto up = std::make_unique<A>();
CHECK(fcc::invoke(&A::f, up) == 42);
CHECK(fcc::invoke(&A::g, up, 2) == 4);
}
{
auto sp = std::make_shared<A>();
CHECK(fcc::invoke(&A::f, sp) == 42);
CHECK(noexcept(fcc::invoke(&A::f, sp) == 42));
CHECK(fcc::invoke(&A::g, sp, 2) == 4);
}
CHECK(fcc::invoke(&A::i, A{}) == 13);
CHECK(noexcept(fcc::invoke(&A::i, A{}) == 13));
{ int&& tmp = fcc::invoke(&A::i, A{}); (void)tmp; }
{
A a;
const auto& ca = a;
CHECK(fcc::invoke(&A::i, a) == 13);
CHECK(noexcept(fcc::invoke(&A::i, a) == 13));
CHECK(fcc::invoke(&A::i, ca) == 13);
CHECK(noexcept(fcc::invoke(&A::i, ca) == 13));
CHECK(fcc::invoke(&A::i, &a) == 13);
CHECK(noexcept(fcc::invoke(&A::i, &a) == 13));
CHECK(fcc::invoke(&A::i, &ca) == 13);
CHECK(noexcept(fcc::invoke(&A::i, &ca) == 13));
fcc::invoke(&A::i, a) = 0;
CHECK(a.i == 0);
fcc::invoke(&A::i, &a) = 1;
CHECK(a.i == 1);
static_assert(std::is_same<decltype(fcc::invoke(&A::i, ca)), const int&>{});
static_assert(std::is_same<decltype(fcc::invoke(&A::i, &ca)), const int&>{});
}
{
auto up = std::make_unique<A>();
CHECK(fcc::invoke(&A::i, up) == 13);
fcc::invoke(&A::i, up) = 0;
CHECK(up->i == 0);
}
{
auto sp = std::make_shared<A>();
CHECK(fcc::invoke(&A::i, sp) == 13);
fcc::invoke(&A::i, sp) = 0;
CHECK(sp->i == 0);
}
{
struct B { int i = 42; constexpr int f() const { return i; } };
constexpr B b;
static_assert(b.i == 42);
static_assert(b.f() == 42);
static_assert(fcc::invoke(&B::i, b) == 42);
static_assert(fcc::invoke(&B::i, &b) == 42);
static_assert(fcc::invoke(&B::i, B{}) == 42);
static_assert(fcc::invoke(&B::f, b) == 42);
static_assert(fcc::invoke(&B::f, &b) == 42);
static_assert(fcc::invoke(&B::f, B{}) == 42);
}
return ::test_result();
}
示例4: f
void D::f(int) { f('c'); } // calls B::f(char)