【发布时间】:2017-04-18 12:45:21
【问题描述】:
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.
关于如何解决此问题或替代方法的任何想法?
【问题讨论】:
-
std::conditional. -
啊,这应该可以解决问题@T.C.,谢谢!我应该删除我的问题吗?
标签: c++ c++11 templates stl ternary-operator