вторник, 28 июля 2015 г.

Задачка на знание C++

Что выводит следующая программа?

#include <iostream>

struct A {
  template <typename T>
  A(T t) {
    std::cout << t << std::endl;
  }
};

enum { N = 53 };

int main(int argc, char **argv) {
  A a(char(N));
  return 0;
}

Правильно: совершенно ни-че-го. Потому что A a(char(N)) - это объявление функции.  С тем же успехом можно написать

struct A {
};

int main(int argc, char **argv) {
  A a(char(ANYTHING));
  return 0;
}