- Aşağıdaki kodda
a) tanımsız davranış söz konusudur.
b) Kodda bir sorun yoktur. Çıkış akımına şunu yazar:
#include <iostream>
void g(int &&r) {
r += 3;
std::cout << r;
}
void g(int &r) {
std::cout << r++;
}
template <typename T>
void f(T &&x) {
x *= 5;
g(x);
g(std::forward<T>(x));
}
int main() {
f(1);
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
struct A {
A() { std::cout << "1"; }
};
struct B {
B() { std::cout << "2"; }
B(A) { std::cout << "3"; }
void b() { std::cout << "4"; }
};
A a() {
std::cout << "5";
return A{};
}
B b(A (*)()) {
std::cout << "6";
return B{};
}
int main() {
B b(A());
b(a).b();
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
auto& g() { return std::cout << 1; }
auto f() {
std::cout << 2;
return g;
}
int main() {
std::cout << (f()() << 3 ? 4 : 5);
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
int a[]{1, 4, 7, 2};
int* x{a};
decltype(++x) y(x);
decltype(++y) z(y);
std::cout << *x + *y + *z;
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
int a[2];
decltype(a) b[2];
decltype(b) c[3]{0, 1, 2, 3, 4};
std::cout << c[0][1][2] << "\n";
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <algorithm>
#include <iostream>
int main() {
auto x{1}, y{2};
auto a{&x}, b{&y}, c{a++};
std::copy(c, a, b);
std::cout << x << y;
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
template <auto n>
struct A : A<n + 1> {
A() { std::cout << n; }
~A() { std::cout << n; }
};
template <>
struct A<5> {};
template <>
struct A<0> {};
int main() {
A<1> x;
}
Cevap
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
auto x = 2;
auto y = x > 0 ? 5 : 1.4;
std::cout << y / x;
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <type_traits>
int main() {
auto c = 'c';
std::cout << std::is_same_v<decltype(c), decltype(+c)>;
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <type_traits>
int main() {
auto a{[] {}};
auto b{[] {}};
auto c(+a);
auto d(+b);
std::cout << std::is_same_v<decltype(a), decltype(b)>;
std::cout << std::is_same_v<decltype(a), decltype(c)>;
std::cout << std::is_same_v<decltype(c), decltype(d)>;
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
struct A {
static int x;
static int foo() { return 1; }
};
int foo() { return 2; }
int A::x = foo();
int main() {
std::cout << A::x;
A::x = foo();
std::cout << A::x;
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
void f(long double) { std::cout << 1; }
void f(char) { std::cout << 2; }
int main() {
f(2.5);
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
std::cout << "hello";
std::cout.operator<<("world");
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
int typedef* ip;
auto i{0};
ip const p{&i};
++*p;
std::cout << i;
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
template <typename T, size_t n>
using ptr = T (*)[n];
int main() {
int a[3][2]{0, 1, 3, 5, 7, 9};
ptr<int, 2> b{a};
++b;
++**b;
for (const auto& x : a)
for (auto y : x)
std::cout << y;
}
Cevap
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
struct A {
A() { std::cout << "A"; }
~A() { std::cout << "a"; }
};
struct B {
B() { std::cout << "B"; }
~B() { std::cout << "b"; }
B(A) { std::cout << "C"; }
};
A a;
int main() {
B(a);
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <vector>
struct A {
A() { std::cout << "1"; }
~A() { std::cout << "2"; }
A(int) { std::cout << "3"; }
A(const A&) { std::cout << "4"; }
A(A&&) { std::cout << "5"; }
};
int main() {
std::vector<A> v;
v.emplace_back(1);
v.push_back(v[0]);
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
template <typename T>
void f(T) { std::cout << "1"; }
template <>
void f(int*) { std::cout << "2"; }
void f(int&) { std::cout << "3"; }
void f(int&&) { std::cout << "4"; }
int main() {
int x{};
int* p{&x};
f(&x);
f(p);
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
template <int x, int y, int z>
using N = char[x][y][z];
template <int e = 2, int c = 3, int o = 4>
constexpr int n = sizeof(N<e, c, o>);
int main() {
std::cout << n<> + n<1> + n<1, 2> + n<1, 2, 3>;
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
struct A {
operator void*() {
return static_cast<A*>(this);
}
};
int main() {
A a, b;
std::cout << (a == a) << (a == b) << (a == &a) << (a == &b);
}
- Aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
struct A {
A() { std::cout << 'A'; }
~A() { std::cout << 'D'; }
A(const A&) { std::cout << 'C'; }
A(A&&) { std::cout << 'M'; }
};
void f(A) {}
A g() { return A{}; }
int main() {
f(g());
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
void foo(int x) {
try {
throw std::runtime_error{"R.T.E"};
} catch (const std::exception& ex) {
if (x)
throw ex;
else
throw;
}
}
void func(int x) {
try {
foo(x);
} catch (const std::runtime_error&) {
std::cout << 1;
} catch (const std::exception&) {
std::cout << 2;
}
}
int main() {
int a{1};
func(a--);
func(a);
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
struct A {
explicit A(double) {
std::cout << "D";
}
A(long long) {
std::cout << "L";
}
};
A func(A) {
return 128e9;
}
int main() {
auto x = func(128e9);
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Sentaks hatası yok.
class A {
private:
struct N {};
public:
static N foo();
};
int main() {
auto x = A::foo();
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int x;
int main() {
int x{x};
std::cout << x;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
class base {
public:
virtual void override() {
std::cout << 1;
}
};
class final final : public base {
public:
virtual void override() final override {
std::cout << 2;
}
};
void f(base* p) {
p->base::override();
}
int main() {
final final;
f(&final);
}
Cevap
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
class Base {
public:
virtual void f(int a = 1) {
std::cout << "B" << a;
}
};
class Der : public Base {
private:
void f(int a = 2) override {
std::cout << "D" << a;
}
};
void g(Base* baseptr) {
baseptr->f();
}
int main() {
auto p{new Der};
g(p);
delete p;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
template <typename T>
size_t f1(T x[]) { return sizeof x; }
template <typename T>
size_t f2(T &x) { return sizeof(x); }
template <typename T>
size_t f3(T *x) { return sizeof(*x); }
template <typename T>
size_t f4(T x) { return sizeof(x); }
template <typename T, size_t n>
size_t f5(T (&x)[n]) { return sizeof x; }
int main() {
int a[20]{};
std::cout << (sizeof(a) == f1(a));
std::cout << (sizeof(a) == f2(a));
std::cout << (sizeof(a) == f3(a));
std::cout << (sizeof(a) == f4(a));
std::cout << (sizeof(a) == f5(a));
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <array>
#include <iostream>
struct Nec {
Nec() { std::cout << 1; }
~Nec() { std::cout << 2; }
Nec(const Nec &) { std::cout << 3; }
void f() {
std::cout << "4";
}
};
int main() {
std::array<Nec, 2> ar;
for (auto n : ar)
n.f();
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
struct Base {
virtual int foo() = 0;
};
struct Der : Base {
int foo() override { return 2; }
};
int Base::foo() { return 1; }
int main() {
Der der;
std::cout << der.foo();
std::cout << ((Base&)der).foo();
std::cout << ((Base*)&der)->foo();
std::cout << der.Base::foo();
}
Cevap
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <vector>
int main() {
std::vector vx(0, 0);
std::vector vy{0, 0};
std::cout << (vy > vx);
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
int x = 0, y = 1, z = 2;
std::cout << (++x || --y && --z);
std::cout << x << y << z;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
struct Nec {
Nec() { std::cout << "c"; }
~Nec() { std::cout << "d"; }
};
int i{2};
int main() {
switch (i) {
while (i) {
case 2:
Nec x;
--i;
}
}
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int g{1};
void f() { std::cout << 2; }
template <typename T>
struct Base {
int g = 3;
void f() const { std::cout << 4; }
};
template <typename T>
struct Der : Base<T> {
void foo() const {
std::cout << g;
f();
}
};
int main() {
Der<int> myder;
myder.foo();
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <sstream>
int main() {
std::ostringstream ss{"1"};
ss << "2";
std::cout << ss.str();
ss << "3";
ss << ss.str();
std::cout << ss.str();
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
typedef long LONG;
void func(unsigned LONG) {
std::cout << (typeid(LONG) == typeid(unsigned long));
std::cout << (typeid(LONG) == typeid(long));
std::cout << (typeid(LONG) == typeid(unsigned int));
}
int main() {
func(12uL);
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <map>
int main() {
std::map<bool, bool> bmap;
std::cout << bmap[true];
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
template <typename T>
struct Nec {
inline static int x{};
};
int main() {
++Nec<int>::x;
++Nec<const int>::x;
++Nec<volatile int>::x;
++Nec<const volatile int>::x;
std::cout << Nec<int>::x;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
unsigned long lval{};
const long& x = lval;
const int& y = x;
++lval;
std::cout << x << y;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <type_traits>
int main() {
using namespace std;
cout << is_same_v<void(int), void(const int)>;
cout << is_same_v<void(int *), void(const int*)>;
cout << is_same_v<void(int *), void(int* const)>;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int y;
int main() {
auto x{y++}, *p{&y}, &y{x};
++x;
++y;
++*p;
std::cout << x << y << ::y;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
template <typename T>
auto f1(T &x) {return (x);}
template <typename T>
decltype(auto) f2(T &x) {return (x);}
void foo(const int &) {
std::cout << "1";
}
void foo(int &&) {
std::cout << "2";
}
int main() {
int x{};
foo(f1(x));
foo(f2(x));
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <memory>
#include <type_traits>
int main() {
using namespace std;
cout << is_pointer_v<nullptr_t> << is_pointer_v<unique_ptr<int>>;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
int x{};
++++++x;
std::cout << x;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
std::cout << ((int*){int()} == nullptr);
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
namespace Nec {
struct A {
operator int() const { return 1; }
};
void foo(A) { std::cout << "1"; }
}
void foo(int) { std::cout << "2"; }
int main() {
Nec::A x;
foo(x);
(foo)(x);
}
- C++17 standartlarına göre aşağıdaki kodda f fonksiyonuna yapılan çağrılardan hangileri geçerlidir?
#include <utility>
template <typename T>
void f(T, T&&);
int main() {
int x{}, y{};
f(x, y); // 1
f(x, y++); // 2
f(x, ++y); // 3
f(&x, &y); // 4
f("ali", "can"); // 5
f(std::move(x), std::move(y)); // 6
}
- C++17 standartlarına göre aşağıdaki kodda f fonksiyonuna yapılan çağrılardan hangileri geçerlidir?
#include <utility>
template <typename T>
void f(std::pair<T, T>, T&&);
int main() {
int x{}, y{};
std::pair<int&, int&> p{x, y};
f(p, x); // 1
f(std::make_pair(x, y), x); // 2
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
int main() {
int a[]{1, 2, 3, 4};
std::cout << a[a[0 [a]][a]];
}
- Aşağıdaki kod derlenip çalıştırıldığında standart çıkış akımına 1111111111 yazıyor.
a) Hangi değerin yazdırılacağı derleyiciden derleyiciye değişir.
b) Hangi derleyicide derlenirse derlensin çıktısı aynı olur:
#include <iostream>
#include <random>
int main() {
std::mt19937 eng;
eng.discard(3093278472);
std::cout << eng();
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <string>
struct Nec {
Nec(const std::string&) {
std::cout << '1';
}
template <typename T>
Nec(T&&) {
std::cout << '2';
}
};
int main() {
std::string name{"a"};
const Nec n1{"a"};
Nec n2{name};
Nec n3{std::move(name)};
Nec n4{n1};
Nec n5{n2};
}
- Aşağıdaki kodda
a) Tanımsız davranış var.
b) Tanımsız davranış yok.\
#include <iostream>
#include <string>
#include <vector>
using svec = std::vector<std::string>;
svec foo() {
svec vec{"timendi", "causa", "est", "nescire"};
return vec;
}
int main() {
for (auto s : foo().front())
std::cout << s;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <iostream>
#include <type_traits>
int* p;
int main() {
if constexpr (std::is_lvalue_reference_v<decltype(p)>)
std::cout << 1;
if constexpr (std::is_lvalue_reference_v<decltype(*p)>)
std::cout << 2;
if constexpr (std::is_lvalue_reference_v<decltype((p))>)
std::cout << 3;
}
- C++17 standartlarına göre aşağıdaki kodda
a) Sentaks hatası var.
b) Tanımsız davranış (undefined behavior) var.
c) Belirlenmemiş davranış (unspecified behavior) var.
d) Derlenip çalıştırıldığında ekran çıktısı şu olur:
#include <initializer_list>
#include <iostream>
struct Nec {
Nec() = default;
Nec(const Nec&) { std::cout << 1; }
Nec(Nec&&) { std::cout << 2; }
};
void f(std::initializer_list<Nec> x) {}
int main() {
Nec n;
std::initializer_list<Nec> i{n, Nec{}};
f(i);
f(move(i));
}
- main fonksiyonu içindeki tanımlamalardan hangileri geçerlidir?
int main() {
const int x = 10;
auto f = [x]() mutable { ++x; };
auto g = [x = x]() { ++x; };
auto h = [x = x]() mutable { ++x; };
}