std :: normal_distribution的类型取决于模板

时间:2016-12-03 20:07:08

标签: c++ c++11 templates stl ternary-operator

很少T可以是int,它会挂起:

std::normal_distribution<T> distribution(0.0, 0.1);

这将在我的函数的下一行中使用,我不希望if / else包含依赖于它的所有代码行。结果我试图这样做:

#include <random>

#define T int

int main ()
{
  std::normal_distribution<((std::is_same<T, int>::value) ? (float) : (T))> distribution (0.0, 1$

  return 0;
}

我收到了这些错误:

Georgioss-MacBook-Pro:Code gsamaras$ g++ -std=c++0x main.cpp 
main.cpp:7:69: error: expected expression
  std::normal_distribution<((std::is_same<T, int>::value) ? (float) : (T))> distribution ...
                                                                    ^
main.cpp:7:74: error: expected expression
  std::normal_distribution<((std::is_same<T, int>::value) ? (float) : (T))> distribution ...
                                                                         ^
main.cpp:7:77: error: C++ requires a type specifier for all declarations
  std::normal_distribution<((std::is_same<T, int>::value) ? (float) : (T))> distribution ...
                                                                            ^
3 errors generated.

关于如何解决这个或替代方案的想法?

0 个答案:

没有答案