Информация об изменениях

Сообщение Re: Лямбда как goto от 22.04.2016 2:30

Изменено 22.04.2016 2:51 antropolog

Здравствуйте, B0FEE664, Вы писали:

меня бесит неконстантность n и str в этом примере. Ну и потом, маттерн-матчить так паттерн-матчить.


#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
    const std::string str = "fdsa";

    const int n = 
            str == "asdf" ? 
        [](){
            std::cout << 1 << std::endl;
            return 1;
        }()
            : str == "fdsa" ?
        [](){
            std::cout << 2 << std::endl;
            return 2;
        }()
            :
        [](){
            std::cout << "unknown" << std::endl;
            return 0;
        }()
    ;

    std::cout << "n=" << n << std::endl;

    return 0;
}


  утренняя наркомания
#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
    const std::string str = "fdsa";

    const int n = 
      str == "asdf" ? 
        (( std::cout << 1 << std::endl), 1)
      : str == "fdsa" ?
        (( std::cout << 2 << std::endl), 2)
      :
        ((std::cout << "unknown" << std::endl), 0)
    ;

    std::cout << "n=" << n << std::endl;

    return 0;
Re: Лямбда как goto
Здравствуйте, B0FEE664, Вы писали:

меня бесит неконстантность n и str в этом примере. Ну и потом, маттерн-матчить так паттерн-матчить.


#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
    const std::string str = "fdsa";

    const int n = 
            str == "asdf" ? 
        [](){
            std::cout << 1 << std::endl;
            return 1;
        }()
            : str == "fdsa" ?
        [](){
            std::cout << 2 << std::endl;
            return 2;
        }()
            :
        [](){
            std::cout << "unknown" << std::endl;
            return 0;
        }()
    ;

    std::cout << "n=" << n << std::endl;

    return 0;
}


  утренняя наркомания
#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
  const std::string str = "fdsa";

  const int n = 
    str == "asdf" ? 
      (( std::cout << 1 << std::endl), 1)
    : str == "fdsa" ?
      (( std::cout << 2 << std::endl), 2)
    :
      ((std::cout << "unknown" << std::endl), 0)
  ;

  std::cout << "n=" << n << std::endl;

  return 0;
}